diff options
429 files changed, 20136 insertions, 10361 deletions
diff --git a/Android.mk b/Android.mk index 7ebf4b55f5f4..678ae558d0a1 100644 --- a/Android.mk +++ b/Android.mk @@ -198,6 +198,7 @@ LOCAL_SRC_FILES += \ media/java/android/media/IMediaScannerService.aidl \ media/java/android/media/IRemoteControlClient.aidl \ media/java/android/media/IRemoteControlDisplay.aidl \ + media/java/android/media/IRingtonePlayer.aidl \ telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl \ telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \ telephony/java/com/android/internal/telephony/ITelephony.aidl \ diff --git a/api/16.txt b/api/16.txt index a04faf05324c..62654ae60971 100644 --- a/api/16.txt +++ b/api/16.txt @@ -21779,7 +21779,6 @@ package android.view { method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect); method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect); method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect); - method public static int getAbsoluteGravity(int, int); method public static boolean isHorizontal(int); method public static boolean isVertical(int); field public static final int AXIS_CLIP = 8; // 0x8 @@ -23502,8 +23501,6 @@ package android.view { method public void requestDisallowInterceptTouchEvent(boolean); method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent); method public void requestTransparentRegion(android.view.View); - method protected void resetResolvedLayoutDirection(); - method protected void resetResolvedTextDirection(); method public void scheduleLayoutAnimation(); method public void setAddStatesFromChildren(boolean); method public void setAlwaysDrawnWithCacheEnabled(boolean); @@ -24979,7 +24976,7 @@ package android.webkit { method public void setMimeType(java.lang.String); } - public class WebSettings { + public abstract class WebSettings { method public boolean enableSmoothTransition(); method public boolean getAllowContentAccess(); method public boolean getAllowFileAccess(); @@ -27296,7 +27293,6 @@ package android.widget { method public void removeTextChangedListener(android.text.TextWatcher); method protected void resetResolvedDrawables(); method protected void resolveDrawables(); - method protected void resolveTextDirection(); method public void setAllCaps(boolean); method public final void setAutoLinkMask(int); method public void setCompoundDrawablePadding(int); diff --git a/api/current.txt b/api/current.txt index d04025c2653e..bf79d81fd3eb 100644 --- a/api/current.txt +++ b/api/current.txt @@ -88,6 +88,7 @@ package android { field public static final java.lang.String READ_SOCIAL_STREAM = "android.permission.READ_SOCIAL_STREAM"; field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; field public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS"; + field public static final java.lang.String READ_USER_DICTIONARY = "android.permission.READ_USER_DICTIONARY"; field public static final java.lang.String REBOOT = "android.permission.REBOOT"; field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED"; field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS"; @@ -134,21 +135,40 @@ package android { field public static final java.lang.String WRITE_SMS = "android.permission.WRITE_SMS"; field public static final java.lang.String WRITE_SOCIAL_STREAM = "android.permission.WRITE_SOCIAL_STREAM"; field public static final java.lang.String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS"; + field public static final java.lang.String WRITE_USER_DICTIONARY = "android.permission.WRITE_USER_DICTIONARY"; } public static final class Manifest.permission_group { ctor public Manifest.permission_group(); field public static final java.lang.String ACCOUNTS = "android.permission-group.ACCOUNTS"; + field public static final java.lang.String AFFECTS_BATTERY = "android.permission-group.AFFECTS_BATTERY"; + field public static final java.lang.String APP_INFO = "android.permission-group.APP_INFO"; + field public static final java.lang.String AUDIO_SETTINGS = "android.permission-group.AUDIO_SETTINGS"; + field public static final java.lang.String BOOKMARKS = "android.permission-group.BOOKMARKS"; + field public static final java.lang.String CALENDAR = "android.permission-group.CALENDAR"; + field public static final java.lang.String CAMERA = "android.permission-group.CAMERA"; field public static final java.lang.String COST_MONEY = "android.permission-group.COST_MONEY"; field public static final java.lang.String DEVELOPMENT_TOOLS = "android.permission-group.DEVELOPMENT_TOOLS"; + field public static final java.lang.String DEVICE_ALARMS = "android.permission-group.DEVICE_ALARMS"; + field public static final java.lang.String DISPLAY = "android.permission-group.DISPLAY"; field public static final java.lang.String HARDWARE_CONTROLS = "android.permission-group.HARDWARE_CONTROLS"; field public static final java.lang.String LOCATION = "android.permission-group.LOCATION"; field public static final java.lang.String MESSAGES = "android.permission-group.MESSAGES"; + field public static final java.lang.String MICROPHONE = "android.permission-group.MICROPHONE"; field public static final java.lang.String NETWORK = "android.permission-group.NETWORK"; field public static final java.lang.String PERSONAL_INFO = "android.permission-group.PERSONAL_INFO"; field public static final java.lang.String PHONE_CALLS = "android.permission-group.PHONE_CALLS"; + field public static final java.lang.String SCREENLOCK = "android.permission-group.SCREENLOCK"; + field public static final java.lang.String SHORTRANGE_NETWORK = "android.permission-group.SHORTRANGE_NETWORK"; + field public static final java.lang.String SOCIAL_INFO = "android.permission-group.SOCIAL_INFO"; + field public static final java.lang.String STATUS_BAR = "android.permission-group.STATUS_BAR"; field public static final java.lang.String STORAGE = "android.permission-group.STORAGE"; + field public static final java.lang.String SYNC_SETTINGS = "android.permission-group.SYNC_SETTINGS"; + field public static final java.lang.String SYSTEM_CLOCK = "android.permission-group.SYSTEM_CLOCK"; field public static final java.lang.String SYSTEM_TOOLS = "android.permission-group.SYSTEM_TOOLS"; + field public static final java.lang.String USER_DICTIONARY = "android.permission-group.USER_DICTIONARY"; + field public static final java.lang.String VOICEMAIL = "android.permission-group.VOICEMAIL"; + field public static final java.lang.String WALLPAPER = "android.permission-group.WALLPAPER"; } public final class R { @@ -294,7 +314,7 @@ package android { field public static final int cacheColorHint = 16843009; // 0x1010101 field public static final int calendarViewShown = 16843596; // 0x101034c field public static final int calendarViewStyle = 16843613; // 0x101035d - field public static final int canHandleGestures = 16843699; // 0x10103b3 + field public static final int canHandleGestures = 16843691; // 0x10103ab field public static final int canRetrieveWindowContent = 16843653; // 0x1010385 field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230 field public static final deprecated int capitalize = 16843113; // 0x1010169 @@ -535,7 +555,7 @@ package android { field public static final int imeSubtypeLocale = 16843500; // 0x10102ec field public static final int imeSubtypeMode = 16843501; // 0x10102ed field public static final int immersive = 16843456; // 0x10102c0 - field public static final int importantForAccessibility = 16843698; // 0x10103b2 + field public static final int importantForAccessibility = 16843690; // 0x10103aa field public static final int inAnimation = 16843127; // 0x1010177 field public static final int includeFontPadding = 16843103; // 0x101015f field public static final int includeInGlobalSearch = 16843374; // 0x101026e @@ -573,7 +593,7 @@ package android { field public static final int itemIconDisabledAlpha = 16843057; // 0x1010131 field public static final int itemPadding = 16843565; // 0x101032d field public static final int itemTextAppearance = 16843052; // 0x101012c - field public static final int kcm = 16843696; // 0x10103b0 + field public static final int kcm = 16843688; // 0x10103a8 field public static final int keepScreenOn = 16843286; // 0x1010216 field public static final int key = 16843240; // 0x10101e8 field public static final int keyBackground = 16843315; // 0x1010233 @@ -600,7 +620,6 @@ package android { field public static final int layerType = 16843604; // 0x1010354 field public static final int layout = 16842994; // 0x10100f2 field public static final int layoutAnimation = 16842988; // 0x10100ec - field public static final int layoutDirection = 16843691; // 0x10103ab field public static final int layout_above = 16843140; // 0x1010184 field public static final int layout_alignBaseline = 16843142; // 0x1010186 field public static final int layout_alignBottom = 16843146; // 0x101018a @@ -622,10 +641,8 @@ package android { field public static final int layout_height = 16842997; // 0x10100f5 field public static final int layout_margin = 16842998; // 0x10100f6 field public static final int layout_marginBottom = 16843002; // 0x10100fa - field public static final int layout_marginEnd = 16843695; // 0x10103af field public static final int layout_marginLeft = 16842999; // 0x10100f7 field public static final int layout_marginRight = 16843001; // 0x10100f9 - field public static final int layout_marginStart = 16843694; // 0x10103ae field public static final int layout_marginTop = 16843000; // 0x10100f8 field public static final int layout_row = 16843643; // 0x101037b field public static final int layout_rowSpan = 16843644; // 0x101037c @@ -721,23 +738,22 @@ package android { field public static final int packageNames = 16843649; // 0x1010381 field public static final int padding = 16842965; // 0x10100d5 field public static final int paddingBottom = 16842969; // 0x10100d9 - field public static final int paddingEnd = 16843693; // 0x10103ad field public static final int paddingLeft = 16842966; // 0x10100d6 field public static final int paddingRight = 16842968; // 0x10100d8 - field public static final int paddingStart = 16843692; // 0x10103ac field public static final int paddingTop = 16842967; // 0x10100d7 field public static final int panelBackground = 16842846; // 0x101005e field public static final int panelColorBackground = 16842849; // 0x1010061 field public static final int panelColorForeground = 16842848; // 0x1010060 field public static final int panelFullBackground = 16842847; // 0x101005f field public static final int panelTextAppearance = 16842850; // 0x1010062 - field public static final int parentActivityName = 16843697; // 0x10103b1 + field public static final int parentActivityName = 16843689; // 0x10103a9 field public static final deprecated int password = 16843100; // 0x101015c field public static final int path = 16842794; // 0x101002a field public static final int pathPattern = 16842796; // 0x101002c field public static final int pathPrefix = 16842795; // 0x101002b field public static final int permission = 16842758; // 0x1010006 field public static final int permissionGroup = 16842762; // 0x101000a + field public static final int permissionGroupFlags = 16843692; // 0x10103ac field public static final int persistent = 16842765; // 0x101000d field public static final int persistentDrawingCache = 16842990; // 0x10100ee field public static final deprecated int phoneNumber = 16843111; // 0x1010167 @@ -936,7 +952,6 @@ package android { field public static final int summaryColumn = 16843426; // 0x10102a2 field public static final int summaryOff = 16843248; // 0x10101f0 field public static final int summaryOn = 16843247; // 0x10101ef - field public static final int supportsRtl = 16843688; // 0x10103a8 field public static final int supportsUploading = 16843419; // 0x101029b field public static final int switchMinWidth = 16843632; // 0x1010370 field public static final int switchPadding = 16843633; // 0x1010371 @@ -967,7 +982,6 @@ package android { field public static final int tension = 16843370; // 0x101026a field public static final int testOnly = 16843378; // 0x1010272 field public static final int text = 16843087; // 0x101014f - field public static final int textAlignment = 16843690; // 0x10103aa field public static final int textAllCaps = 16843660; // 0x101038c field public static final int textAppearance = 16842804; // 0x1010034 field public static final int textAppearanceButton = 16843271; // 0x1010207 @@ -1007,7 +1021,6 @@ package android { field public static final int textColorTertiary = 16843282; // 0x1010212 field public static final int textColorTertiaryInverse = 16843283; // 0x1010213 field public static final int textCursorDrawable = 16843618; // 0x1010362 - field public static final int textDirection = 16843689; // 0x10103a9 field public static final int textEditNoPasteWindowLayout = 16843541; // 0x1010315 field public static final int textEditPasteWindowLayout = 16843540; // 0x1010314 field public static final int textEditSideNoPasteWindowLayout = 16843615; // 0x101035f @@ -2003,26 +2016,24 @@ package android.accessibilityservice { method protected void onServiceConnected(); method public final boolean performGlobalAction(int); method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo); - field public static final int GESTURE_CLOCKWISE_CIRCLE = 9; // 0x9 - field public static final int GESTURE_COUNTER_CLOCKWISE_CIRCLE = 10; // 0xa field public static final int GESTURE_SWIPE_DOWN = 2; // 0x2 - field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 17; // 0x11 - field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 18; // 0x12 + field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15; // 0xf + field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16; // 0x10 field public static final int GESTURE_SWIPE_DOWN_AND_UP = 8; // 0x8 field public static final int GESTURE_SWIPE_LEFT = 3; // 0x3 - field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 12; // 0xc + field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10; // 0xa field public static final int GESTURE_SWIPE_LEFT_AND_RIGHT = 5; // 0x5 - field public static final int GESTURE_SWIPE_LEFT_AND_UP = 11; // 0xb + field public static final int GESTURE_SWIPE_LEFT_AND_UP = 9; // 0x9 field public static final int GESTURE_SWIPE_RIGHT = 4; // 0x4 - field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 14; // 0xe + field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12; // 0xc field public static final int GESTURE_SWIPE_RIGHT_AND_LEFT = 6; // 0x6 - field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 13; // 0xd + field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11; // 0xb field public static final int GESTURE_SWIPE_UP = 1; // 0x1 field public static final int GESTURE_SWIPE_UP_AND_DOWN = 7; // 0x7 - field public static final int GESTURE_SWIPE_UP_AND_LEFT = 15; // 0xf - field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 16; // 0x10 - field public static final int GESTURE_TWO_FINGER_LONG_PRESS = 20; // 0x14 - field public static final int GESTURE_TWO_FINGER_TAP = 19; // 0x13 + field public static final int GESTURE_SWIPE_UP_AND_LEFT = 13; // 0xd + field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14; // 0xe + field public static final int GESTURE_TWO_FINGER_LONG_PRESS = 18; // 0x12 + field public static final int GESTURE_TWO_FINGER_TAP = 17; // 0x11 field public static final int GLOBAL_ACTION_BACK = 1; // 0x1 field public static final int GLOBAL_ACTION_HOME = 2; // 0x2 field public static final int GLOBAL_ACTION_NOTIFICATIONS = 4; // 0x4 @@ -2601,6 +2612,7 @@ package android.app { method public void finish(); method public void finishActivity(int); method public void finishActivityFromChild(android.app.Activity, int); + method public void finishAffinity(); method public void finishFromChild(android.app.Activity); method public android.app.ActionBar getActionBar(); method public final android.app.Application getApplication(); @@ -2915,11 +2927,11 @@ package android.app { } public class ActivityOptions { - method public void join(android.app.ActivityOptions); method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int); method public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int); method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int); method public android.os.Bundle toBundle(); + method public void update(android.app.ActivityOptions); } public class AlarmManager { @@ -3746,23 +3758,30 @@ package android.app { field public long when; } - public static class Notification.BigPictureStyle { + public static class Notification.BigPictureStyle extends android.app.Notification.Style { + ctor public Notification.BigPictureStyle(); ctor public Notification.BigPictureStyle(android.app.Notification.Builder); method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap); method public android.app.Notification build(); + method public android.app.Notification.BigPictureStyle setBigContentTitle(java.lang.CharSequence); + method public android.app.Notification.BigPictureStyle setSummaryText(java.lang.CharSequence); } - public static class Notification.BigTextStyle { + public static class Notification.BigTextStyle extends android.app.Notification.Style { + ctor public Notification.BigTextStyle(); ctor public Notification.BigTextStyle(android.app.Notification.Builder); method public android.app.Notification.BigTextStyle bigText(java.lang.CharSequence); method public android.app.Notification build(); + method public android.app.Notification.BigTextStyle setBigContentTitle(java.lang.CharSequence); + method public android.app.Notification.BigTextStyle setSummaryText(java.lang.CharSequence); } public static class Notification.Builder { ctor public Notification.Builder(android.content.Context); method public android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent); method public android.app.Notification.Builder addKind(java.lang.String); - method public android.app.Notification getNotification(); + method public android.app.Notification build(); + method public deprecated android.app.Notification getNotification(); method public android.app.Notification.Builder setAutoCancel(boolean); method public android.app.Notification.Builder setContent(android.widget.RemoteViews); method public android.app.Notification.Builder setContentInfo(java.lang.CharSequence); @@ -3783,6 +3802,7 @@ package android.app { method public android.app.Notification.Builder setSmallIcon(int, int); method public android.app.Notification.Builder setSound(android.net.Uri); method public android.app.Notification.Builder setSound(android.net.Uri, int); + method public android.app.Notification.Builder setStyle(android.app.Notification.Style); method public android.app.Notification.Builder setSubText(java.lang.CharSequence); method public android.app.Notification.Builder setTicker(java.lang.CharSequence); method public android.app.Notification.Builder setTicker(java.lang.CharSequence, android.widget.RemoteViews); @@ -3791,10 +3811,24 @@ package android.app { method public android.app.Notification.Builder setWhen(long); } - public static class Notification.InboxStyle { + public static class Notification.InboxStyle extends android.app.Notification.Style { + ctor public Notification.InboxStyle(); ctor public Notification.InboxStyle(android.app.Notification.Builder); method public android.app.Notification.InboxStyle addLine(java.lang.CharSequence); method public android.app.Notification build(); + method public android.app.Notification.InboxStyle setBigContentTitle(java.lang.CharSequence); + method public android.app.Notification.InboxStyle setSummaryText(java.lang.CharSequence); + } + + public static abstract class Notification.Style { + ctor public Notification.Style(); + method public abstract android.app.Notification build(); + method protected void checkBuilder(); + method protected android.widget.RemoteViews getStandardView(int); + method protected void internalSetBigContentTitle(java.lang.CharSequence); + method protected void internalSetSummaryText(java.lang.CharSequence); + method public void setBuilder(android.app.Notification.Builder); + field protected android.app.Notification.Builder mBuilder; } public class NotificationManager { @@ -3870,6 +3904,7 @@ package android.app { } public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener { + method public android.content.ComponentName getGlobalSearchActivity(); method public android.app.SearchableInfo getSearchableInfo(android.content.ComponentName); method public java.util.List<android.app.SearchableInfo> getSearchablesInGlobalSearch(); method public deprecated void onCancel(android.content.DialogInterface); @@ -3893,6 +3928,7 @@ package android.app { field public static final java.lang.String INTENT_ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS"; field public static final java.lang.String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED"; field public static final java.lang.String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS"; + field public static final java.lang.String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED"; field public static final char MENU_KEY = 115; // 0x0073 's' field public static final int MENU_KEYCODE = 47; // 0x2f field public static final java.lang.String QUERY = "query"; @@ -3995,17 +4031,20 @@ package android.app { method public void setDefaultTab(int); } - public class TaskStackBuilder implements java.lang.Iterable { + public class TaskStackBuilder { method public android.app.TaskStackBuilder addNextIntent(android.content.Intent); + method public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent); method public android.app.TaskStackBuilder addParentStack(android.app.Activity); method public android.app.TaskStackBuilder addParentStack(java.lang.Class<?>); method public android.app.TaskStackBuilder addParentStack(android.content.ComponentName); - method public static android.app.TaskStackBuilder from(android.content.Context); - method public android.content.Intent getIntent(int); + method public static android.app.TaskStackBuilder create(android.content.Context); + method public android.content.Intent editIntentAt(int); method public int getIntentCount(); + method public android.content.Intent[] getIntents(); method public android.app.PendingIntent getPendingIntent(int, int); - method public java.util.Iterator<android.content.Intent> iterator(); + method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle); method public void startActivities(); + method public void startActivities(android.os.Bundle); } public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener { @@ -4308,15 +4347,15 @@ package android.appwidget { method protected void prepareView(android.view.View); method public void setAppWidget(int, android.appwidget.AppWidgetProviderInfo); method public void updateAppWidget(android.widget.RemoteViews); - method public void updateAppWidgetExtras(android.os.Bundle); + method public void updateAppWidgetOptions(android.os.Bundle); method public void updateAppWidgetSize(android.os.Bundle, int, int, int, int); } public class AppWidgetManager { method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName); - method public android.os.Bundle getAppWidgetExtras(int); method public int[] getAppWidgetIds(android.content.ComponentName); method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo(int); + method public android.os.Bundle getAppWidgetOptions(int); method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProviders(); method public static android.appwidget.AppWidgetManager getInstance(android.content.Context); method public void notifyAppWidgetViewDataChanged(int[], int); @@ -4326,32 +4365,32 @@ package android.appwidget { method public void updateAppWidget(int[], android.widget.RemoteViews); method public void updateAppWidget(int, android.widget.RemoteViews); method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews); - method public void updateAppWidgetExtras(int, android.os.Bundle); + method public void updateAppWidgetOptions(int, android.os.Bundle); field public static final java.lang.String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND"; field public static final java.lang.String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE"; field public static final java.lang.String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED"; field public static final java.lang.String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED"; field public static final java.lang.String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED"; - field public static final java.lang.String ACTION_APPWIDGET_EXTRAS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_EXTRAS"; + field public static final java.lang.String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS"; field public static final java.lang.String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK"; field public static final java.lang.String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE"; - field public static final java.lang.String EXTRA_APPWIDGET_EXTRAS = "appWidgetExtras"; field public static final java.lang.String EXTRA_APPWIDGET_ID = "appWidgetId"; field public static final java.lang.String EXTRA_APPWIDGET_IDS = "appWidgetIds"; - field public static final java.lang.String EXTRA_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight"; - field public static final java.lang.String EXTRA_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth"; - field public static final java.lang.String EXTRA_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight"; - field public static final java.lang.String EXTRA_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth"; + field public static final java.lang.String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions"; field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider"; field public static final java.lang.String EXTRA_CUSTOM_EXTRAS = "customExtras"; field public static final java.lang.String EXTRA_CUSTOM_INFO = "customInfo"; field public static final int INVALID_APPWIDGET_ID = 0; // 0x0 field public static final java.lang.String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider"; + field public static final java.lang.String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight"; + field public static final java.lang.String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth"; + field public static final java.lang.String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight"; + field public static final java.lang.String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth"; } public class AppWidgetProvider extends android.content.BroadcastReceiver { ctor public AppWidgetProvider(); - method public void onAppWidgetExtrasChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle); + method public void onAppWidgetOptionsChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle); method public void onDeleted(android.content.Context, int[]); method public void onDisabled(android.content.Context); method public void onEnabled(android.content.Context); @@ -5622,6 +5661,7 @@ package android.content { field public static final java.lang.String ACTION_ALL_APPS = "android.intent.action.ALL_APPS"; field public static final java.lang.String ACTION_ANSWER = "android.intent.action.ANSWER"; field public static final java.lang.String ACTION_APP_ERROR = "android.intent.action.APP_ERROR"; + field public static final java.lang.String ACTION_ASSIST = "android.intent.action.ASSIST"; field public static final java.lang.String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA"; field public static final java.lang.String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED"; field public static final java.lang.String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW"; @@ -5713,7 +5753,7 @@ package android.content { field public static final java.lang.String ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT"; field public static final java.lang.String ACTION_VIEW = "android.intent.action.VIEW"; field public static final java.lang.String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND"; - field public static final java.lang.String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED"; + field public static final deprecated java.lang.String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED"; field public static final java.lang.String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH"; field public static final java.lang.String CATEGORY_ALTERNATIVE = "android.intent.category.ALTERNATIVE"; field public static final java.lang.String CATEGORY_APP_BROWSER = "android.intent.category.APP_BROWSER"; @@ -5749,7 +5789,7 @@ package android.content { field public static final java.lang.String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST"; field public static final android.os.Parcelable.Creator CREATOR; field public static final java.lang.String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT"; - field public static final java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE"; + field public static final deprecated java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE"; field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC"; field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT"; field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC"; @@ -6235,7 +6275,6 @@ package android.content.pm { field public static final int FLAG_STOPPED = 2097152; // 0x200000 field public static final int FLAG_SUPPORTS_LARGE_SCREENS = 2048; // 0x800 field public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1024; // 0x400 - field public static final int FLAG_SUPPORTS_RTL = 4194304; // 0x400000 field public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 8192; // 0x2000 field public static final int FLAG_SUPPORTS_SMALL_SCREENS = 512; // 0x200 field public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 524288; // 0x80000 @@ -6574,8 +6613,11 @@ package android.content.pm { method public int describeContents(); method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager); field public static final android.os.Parcelable.Creator CREATOR; + field public static final int FLAG_PERSONAL_INFO = 1; // 0x1 field public int descriptionRes; + field public int flags; field public java.lang.CharSequence nonLocalizedDescription; + field public int priority; } public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { @@ -8572,7 +8614,6 @@ package android.graphics { method public android.graphics.Paint.Align getTextAlign(); method public void getTextBounds(java.lang.String, int, int, android.graphics.Rect); method public void getTextBounds(char[], int, int, android.graphics.Rect); - method public java.util.Locale getTextLocale(); method public void getTextPath(char[], int, int, float, float, android.graphics.Path); method public void getTextPath(java.lang.String, int, int, float, float, android.graphics.Path); method public float getTextScaleX(); @@ -8622,7 +8663,6 @@ package android.graphics { method public void setStyle(android.graphics.Paint.Style); method public void setSubpixelText(boolean); method public void setTextAlign(android.graphics.Paint.Align); - method public void setTextLocale(java.util.Locale); method public void setTextScaleX(float); method public void setTextSize(float); method public void setTextSkewX(float); @@ -9257,10 +9297,6 @@ package android.graphics.drawable { method public abstract void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); } - public static abstract interface Drawable.Callback2 implements android.graphics.drawable.Drawable.Callback { - method public abstract int getResolvedLayoutDirection(android.graphics.drawable.Drawable); - } - public static abstract class Drawable.ConstantState { ctor public Drawable.ConstantState(); method public abstract int getChangingConfigurations(); @@ -10634,7 +10670,7 @@ package android.media { method public deprecated int getRouting(int); method public int getStreamMaxVolume(int); method public int getStreamVolume(int); - method public int getVibrateSetting(int); + method public deprecated int getVibrateSetting(int); method public boolean isBluetoothA2dpOn(); method public boolean isBluetoothScoAvailableOffCall(); method public boolean isBluetoothScoOn(); @@ -10659,9 +10695,9 @@ package android.media { method public void setStreamMute(int, boolean); method public void setStreamSolo(int, boolean); method public void setStreamVolume(int, int, int); - method public void setVibrateSetting(int, int); + method public deprecated void setVibrateSetting(int, int); method public deprecated void setWiredHeadsetOn(boolean); - method public boolean shouldVibrate(int); + method public deprecated boolean shouldVibrate(int); method public void startBluetoothSco(); method public void stopBluetoothSco(); method public void unloadSoundEffects(); @@ -10684,8 +10720,8 @@ package android.media { field public static final java.lang.String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE"; field public static final java.lang.String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE"; field public static final java.lang.String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE"; - field public static final java.lang.String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING"; - field public static final java.lang.String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE"; + field public static final deprecated java.lang.String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING"; + field public static final deprecated java.lang.String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE"; field public static final int FLAG_ALLOW_RINGER_MODES = 2; // 0x2 field public static final int FLAG_PLAY_SOUND = 4; // 0x4 field public static final int FLAG_REMOVE_SOUND_AND_VIBRATE = 8; // 0x8 @@ -10730,12 +10766,12 @@ package android.media { field public static final int STREAM_SYSTEM = 1; // 0x1 field public static final int STREAM_VOICE_CALL = 0; // 0x0 field public static final int USE_DEFAULT_STREAM_TYPE = -2147483648; // 0x80000000 - field public static final java.lang.String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED"; - field public static final int VIBRATE_SETTING_OFF = 0; // 0x0 - field public static final int VIBRATE_SETTING_ON = 1; // 0x1 - field public static final int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2 - field public static final int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1 - field public static final int VIBRATE_TYPE_RINGER = 0; // 0x0 + field public static final deprecated java.lang.String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED"; + field public static final deprecated int VIBRATE_SETTING_OFF = 0; // 0x0 + field public static final deprecated int VIBRATE_SETTING_ON = 1; // 0x1 + field public static final deprecated int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2 + field public static final deprecated int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1 + field public static final deprecated int VIBRATE_TYPE_RINGER = 0; // 0x0 } public static abstract interface AudioManager.OnAudioFocusChangeListener { @@ -10984,7 +11020,7 @@ package android.media { } public final class MediaCodec { - method public void configure(java.util.Map<java.lang.String, java.lang.Object>, android.view.Surface, android.media.MediaCrypto, int); + method public void configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, int); method public static android.media.MediaCodec createByCodecName(java.lang.String); method public static android.media.MediaCodec createDecoderByType(java.lang.String); method public static android.media.MediaCodec createEncoderByType(java.lang.String); @@ -10993,22 +11029,25 @@ package android.media { method public final void flush(); method public java.nio.ByteBuffer[] getInputBuffers(); method public java.nio.ByteBuffer[] getOutputBuffers(); - method public final java.util.Map<java.lang.String, java.lang.Object> getOutputFormat(); + method public final android.media.MediaFormat getOutputFormat(); method public final void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException; method public final void queueSecureInputBuffer(int, int, android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException; method public final void release(); method public final void releaseOutputBuffer(int, boolean); + method public final void setVideoScalingMode(int); method public final void start(); method public final void stop(); - field public static int CONFIGURE_FLAG_ENCODE; - field public static final int FLAG_CODECCONFIG = 2; // 0x2 - field public static final int FLAG_EOS = 4; // 0x4 - field public static final int FLAG_SYNCFRAME = 1; // 0x1 + field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2 + field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4 + field public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1 + field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1 + field public static final int CRYPTO_MODE_AES_CTR = 1; // 0x1 + field public static final int CRYPTO_MODE_UNENCRYPTED = 0; // 0x0 field public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd field public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; // 0xfffffffe field public static final int INFO_TRY_AGAIN_LATER = -1; // 0xffffffff - field public static final int MODE_AES_CTR = 1; // 0x1 - field public static final int MODE_UNENCRYPTED = 0; // 0x0 + field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1 + field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2 } public static final class MediaCodec.BufferInfo { @@ -11036,55 +11075,218 @@ package android.media { field public int numSubSamples; } - public final class MediaCodecList { - method public static final int countCodecs(); - method public static final android.media.MediaCodecList.CodecCapabilities getCodecCapabilities(int, java.lang.String); - method public static final java.lang.String getCodecName(int); - method public static final java.lang.String[] getSupportedTypes(int); - method public static final boolean isEncoder(int); - } - - public static final class MediaCodecList.CodecCapabilities { - ctor public MediaCodecList.CodecCapabilities(); + public final class MediaCodecInfo { + method public final android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String); + method public final java.lang.String getName(); + method public final java.lang.String[] getSupportedTypes(); + method public final boolean isEncoder(); + } + + public static final class MediaCodecInfo.CodecCapabilities { + ctor public MediaCodecInfo.CodecCapabilities(); + field public static final int COLOR_Format12bitRGB444 = 3; // 0x3 + field public static final int COLOR_Format16bitARGB1555 = 5; // 0x5 + field public static final int COLOR_Format16bitARGB4444 = 4; // 0x4 + field public static final int COLOR_Format16bitBGR565 = 7; // 0x7 + field public static final int COLOR_Format16bitRGB565 = 6; // 0x6 + field public static final int COLOR_Format18BitBGR666 = 41; // 0x29 + field public static final int COLOR_Format18bitARGB1665 = 9; // 0x9 + field public static final int COLOR_Format18bitRGB666 = 8; // 0x8 + field public static final int COLOR_Format19bitARGB1666 = 10; // 0xa + field public static final int COLOR_Format24BitABGR6666 = 43; // 0x2b + field public static final int COLOR_Format24BitARGB6666 = 42; // 0x2a + field public static final int COLOR_Format24bitARGB1887 = 13; // 0xd + field public static final int COLOR_Format24bitBGR888 = 12; // 0xc + field public static final int COLOR_Format24bitRGB888 = 11; // 0xb + field public static final int COLOR_Format25bitARGB1888 = 14; // 0xe + field public static final int COLOR_Format32bitARGB8888 = 16; // 0x10 + field public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf + field public static final int COLOR_Format8bitRGB332 = 2; // 0x2 + field public static final int COLOR_FormatCbYCrY = 27; // 0x1b + field public static final int COLOR_FormatCrYCbY = 28; // 0x1c + field public static final int COLOR_FormatL16 = 36; // 0x24 + field public static final int COLOR_FormatL2 = 33; // 0x21 + field public static final int COLOR_FormatL24 = 37; // 0x25 + field public static final int COLOR_FormatL32 = 38; // 0x26 + field public static final int COLOR_FormatL4 = 34; // 0x22 + field public static final int COLOR_FormatL8 = 35; // 0x23 + field public static final int COLOR_FormatMonochrome = 1; // 0x1 + field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f + field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e + field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20 + field public static final int COLOR_FormatYCbYCr = 25; // 0x19 + field public static final int COLOR_FormatYCrYCb = 26; // 0x1a + field public static final int COLOR_FormatYUV411PackedPlanar = 18; // 0x12 + field public static final int COLOR_FormatYUV411Planar = 17; // 0x11 + field public static final int COLOR_FormatYUV420PackedPlanar = 20; // 0x14 + field public static final int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27 + field public static final int COLOR_FormatYUV420Planar = 19; // 0x13 + field public static final int COLOR_FormatYUV420SemiPlanar = 21; // 0x15 + field public static final int COLOR_FormatYUV422PackedPlanar = 23; // 0x17 + field public static final int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28 + field public static final int COLOR_FormatYUV422Planar = 22; // 0x16 + field public static final int COLOR_FormatYUV422SemiPlanar = 24; // 0x18 + field public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d + field public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00 + field public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100 field public int[] colorFormats; - field public android.media.MediaCodecList.CodecProfileLevel[] profileLevels; - } - - public static final class MediaCodecList.CodecProfileLevel { - ctor public MediaCodecList.CodecProfileLevel(); + field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels; + } + + public static final class MediaCodecInfo.CodecProfileLevel { + ctor public MediaCodecInfo.CodecProfileLevel(); + field public static final int AACObjectELD = 39; // 0x27 + field public static final int AACObjectERLC = 17; // 0x11 + field public static final int AACObjectHE = 5; // 0x5 + field public static final int AACObjectHE_PS = 29; // 0x1d + field public static final int AACObjectLC = 2; // 0x2 + field public static final int AACObjectLD = 23; // 0x17 + field public static final int AACObjectLTP = 4; // 0x4 + field public static final int AACObjectMain = 1; // 0x1 + field public static final int AACObjectSSR = 3; // 0x3 + field public static final int AACObjectScalable = 6; // 0x6 + field public static final int AVCLevel1 = 1; // 0x1 + field public static final int AVCLevel11 = 4; // 0x4 + field public static final int AVCLevel12 = 8; // 0x8 + field public static final int AVCLevel13 = 16; // 0x10 + field public static final int AVCLevel1b = 2; // 0x2 + field public static final int AVCLevel2 = 32; // 0x20 + field public static final int AVCLevel21 = 64; // 0x40 + field public static final int AVCLevel22 = 128; // 0x80 + field public static final int AVCLevel3 = 256; // 0x100 + field public static final int AVCLevel31 = 512; // 0x200 + field public static final int AVCLevel32 = 1024; // 0x400 + field public static final int AVCLevel4 = 2048; // 0x800 + field public static final int AVCLevel41 = 4096; // 0x1000 + field public static final int AVCLevel42 = 8192; // 0x2000 + field public static final int AVCLevel5 = 16384; // 0x4000 + field public static final int AVCLevel51 = 32768; // 0x8000 + field public static final int AVCProfileBaseline = 1; // 0x1 + field public static final int AVCProfileExtended = 4; // 0x4 + field public static final int AVCProfileHigh = 8; // 0x8 + field public static final int AVCProfileHigh10 = 16; // 0x10 + field public static final int AVCProfileHigh422 = 32; // 0x20 + field public static final int AVCProfileHigh444 = 64; // 0x40 + field public static final int AVCProfileMain = 2; // 0x2 + field public static final int H263Level10 = 1; // 0x1 + field public static final int H263Level20 = 2; // 0x2 + field public static final int H263Level30 = 4; // 0x4 + field public static final int H263Level40 = 8; // 0x8 + field public static final int H263Level45 = 16; // 0x10 + field public static final int H263Level50 = 32; // 0x20 + field public static final int H263Level60 = 64; // 0x40 + field public static final int H263Level70 = 128; // 0x80 + field public static final int H263ProfileBackwardCompatible = 4; // 0x4 + field public static final int H263ProfileBaseline = 1; // 0x1 + field public static final int H263ProfileH320Coding = 2; // 0x2 + field public static final int H263ProfileHighCompression = 32; // 0x20 + field public static final int H263ProfileHighLatency = 256; // 0x100 + field public static final int H263ProfileISWV2 = 8; // 0x8 + field public static final int H263ProfileISWV3 = 16; // 0x10 + field public static final int H263ProfileInterlace = 128; // 0x80 + field public static final int H263ProfileInternet = 64; // 0x40 + field public static final int MPEG4Level0 = 1; // 0x1 + field public static final int MPEG4Level0b = 2; // 0x2 + field public static final int MPEG4Level1 = 4; // 0x4 + field public static final int MPEG4Level2 = 8; // 0x8 + field public static final int MPEG4Level3 = 16; // 0x10 + field public static final int MPEG4Level4 = 32; // 0x20 + field public static final int MPEG4Level4a = 64; // 0x40 + field public static final int MPEG4Level5 = 128; // 0x80 + field public static final int MPEG4ProfileAdvancedCoding = 4096; // 0x1000 + field public static final int MPEG4ProfileAdvancedCore = 8192; // 0x2000 + field public static final int MPEG4ProfileAdvancedRealTime = 1024; // 0x400 + field public static final int MPEG4ProfileAdvancedScalable = 16384; // 0x4000 + field public static final int MPEG4ProfileAdvancedSimple = 32768; // 0x8000 + field public static final int MPEG4ProfileBasicAnimated = 256; // 0x100 + field public static final int MPEG4ProfileCore = 4; // 0x4 + field public static final int MPEG4ProfileCoreScalable = 2048; // 0x800 + field public static final int MPEG4ProfileHybrid = 512; // 0x200 + field public static final int MPEG4ProfileMain = 8; // 0x8 + field public static final int MPEG4ProfileNbit = 16; // 0x10 + field public static final int MPEG4ProfileScalableTexture = 32; // 0x20 + field public static final int MPEG4ProfileSimple = 1; // 0x1 + field public static final int MPEG4ProfileSimpleFBA = 128; // 0x80 + field public static final int MPEG4ProfileSimpleFace = 64; // 0x40 + field public static final int MPEG4ProfileSimpleScalable = 2; // 0x2 field public int level; field public int profile; } + public final class MediaCodecList { + method public static final int getCodecCount(); + method public static final android.media.MediaCodecInfo getCodecInfoAt(int); + } + public final class MediaCrypto { - ctor public MediaCrypto(byte[], byte[]) throws java.lang.RuntimeException; - method public static final boolean isCryptoSchemeSupported(byte[]); + ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException; + method public static final boolean isCryptoSchemeSupported(java.util.UUID); method public final void release(); method public final boolean requiresSecureDecoderComponent(java.lang.String); } + public final class MediaCryptoException extends java.lang.Exception { + ctor public MediaCryptoException(java.lang.String); + } + public final class MediaExtractor { ctor public MediaExtractor(); method public boolean advance(); - method public int countTracks(); method public long getCachedDuration(); method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo); method public int getSampleFlags(); method public long getSampleTime(); method public int getSampleTrackIndex(); - method public java.util.Map<java.lang.String, java.lang.Object> getTrackFormat(int); + method public final int getTrackCount(); + method public android.media.MediaFormat getTrackFormat(int); method public boolean hasCacheReachedEndOfStream(); method public int readSampleData(java.nio.ByteBuffer, int); method public final void release(); - method public void seekTo(long); + method public void seekTo(long, int); method public void selectTrack(int); method public final void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>); method public final void setDataSource(java.lang.String); method public final void setDataSource(java.io.FileDescriptor); method public final void setDataSource(java.io.FileDescriptor, long, long); + method public void unselectTrack(int); field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2 field public static final int SAMPLE_FLAG_SYNC = 1; // 0x1 + field public static final int SEEK_TO_CLOSEST = 3; // 0x3 + field public static final int SEEK_TO_CLOSEST_SYNC = 2; // 0x2 + field public static final int SEEK_TO_NEXT_SYNC = 1; // 0x1 + field public static final int SEEK_TO_PREVIOUS_SYNC = 0; // 0x0 + } + + public final class MediaFormat { + ctor public MediaFormat(); + method public final boolean containsKey(java.lang.String); + method public static final android.media.MediaFormat createAudioFormat(java.lang.String, int, int); + method public static final android.media.MediaFormat createVideoFormat(java.lang.String, int, int); + method public final java.nio.ByteBuffer getByteBuffer(java.lang.String); + method public final float getFloat(java.lang.String); + method public final int getInteger(java.lang.String); + method public final long getLong(java.lang.String); + method public final java.lang.String getString(java.lang.String); + method public final void setByteBuffer(java.lang.String, java.nio.ByteBuffer); + method public final void setFloat(java.lang.String, float); + method public final void setInteger(java.lang.String, int); + method public final void setLong(java.lang.String, long); + method public final void setString(java.lang.String, java.lang.String); + field public static final java.lang.String KEY_AAC_PROFILE = "aac-profile"; + field public static final java.lang.String KEY_BIT_RATE = "bitrate"; + field public static final java.lang.String KEY_CHANNEL_COUNT = "channel-count"; + field public static final java.lang.String KEY_CHANNEL_MASK = "channel-mask"; + field public static final java.lang.String KEY_COLOR_FORMAT = "color-format"; + field public static final java.lang.String KEY_DURATION = "durationUs"; + field public static final java.lang.String KEY_FRAME_RATE = "frame-rate"; + field public static final java.lang.String KEY_HEIGHT = "height"; + field public static final java.lang.String KEY_IS_ADTS = "is-adts"; + field public static final java.lang.String KEY_I_FRAME_INTERVAL = "i-frame-interval"; + field public static final java.lang.String KEY_MAX_INPUT_SIZE = "max-input-size"; + field public static final java.lang.String KEY_MIME = "mime"; + field public static final java.lang.String KEY_SAMPLE_RATE = "sample-rate"; + field public static final java.lang.String KEY_WIDTH = "width"; } public class MediaMetadataRetriever { @@ -11130,13 +11332,19 @@ package android.media { public class MediaPlayer { ctor public MediaPlayer(); + method public void addTimedTextSource(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; + method public void addTimedTextSource(android.content.Context, android.net.Uri, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; + method public void addTimedTextSource(java.io.FileDescriptor, java.lang.String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException; + method public void addTimedTextSource(java.io.FileDescriptor, long, long, java.lang.String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException; method public void attachAuxEffect(int); method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri); method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder); method public static android.media.MediaPlayer create(android.content.Context, int); + method public void deselectTrack(int) throws java.lang.IllegalStateException; method public int getAudioSessionId(); method public int getCurrentPosition(); method public int getDuration(); + method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException; method public int getVideoHeight(); method public int getVideoWidth(); method public boolean isLooping(); @@ -11147,6 +11355,7 @@ package android.media { method public void release(); method public void reset(); method public void seekTo(int) throws java.lang.IllegalStateException; + method public void selectTrack(int) throws java.lang.IllegalStateException; method public void setAudioSessionId(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException; method public void setAudioStreamType(int); method public void setAuxEffectSendLevel(float); @@ -11164,9 +11373,11 @@ package android.media { method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener); method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener); method public void setOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener); + method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener); method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener); method public void setScreenOnWhilePlaying(boolean); method public void setSurface(android.view.Surface); + method public void setVideoScalingMode(int); method public void setVolume(float, float); method public void setWakeMode(android.content.Context, int); method public void start() throws java.lang.IllegalStateException; @@ -11181,6 +11392,9 @@ package android.media { field public static final int MEDIA_INFO_NOT_SEEKABLE = 801; // 0x321 field public static final int MEDIA_INFO_UNKNOWN = 1; // 0x1 field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc + field public static final java.lang.String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip"; + field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1 + field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2 } public static abstract interface MediaPlayer.OnBufferingUpdateListener { @@ -11207,10 +11421,25 @@ package android.media { method public abstract void onSeekComplete(android.media.MediaPlayer); } + public static abstract interface MediaPlayer.OnTimedTextListener { + method public abstract void onTimedText(android.media.MediaPlayer, android.media.TimedText); + } + public static abstract interface MediaPlayer.OnVideoSizeChangedListener { method public abstract void onVideoSizeChanged(android.media.MediaPlayer, int, int); } + public static class MediaPlayer.TrackInfo implements android.os.Parcelable { + method public int describeContents(); + method public java.lang.String getLanguage(); + method public int getTrackType(); + method public void writeToParcel(android.os.Parcel, int); + field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2 + field public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3; // 0x3 + field public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0; // 0x0 + field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1 + } + public class MediaRecorder { ctor public MediaRecorder(); method public static final int getAudioSourceMax(); @@ -11251,9 +11480,11 @@ package android.media { public final class MediaRecorder.AudioEncoder { field public static final int AAC = 3; // 0x3 + field public static final int AAC_ELD = 5; // 0x5 field public static final int AMR_NB = 1; // 0x1 field public static final int AMR_WB = 2; // 0x2 field public static final int DEFAULT = 0; // 0x0 + field public static final int HE_AAC = 4; // 0x4 } public final class MediaRecorder.AudioSource { @@ -11441,6 +11672,11 @@ package android.media { field public static final int OPTIONS_RECYCLE_INPUT = 2; // 0x2 } + public final class TimedText { + method public android.graphics.Rect getBounds(); + method public java.lang.String getText(); + } + public class ToneGenerator { ctor public ToneGenerator(int, int); method public final int getAudioSessionId(); @@ -18490,6 +18726,7 @@ package android.renderscript { method public static deprecated android.renderscript.Element F64_2(android.renderscript.RenderScript); method public static deprecated android.renderscript.Element F64_3(android.renderscript.RenderScript); method public static deprecated android.renderscript.Element F64_4(android.renderscript.RenderScript); + method public static deprecated android.renderscript.Element FONT(android.renderscript.RenderScript); method public static deprecated android.renderscript.Element I16(android.renderscript.RenderScript); method public static deprecated android.renderscript.Element I16_2(android.renderscript.RenderScript); method public static deprecated android.renderscript.Element I16_3(android.renderscript.RenderScript); @@ -18575,6 +18812,7 @@ package android.renderscript { enum_constant public static final android.renderscript.Element.DataType MATRIX_4X4; enum_constant public static final android.renderscript.Element.DataType RS_ALLOCATION; enum_constant public static final android.renderscript.Element.DataType RS_ELEMENT; + enum_constant public static final android.renderscript.Element.DataType RS_FONT; enum_constant public static final android.renderscript.Element.DataType RS_MESH; enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_FRAGMENT; enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_RASTER; @@ -19195,6 +19433,7 @@ package android.renderscript { method public deprecated void setVar(int, boolean); method public deprecated void setVar(int, android.renderscript.BaseObj); method public deprecated void setVar(int, android.renderscript.FieldPacker); + method public deprecated void setVar(int, android.renderscript.FieldPacker, android.renderscript.Element, int[]); } public static class Script.Builder { @@ -21034,19 +21273,6 @@ package android.text { method public int getTopPadding(); } - public abstract interface TextDirectionHeuristic { - } - - public class TextDirectionHeuristics { - ctor public TextDirectionHeuristics(); - field public static final android.text.TextDirectionHeuristic ANYRTL_LTR; - field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_LTR; - field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_RTL; - field public static final android.text.TextDirectionHeuristic LOCALE; - field public static final android.text.TextDirectionHeuristic LTR; - field public static final android.text.TextDirectionHeuristic RTL; - } - public class TextPaint extends android.graphics.Paint { ctor public TextPaint(); ctor public TextPaint(int); @@ -22138,10 +22364,6 @@ package android.util { method public android.util.JsonWriter value(java.lang.Number) throws java.io.IOException; } - public class LocaleUtil { - method public static int getLayoutDirectionFromLocale(java.util.Locale); - } - public final class Log { method public static int d(java.lang.String, java.lang.String); method public static int d(java.lang.String, java.lang.String, java.lang.Throwable); @@ -22475,6 +22697,7 @@ package android.view { method public abstract java.lang.CharSequence getSubtitle(); method public java.lang.Object getTag(); method public abstract java.lang.CharSequence getTitle(); + method public boolean getTitleOptionalHint(); method public abstract void invalidate(); method public boolean isTitleOptional(); method public abstract void setCustomView(android.view.View); @@ -22608,12 +22831,8 @@ package android.view { public class Gravity { ctor public Gravity(); method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect); - method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect, int); method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect); - method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect, int); method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect); - method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect, int); - method public static int getAbsoluteGravity(int, int); method public static boolean isHorizontal(int); method public static boolean isVertical(int); field public static final int AXIS_CLIP = 8; // 0x8 @@ -23636,7 +23855,7 @@ package android.view { method public void recycle(); } - public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.graphics.drawable.Drawable.Callback2 android.view.KeyEvent.Callback { + public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback { ctor public View(android.content.Context); ctor public View(android.content.Context, android.util.AttributeSet); ctor public View(android.content.Context, android.util.AttributeSet, int); @@ -23656,9 +23875,6 @@ package android.view { method public void buildDrawingCache(boolean); method public void buildLayer(); method public boolean callOnClick(); - method public boolean canResolveLayoutDirection(); - method public boolean canResolveTextAlignment(); - method public boolean canResolveTextDirection(); method public boolean canScrollHorizontally(int); method public boolean canScrollVertically(int); method public void cancelLongPress(); @@ -23747,7 +23963,6 @@ package android.view { method public boolean getKeepScreenOn(); method public android.view.KeyEvent.DispatcherState getKeyDispatcherState(); method public int getLayerType(); - method public int getLayoutDirection(); method public android.view.ViewGroup.LayoutParams getLayoutParams(); method public final int getLeft(); method protected float getLeftFadingEdgeStrength(); @@ -23771,19 +23986,13 @@ package android.view { method public android.view.View.OnFocusChangeListener getOnFocusChangeListener(); method public int getOverScrollMode(); method public int getPaddingBottom(); - method public int getPaddingEnd(); method public int getPaddingLeft(); method public int getPaddingRight(); - method public int getPaddingStart(); method public int getPaddingTop(); method public final android.view.ViewParent getParent(); method public android.view.ViewParent getParentForAccessibility(); method public float getPivotX(); method public float getPivotY(); - method public int getResolvedLayoutDirection(); - method public int getResolvedLayoutDirection(android.graphics.drawable.Drawable); - method public int getResolvedTextAlignment(); - method public int getResolvedTextDirection(); method public android.content.res.Resources getResources(); method public final int getRight(); method protected float getRightFadingEdgeStrength(); @@ -23806,8 +24015,6 @@ package android.view { method public int getSystemUiVisibility(); method public java.lang.Object getTag(); method public java.lang.Object getTag(int); - method public int getTextAlignment(); - method public int getTextDirection(); method public final int getTop(); method protected float getTopFadingEdgeStrength(); method protected int getTopPaddingOffset(); @@ -23857,13 +24064,10 @@ package android.view { method public boolean isHovered(); method public boolean isInEditMode(); method public boolean isInTouchMode(); - method protected static boolean isLayoutDirectionRtl(java.util.Locale); method public boolean isLayoutRequested(); - method public boolean isLayoutRtl(); method public boolean isLongClickable(); method public boolean isOpaque(); method protected boolean isPaddingOffsetRequired(); - method public boolean isPaddingRelative(); method public boolean isPressed(); method public boolean isSaveEnabled(); method public boolean isSaveFromParentEnabled(); @@ -23911,14 +24115,7 @@ package android.view { method protected void onLayout(boolean, int, int, int, int); method protected void onMeasure(int, int); method protected void onOverScrolled(int, int, boolean, boolean); - method public void onPaddingChanged(int); method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent); - method public void onResolvedLayoutDirectionChanged(); - method public void onResolvedLayoutDirectionReset(); - method public void onResolvedTextAlignmentChanged(); - method public void onResolvedTextAlignmentReset(); - method public void onResolvedTextDirectionChanged(); - method public void onResolvedTextDirectionReset(); method protected void onRestoreInstanceState(android.os.Parcelable); method protected android.os.Parcelable onSaveInstanceState(); method public void onScreenStateChanged(int); @@ -23961,15 +24158,8 @@ package android.view { method public void requestLayout(); method public boolean requestRectangleOnScreen(android.graphics.Rect); method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean); - method public void resetResolvedLayoutDirection(); - method public void resetResolvedTextAlignment(); - method public void resetResolvedTextDirection(); - method public void resolveLayoutDirection(); - method public void resolvePadding(); method public static int resolveSize(int, int); method public static int resolveSizeAndState(int, int, int); - method public void resolveTextAlignment(); - method public void resolveTextDirection(); method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>); method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>); method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); @@ -24008,7 +24198,6 @@ package android.view { method public void setImportantForAccessibility(int); method public void setKeepScreenOn(boolean); method public void setLayerType(int, android.graphics.Paint); - method public void setLayoutDirection(int); method public void setLayoutParams(android.view.ViewGroup.LayoutParams); method public final void setLeft(int); method public void setLongClickable(boolean); @@ -24032,7 +24221,6 @@ package android.view { method public void setOnTouchListener(android.view.View.OnTouchListener); method public void setOverScrollMode(int); method public void setPadding(int, int, int, int); - method public void setPaddingRelative(int, int, int, int); method public void setPivotX(float); method public void setPivotY(float); method public void setPressed(boolean); @@ -24057,8 +24245,6 @@ package android.view { method public void setSystemUiVisibility(int); method public void setTag(java.lang.Object); method public void setTag(int, java.lang.Object); - method public void setTextAlignment(int); - method public void setTextDirection(int); method public final void setTop(int); method public void setTouchDelegate(android.view.TouchDelegate); method public void setTranslationX(float); @@ -24124,10 +24310,6 @@ package android.view { field public static final int LAYER_TYPE_HARDWARE = 2; // 0x2 field public static final int LAYER_TYPE_NONE = 0; // 0x0 field public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1 - field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2 - field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3 - field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0 - field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1 field public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10 field public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff field public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000 @@ -24178,22 +24360,8 @@ package android.view { field public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 1; // 0x1 field public static final int SYSTEM_UI_FLAG_VISIBLE = 0; // 0x0 field public static final int SYSTEM_UI_LAYOUT_FLAGS = 1536; // 0x600 - field public static final int TEXT_ALIGNMENT_CENTER = 4; // 0x4 - field protected static int TEXT_ALIGNMENT_DEFAULT; - field public static final int TEXT_ALIGNMENT_GRAVITY = 1; // 0x1 field public static final int TEXT_ALIGNMENT_INHERIT = 0; // 0x0 field public static final int TEXT_ALIGNMENT_RESOLVED_DEFAULT = 131072; // 0x20000 - field public static final int TEXT_ALIGNMENT_TEXT_END = 3; // 0x3 - field public static final int TEXT_ALIGNMENT_TEXT_START = 2; // 0x2 - field public static final int TEXT_ALIGNMENT_VIEW_END = 6; // 0x6 - field public static final int TEXT_ALIGNMENT_VIEW_START = 5; // 0x5 - field public static final int TEXT_DIRECTION_ANY_RTL = 2; // 0x2 - field protected static int TEXT_DIRECTION_DEFAULT; - field public static final int TEXT_DIRECTION_FIRST_STRONG = 1; // 0x1 - field public static final int TEXT_DIRECTION_INHERIT = 0; // 0x0 - field public static final int TEXT_DIRECTION_LOCALE = 5; // 0x5 - field public static final int TEXT_DIRECTION_LTR = 3; // 0x3 - field public static final int TEXT_DIRECTION_RTL = 4; // 0x4 field public static final android.util.Property TRANSLATION_X; field public static final android.util.Property TRANSLATION_Y; field protected static final java.lang.String VIEW_LOG_TAG = "View"; @@ -24484,12 +24652,12 @@ package android.view { method public void startLayoutAnimation(); method public void startViewTransition(android.view.View); method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams); + field public static final int CLIP_BOUNDS = 0; // 0x0 field protected static final int CLIP_TO_PADDING_MASK = 34; // 0x22 - field public static final int COMPONENT_BOUNDS = 0; // 0x0 field public static final int FOCUS_AFTER_DESCENDANTS = 262144; // 0x40000 field public static final int FOCUS_BEFORE_DESCENDANTS = 131072; // 0x20000 field public static final int FOCUS_BLOCK_DESCENDANTS = 393216; // 0x60000 - field public static final int LAYOUT_BOUNDS = 1; // 0x1 + field public static final int OPTICAL_BOUNDS = 1; // 0x1 field public static final int PERSISTENT_ALL_CACHES = 3; // 0x3 field public static final int PERSISTENT_ANIMATION_CACHE = 1; // 0x1 field public static final int PERSISTENT_NO_CACHE = 0; // 0x0 @@ -24500,7 +24668,6 @@ package android.view { ctor public ViewGroup.LayoutParams(android.content.Context, android.util.AttributeSet); ctor public ViewGroup.LayoutParams(int, int); ctor public ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams); - method public void onResolveLayoutDirection(int); method protected void setBaseAttributes(android.content.res.TypedArray, int, int); field public static final deprecated int FILL_PARENT = -1; // 0xffffffff field public static final int MATCH_PARENT = -1; // 0xffffffff @@ -24515,15 +24682,10 @@ package android.view { ctor public ViewGroup.MarginLayoutParams(int, int); ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.MarginLayoutParams); ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.LayoutParams); - method public int getMarginEnd(); - method public int getMarginStart(); - method public boolean isMarginRelative(); method public void setMargins(int, int, int, int); field public int bottomMargin; - field public int endMargin; field public int leftMargin; field public int rightMargin; - field public int startMargin; field public int topMargin; } @@ -26708,6 +26870,7 @@ package android.widget { method public void dismissDropDown(); method public boolean enoughToFilter(); method public android.widget.ListAdapter getAdapter(); + method public java.lang.CharSequence getCompletionHint(); method public int getDropDownAnchor(); method public android.graphics.drawable.Drawable getDropDownBackground(); method public int getDropDownHeight(); @@ -26847,7 +27010,9 @@ package android.widget { ctor public CheckedTextView(android.content.Context); ctor public CheckedTextView(android.content.Context, android.util.AttributeSet); ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int); + method public android.graphics.drawable.Drawable getCheckMarkDrawable(); method public boolean isChecked(); + method public void onPaddingChanged(int); method public void setCheckMarkDrawable(int); method public void setCheckMarkDrawable(android.graphics.drawable.Drawable); method public void setChecked(boolean); @@ -27836,6 +28001,7 @@ package android.widget { public class RemoteViews implements android.view.LayoutInflater.Filter android.os.Parcelable { ctor public RemoteViews(java.lang.String, int); + ctor public RemoteViews(android.widget.RemoteViews, android.widget.RemoteViews); ctor public RemoteViews(android.os.Parcel); method public void addView(int, android.widget.RemoteViews); method public android.view.View apply(android.content.Context, android.view.ViewGroup); @@ -27876,7 +28042,6 @@ package android.widget { method public void setString(int, java.lang.String, java.lang.String); method public void setTextColor(int, int); method public void setTextViewCompoundDrawables(int, int, int, int, int); - method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int); method public void setTextViewText(int, java.lang.CharSequence); method public void setUri(int, java.lang.String, android.net.Uri); method public void setViewVisibility(int, int); @@ -27977,7 +28142,11 @@ package android.widget { public class SearchView extends android.widget.LinearLayout implements android.view.CollapsibleActionView { ctor public SearchView(android.content.Context); ctor public SearchView(android.content.Context, android.util.AttributeSet); + method public int getImeOptions(); + method public int getInputType(); + method public int getMaxWidth(); method public java.lang.CharSequence getQuery(); + method public java.lang.CharSequence getQueryHint(); method public android.widget.CursorAdapter getSuggestionsAdapter(); method public boolean isIconfiedByDefault(); method public boolean isIconified(); @@ -28352,12 +28521,9 @@ package android.widget { method public final int getAutoLinkMask(); method public int getCompoundDrawablePadding(); method public android.graphics.drawable.Drawable[] getCompoundDrawables(); - method public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative(); method public int getCompoundPaddingBottom(); - method public int getCompoundPaddingEnd(); method public int getCompoundPaddingLeft(); method public int getCompoundPaddingRight(); - method public int getCompoundPaddingStart(); method public int getCompoundPaddingTop(); method public final int getCurrentHintTextColor(); method public final int getCurrentTextColor(); @@ -28372,11 +28538,13 @@ package android.widget { method public android.text.InputFilter[] getFilters(); method public boolean getFreezesText(); method public int getGravity(); + method public int getHighlightColor(); method public java.lang.CharSequence getHint(); method public final android.content.res.ColorStateList getHintTextColors(); method public int getImeActionId(); method public java.lang.CharSequence getImeActionLabel(); method public int getImeOptions(); + method public boolean getIncludeFontPadding(); method public android.os.Bundle getInputExtras(boolean); method public int getInputType(); method public final android.text.method.KeyListener getKeyListener(); @@ -28384,8 +28552,19 @@ package android.widget { method public int getLineBounds(int, android.graphics.Rect); method public int getLineCount(); method public int getLineHeight(); + method public float getLineSpacingExtra(); + method public float getLineSpacingMultiplier(); method public final android.content.res.ColorStateList getLinkTextColors(); method public final boolean getLinksClickable(); + method public int getMarqueeRepeatLimit(); + method public int getMaxEms(); + method public int getMaxHeight(); + method public int getMaxLines(); + method public int getMaxWidth(); + method public int getMinEms(); + method public int getMinHeight(); + method public int getMinLines(); + method public int getMinWidth(); method public final android.text.method.MovementMethod getMovementMethod(); method public int getOffsetForPosition(float, float); method public android.text.TextPaint getPaint(); @@ -28393,6 +28572,10 @@ package android.widget { method public java.lang.String getPrivateImeOptions(); method public int getSelectionEnd(); method public int getSelectionStart(); + method public int getShadowColor(); + method public float getShadowDx(); + method public float getShadowDy(); + method public float getShadowRadius(); method public java.lang.CharSequence getText(); method public static int getTextColor(android.content.Context, android.content.res.TypedArray, int); method public final android.content.res.ColorStateList getTextColors(); @@ -28400,15 +28583,14 @@ package android.widget { method public float getTextScaleX(); method public float getTextSize(); method public int getTotalPaddingBottom(); - method public int getTotalPaddingEnd(); method public int getTotalPaddingLeft(); method public int getTotalPaddingRight(); - method public int getTotalPaddingStart(); method public int getTotalPaddingTop(); method public final android.text.method.TransformationMethod getTransformationMethod(); method public android.graphics.Typeface getTypeface(); method public android.text.style.URLSpan[] getUrls(); method public boolean hasSelection(); + method public boolean isCursorVisible(); method public boolean isInputMethodTarget(); method public boolean isSuggestionsEnabled(); method public boolean isTextSelectable(); @@ -28421,6 +28603,8 @@ package android.widget { method public void onEndBatchEdit(); method public boolean onPreDraw(); method public boolean onPrivateIMECommand(java.lang.String, android.os.Bundle); + method public void onResolvedLayoutDirectionReset(); + method public void onResolvedTextDirectionChanged(); method public void onRestoreInstanceState(android.os.Parcelable); method public android.os.Parcelable onSaveInstanceState(); method protected void onSelectionChanged(int, int); @@ -28433,9 +28617,6 @@ package android.widget { method public final void setAutoLinkMask(int); method public void setCompoundDrawablePadding(int); method public void setCompoundDrawables(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable); - method public void setCompoundDrawablesRelative(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable); - method public void setCompoundDrawablesRelativeWithIntrinsicBounds(int, int, int, int); - method public void setCompoundDrawablesRelativeWithIntrinsicBounds(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable); method public void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int); method public void setCompoundDrawablesWithIntrinsicBounds(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable); method public void setCursorVisible(boolean); @@ -28479,6 +28660,7 @@ package android.widget { method public void setMinWidth(int); method public final void setMovementMethod(android.text.method.MovementMethod); method public void setOnEditorActionListener(android.widget.TextView.OnEditorActionListener); + method public void setPaddingRelative(int, int, int, int); method public void setPaintFlags(int); method public void setPrivateImeOptions(java.lang.String); method public void setRawInputType(int); diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java index 4d638d00f025..e19ad6606b2b 100644 --- a/cmds/pm/src/com/android/commands/pm/Pm.java +++ b/cmds/pm/src/com/android/commands/pm/Pm.java @@ -136,6 +136,11 @@ public final class Pm { return; } + if ("set-permission-enforced".equals(op)) { + runSetPermissionEnforced(); + return; + } + if ("set-install-location".equals(op)) { runSetInstallLocation(); return; @@ -1114,6 +1119,33 @@ public final class Pm { } } + private void runSetPermissionEnforced() { + final String permission = nextArg(); + if (permission == null) { + System.err.println("Error: no permission specified"); + showUsage(); + return; + } + final String enforcedRaw = nextArg(); + if (enforcedRaw == null) { + System.err.println("Error: no enforcement specified"); + showUsage(); + return; + } + final boolean enforced = Boolean.parseBoolean(enforcedRaw); + try { + mPm.setPermissionEnforced(permission, enforced); + } catch (RemoteException e) { + System.err.println(e.toString()); + System.err.println(PM_NOT_RUNNING_ERR); + } catch (IllegalArgumentException e) { + System.err.println("Bad argument: " + e.toString()); + showUsage(); + } catch (SecurityException e) { + System.err.println("Operation not allowed: " + e.toString()); + } + } + /** * Displays the package file for a package. * @param pckg @@ -1214,6 +1246,7 @@ public final class Pm { System.err.println(" pm revoke PACKAGE PERMISSION"); System.err.println(" pm set-install-location [0/auto] [1/internal] [2/external]"); System.err.println(" pm get-install-location"); + System.err.println(" pm set-permission-enforced PERMISSION [true|false]"); System.err.println(" pm create-user USER_NAME"); System.err.println(" pm remove-user USER_ID"); System.err.println(""); diff --git a/cmds/svc/src/com/android/commands/svc/Svc.java b/cmds/svc/src/com/android/commands/svc/Svc.java index 1cd4c0db0ebc..0fbba11e927d 100644 --- a/cmds/svc/src/com/android/commands/svc/Svc.java +++ b/cmds/svc/src/com/android/commands/svc/Svc.java @@ -94,6 +94,7 @@ public class Svc { COMMAND_HELP, new PowerCommand(), new DataCommand(), - new WifiCommand() + new WifiCommand(), + new UsbCommand() }; } diff --git a/cmds/svc/src/com/android/commands/svc/UsbCommand.java b/cmds/svc/src/com/android/commands/svc/UsbCommand.java new file mode 100644 index 000000000000..4dcb05e4f85d --- /dev/null +++ b/cmds/svc/src/com/android/commands/svc/UsbCommand.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.commands.svc; + +import android.content.Context; +import android.hardware.usb.IUsbManager; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.SystemProperties; + +public class UsbCommand extends Svc.Command { + public UsbCommand() { + super("usb"); + } + + @Override + public String shortHelp() { + return "Control Usb state"; + } + + @Override + public String longHelp() { + return shortHelp() + "\n" + + "\n" + + "usage: svc usb setFunction [function]\n" + + " Set the current usb function.\n\n" + + " svc usb getFunction\n" + + " Gets the list of currently enabled functions\n"; + } + + @Override + public void run(String[] args) { + boolean validCommand = false; + if (args.length >= 2) { + if ("setFunction".equals(args[1])) { + IUsbManager usbMgr = IUsbManager.Stub.asInterface(ServiceManager.getService( + Context.USB_SERVICE)); + try { + usbMgr.setCurrentFunction((args.length >=3 ? args[2] : null), false); + } catch (RemoteException e) { + System.err.println("Error communicating with UsbManager: " + e); + } + return; + } else if ("getFunction".equals(args[1])) { + System.err.println(SystemProperties.get("sys.usb.config")); + return; + } + } + System.err.println(longHelp()); + } +} diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java index c858e3ca233c..b644dd1c0fb9 100644 --- a/core/java/android/accessibilityservice/AccessibilityService.java +++ b/core/java/android/accessibilityservice/AccessibilityService.java @@ -244,64 +244,54 @@ public abstract class AccessibilityService extends Service { public static final int GESTURE_SWIPE_DOWN_AND_UP = 8; /** - * The user has performed a clockwise circle gesture on the touch screen. - */ - public static final int GESTURE_CLOCKWISE_CIRCLE = 9; - - /** - * The user has performed a counter clockwise circle gesture on the touch screen. - */ - public static final int GESTURE_COUNTER_CLOCKWISE_CIRCLE = 10; - - /** * The user has performed a left and up gesture on the touch screen. */ - public static final int GESTURE_SWIPE_LEFT_AND_UP = 11; + public static final int GESTURE_SWIPE_LEFT_AND_UP = 9; /** * The user has performed a left and down gesture on the touch screen. */ - public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 12; + public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10; /** * The user has performed a right and up gesture on the touch screen. */ - public static final int GESTURE_SWIPE_RIGHT_AND_UP = 13; + public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11; /** * The user has performed a right and down gesture on the touch screen. */ - public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 14; + public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12; /** * The user has performed an up and left gesture on the touch screen. */ - public static final int GESTURE_SWIPE_UP_AND_LEFT = 15; + public static final int GESTURE_SWIPE_UP_AND_LEFT = 13; /** * The user has performed an up and right gesture on the touch screen. */ - public static final int GESTURE_SWIPE_UP_AND_RIGHT = 16; + public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14; /** * The user has performed an down and left gesture on the touch screen. */ - public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 17; + public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15; /** * The user has performed an down and right gesture on the touch screen. */ - public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 18; + public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16; /** * The user has performed a two finger tap gesture on the touch screen. */ - public static final int GESTURE_TWO_FINGER_TAP = 19; + public static final int GESTURE_TWO_FINGER_TAP = 17; /** * The user has performed a two finger long press gesture on the touch screen. */ - public static final int GESTURE_TWO_FINGER_LONG_PRESS = 20; + public static final int GESTURE_TWO_FINGER_LONG_PRESS = 18; /** * The {@link Intent} that must be declared as handled by the service. diff --git a/core/java/android/animation/PropertyValuesHolder.java b/core/java/android/animation/PropertyValuesHolder.java index 58f23f7517ca..5b1a7cf209ff 100644 --- a/core/java/android/animation/PropertyValuesHolder.java +++ b/core/java/android/animation/PropertyValuesHolder.java @@ -384,8 +384,7 @@ public class PropertyValuesHolder implements Cloneable { try { returnVal = targetClass.getMethod(methodName, args); } catch (NoSuchMethodException e) { - Log.e("PropertyValuesHolder", - "Couldn't find no-arg method for property " + mPropertyName + ": " + e); + // Swallow the error, log it later } } else { args = new Class[1]; @@ -412,9 +411,12 @@ public class PropertyValuesHolder implements Cloneable { } } // If we got here, then no appropriate function was found - Log.e("PropertyValuesHolder", - "Couldn't find setter/getter for property " + mPropertyName + - " with value type "+ mValueType); + } + + if (returnVal == null) { + Log.w("PropertyValuesHolder", "Method " + + getMethodName(prefix, mPropertyName) + "() with type " + mValueType + + " not found on target class " + targetClass); } return returnVal; @@ -495,7 +497,7 @@ public class PropertyValuesHolder implements Cloneable { } return; } catch (ClassCastException e) { - Log.e("PropertyValuesHolder","No such property (" + mProperty.getName() + + Log.w("PropertyValuesHolder","No such property (" + mProperty.getName() + ") on target object " + target + ". Trying reflection instead"); mProperty = null; } @@ -508,6 +510,10 @@ public class PropertyValuesHolder implements Cloneable { if (!kf.hasValue()) { if (mGetter == null) { setupGetter(targetClass); + if (mGetter == null) { + // Already logged the error - just return to avoid NPE + return; + } } try { kf.setValue(mGetter.invoke(target)); @@ -535,6 +541,10 @@ public class PropertyValuesHolder implements Cloneable { if (mGetter == null) { Class targetClass = target.getClass(); setupGetter(targetClass); + if (mGetter == null) { + // Already logged the error - just return to avoid NPE + return; + } } kf.setValue(mGetter.invoke(target)); } catch (InvocationTargetException e) { @@ -854,8 +864,9 @@ public class PropertyValuesHolder implements Cloneable { } } } catch (NoSuchMethodError e) { - Log.d("PropertyValuesHolder", - "Can't find native method using JNI, use reflection" + e); + // Couldn't find it via JNI - try reflection next. Probably means the method + // doesn't exist, or the type is wrong. An error will be logged later if + // reflection fails as well. } finally { mPropertyMapLock.writeLock().unlock(); } @@ -990,8 +1001,9 @@ public class PropertyValuesHolder implements Cloneable { } } } catch (NoSuchMethodError e) { - Log.d("PropertyValuesHolder", - "Can't find native method using JNI, use reflection" + e); + // Couldn't find it via JNI - try reflection next. Probably means the method + // doesn't exist, or the type is wrong. An error will be logged later if + // reflection fails as well. } finally { mPropertyMapLock.writeLock().unlock(); } diff --git a/core/java/android/animation/TimeAnimator.java b/core/java/android/animation/TimeAnimator.java index a79f2a309326..088d20da8463 100644 --- a/core/java/android/animation/TimeAnimator.java +++ b/core/java/android/animation/TimeAnimator.java @@ -14,16 +14,6 @@ public class TimeAnimator extends ValueAnimator { @Override boolean animationFrame(long currentTime) { - if (mPlayingState == STOPPED) { - mPlayingState = RUNNING; - if (mSeekTime < 0) { - mStartTime = currentTime; - } else { - mStartTime = currentTime - mSeekTime; - // Now that we're playing, reset the seek time - mSeekTime = -1; - } - } if (mListener != null) { long totalTime = currentTime - mStartTime; long deltaTime = (mPreviousTime < 0) ? 0 : (currentTime - mPreviousTime); diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index 2154b1412c70..326f27c65eb7 100755 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -56,11 +56,6 @@ public class ValueAnimator extends Animator { private static float sDurationScale = 1.0f; /** - * Messages sent to timing handler: START is sent when an animation first begins. - */ - static final int ANIMATION_START = 0; - - /** * Values used with internal variable mPlayingState to indicate the current state of an * animation. */ @@ -504,7 +499,7 @@ public class ValueAnimator extends Animator { mPlayingState = SEEKED; } mStartTime = currentTime - playTime; - animationFrame(currentTime); + doAnimationFrame(currentTime); } /** @@ -528,8 +523,9 @@ public class ValueAnimator extends Animator { * the same times for calculating their values, which makes synchronizing * animations possible. * + * The handler uses the Choreographer for executing periodic callbacks. */ - private static class AnimationHandler extends Handler implements Runnable { + private static class AnimationHandler implements Runnable { // The per-thread list of all active animations private final ArrayList<ValueAnimator> mAnimations = new ArrayList<ValueAnimator>(); @@ -552,34 +548,13 @@ public class ValueAnimator extends Animator { } /** - * The START message is sent when an animation's start() method is called. - * It cannot start synchronously when start() is called - * because the call may be on the wrong thread, and it would also not be - * synchronized with other animations because it would not start on a common - * timing pulse. So each animation sends a START message to the handler, which - * causes the handler to place the animation on the active animations queue and - * start processing frames for that animation. + * Start animating on the next frame. */ - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case ANIMATION_START: - // If there are already active animations, or if another ANIMATION_START - // message was processed during this frame, then the pending list may already - // have been cleared. If that's the case, we've already processed the - // active animations for this frame - don't do it again. - if (mPendingAnimations.size() > 0) { - doAnimationFrame(); - } - break; - } + public void start() { + scheduleAnimation(); } - private void doAnimationFrame() { - // currentTime holds the common time for all animations processed - // during this frame - long currentTime = AnimationUtils.currentAnimationTimeMillis(); - + private void doAnimationFrame(long frameTime) { // mPendingAnimations holds any animations that have requested to be started // We're going to clear mPendingAnimations, but starting animation may // cause more to be added to the pending list (for example, if one animation @@ -605,7 +580,7 @@ public class ValueAnimator extends Animator { int numDelayedAnims = mDelayedAnims.size(); for (int i = 0; i < numDelayedAnims; ++i) { ValueAnimator anim = mDelayedAnims.get(i); - if (anim.delayedAnimationFrame(currentTime)) { + if (anim.delayedAnimationFrame(frameTime)) { mReadyAnims.add(anim); } } @@ -626,7 +601,7 @@ public class ValueAnimator extends Animator { int i = 0; while (i < numAnims) { ValueAnimator anim = mAnimations.get(i); - if (anim.animationFrame(currentTime)) { + if (anim.doAnimationFrame(frameTime)) { mEndingAnims.add(anim); } if (mAnimations.size() == numAnims) { @@ -652,10 +627,8 @@ public class ValueAnimator extends Animator { // If there are still active or delayed animations, schedule a future call to // onAnimate to process the next frame of the animations. - if (!mAnimationScheduled - && (!mAnimations.isEmpty() || !mDelayedAnims.isEmpty())) { - mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, this, null); - mAnimationScheduled = true; + if (!mAnimations.isEmpty() || !mDelayedAnims.isEmpty()) { + scheduleAnimation(); } } @@ -663,7 +636,14 @@ public class ValueAnimator extends Animator { @Override public void run() { mAnimationScheduled = false; - doAnimationFrame(); + doAnimationFrame(mChoreographer.getFrameTime()); + } + + private void scheduleAnimation() { + if (!mAnimationScheduled) { + mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, this, null); + mAnimationScheduled = true; + } } } @@ -935,7 +915,7 @@ public class ValueAnimator extends Animator { mRunning = true; notifyStartListeners(); } - animationHandler.sendEmptyMessage(ANIMATION_START); + animationHandler.start(); } @Override @@ -1098,17 +1078,6 @@ public class ValueAnimator extends Animator { */ boolean animationFrame(long currentTime) { boolean done = false; - - if (mPlayingState == STOPPED) { - mPlayingState = RUNNING; - if (mSeekTime < 0) { - mStartTime = currentTime; - } else { - mStartTime = currentTime - mSeekTime; - // Now that we're playing, reset the seek time - mSeekTime = -1; - } - } switch (mPlayingState) { case RUNNING: case SEEKED: @@ -1144,6 +1113,31 @@ public class ValueAnimator extends Animator { } /** + * Processes a frame of the animation, adjusting the start time if needed. + * + * @param frameTime The frame time. + * @return true if the animation has ended. + */ + final boolean doAnimationFrame(long frameTime) { + if (mPlayingState == STOPPED) { + mPlayingState = RUNNING; + if (mSeekTime < 0) { + mStartTime = frameTime; + } else { + mStartTime = frameTime - mSeekTime; + // Now that we're playing, reset the seek time + mSeekTime = -1; + } + } + // The frame time might be before the start time during the first frame of + // an animation. The "current time" must always be on or after the start + // time to avoid animating frames at negative time intervals. In practice, this + // is very rare and only happens when seeking backwards. + final long currentTime = Math.max(frameTime, mStartTime); + return animationFrame(currentTime); + } + + /** * Returns the current animation fraction, which is the elapsed/interpolated fraction used in * the most recent frame update on the animation. * diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 906ea6a449bb..29d96feb790c 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -2710,11 +2710,11 @@ public class Activity extends ContextThemeWrapper Intent upIntent = getParentActivityIntent(); if (upIntent != null) { if (shouldUpRecreateTask(upIntent)) { - TaskStackBuilder b = TaskStackBuilder.from(this); + TaskStackBuilder b = TaskStackBuilder.create(this); onCreateNavigateUpTaskStack(b); onPrepareNavigateUpTaskStack(b); b.startActivities(); - finish(); + finishAffinity(); } else { navigateUpTo(upIntent); } @@ -2742,6 +2742,10 @@ public class Activity extends ContextThemeWrapper * may choose to override this method to construct the desired task stack in a different * way.</p> * + * <p>This method will be invoked by the default implementation of {@link #onNavigateUp()} + * if {@link #shouldUpRecreateTask(Intent)} returns true when supplied with the intent + * returned by {@link #getParentActivityIntent()}.</p> + * * <p>Applications that wish to supply extra Intent parameters to the parent stack defined * by the manifest should override {@link #onPrepareNavigateUpTaskStack(TaskStackBuilder)}.</p> * @@ -4093,6 +4097,36 @@ public class Activity extends ContextThemeWrapper } /** + * Finish this activity as well as all activities immediately below it + * in the current task that have the same affinity. This is typically + * used when an application can be launched on to another task (such as + * from an ACTION_VIEW of a content type it understands) and the user + * has used the up navigation to switch out of the current task and in + * to its own task. In this case, if the user has navigated down into + * any other activities of the second application, all of those should + * be removed from the original task as part of the task switch. + * + * <p>Note that this finish does <em>not</em> allow you to deliver results + * to the previous activity, and an exception will be thrown if you are trying + * to do so.</p> + */ + public void finishAffinity() { + if (mParent != null) { + throw new IllegalStateException("Can not be called from an embedded activity"); + } + if (mResultCode != RESULT_CANCELED || mResultData != null) { + throw new IllegalStateException("Can not be called to deliver a result"); + } + try { + if (ActivityManagerNative.getDefault().finishActivityAffinity(mToken)) { + mFinished = true; + } + } catch (RemoteException e) { + // Empty + } + } + + /** * This is called when a child activity of this one calls its * {@link #finish} method. The default implementation simply calls * finish() on this activity (the parent), finishing the entire group. @@ -4816,8 +4850,13 @@ public class Activity extends ContextThemeWrapper * Navigate from this activity to the activity specified by upIntent, finishing this activity * in the process. If the activity indicated by upIntent already exists in the task's history, * this activity and all others before the indicated activity in the history stack will be - * finished. If the indicated activity does not appear in the history stack, this is equivalent - * to simply calling finish() on this activity. + * finished. + * + * <p>If the indicated activity does not appear in the history stack, this will finish + * each activity in this task until the root activity of the task is reached, resulting in + * an "in-app home" behavior. This can be useful in apps with a complex navigation hierarchy + * when an activity may be reached by a path not passing through a canonical parent + * activity.</p> * * <p>This method should be used when performing up navigation from within the same task * as the destination. If up navigation should cross tasks in some cases, see diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 11b4c3ad831e..7746ca9aec23 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -502,7 +502,16 @@ public class ActivityManager { /** * Return a list of the tasks that the user has recently launched, with * the most recent being first and older ones after in order. - * + * + * <p><b>Note: this method is only intended for debugging and presenting + * task management user interfaces</b>. This should never be used for + * core logic in an application, such as deciding between different + * behaviors based on the information found here. Such uses are + * <em>not</em> supported, and will likely break in the future. For + * example, if multiple applications can be actively running at the + * same time, assumptions made about the meaning of the data here for + * purposes of control flow will be incorrect.</p> + * * @param maxNum The maximum number of entries to return in the list. The * actual number returned may be smaller, depending on how many tasks the * user has started and the maximum number the system can remember. @@ -669,6 +678,15 @@ public class ActivityManager { * can be restarted in its previous state when next brought to the * foreground. * + * <p><b>Note: this method is only intended for debugging and presenting + * task management user interfaces</b>. This should never be used for + * core logic in an application, such as deciding between different + * behaviors based on the information found here. Such uses are + * <em>not</em> supported, and will likely break in the future. For + * example, if multiple applications can be actively running at the + * same time, assumptions made about the meaning of the data here for + * purposes of control flow will be incorrect.</p> + * * @param maxNum The maximum number of entries to return in the list. The * actual number returned may be smaller, depending on how many tasks the * user has started. @@ -1016,7 +1034,10 @@ public class ActivityManager { /** * Return a list of the services that are currently running. - * + * + * <p><b>Note: this method is only intended for debugging or implementing + * service management type user interfaces.</b></p> + * * @param maxNum The maximum number of entries to return in the list. The * actual number returned may be smaller, depending on how many services * are running. @@ -1128,6 +1149,16 @@ public class ActivityManager { } } + /** + * Return general information about the memory state of the system. This + * can be used to help decide how to manage your own memory, though note + * that polling is not recommended and + * {@link android.content.ComponentCallbacks2#onTrimMemory(int) + * ComponentCallbacks2.onTrimMemory(int)} is the preferred way to do this. + * Also see {@link #getMyMemoryState} for how to retrieve the current trim + * level of your process as needed, which gives a better hint for how to + * manage its memory. + */ public void getMemoryInfo(MemoryInfo outInfo) { try { ActivityManagerNative.getDefault().getMemoryInfo(outInfo); @@ -1497,6 +1528,9 @@ public class ActivityManager { * Returns a list of application processes installed on external media * that are running on the device. * + * <p><b>Note: this method is only intended for debugging or building + * a user-facing process management UI.</b></p> + * * @return Returns a list of ApplicationInfo records, or null if none * This list ordering is not specified. * @hide @@ -1511,7 +1545,10 @@ public class ActivityManager { /** * Returns a list of application processes that are running on the device. - * + * + * <p><b>Note: this method is only intended for debugging or building + * a user-facing process management UI.</b></p> + * * @return Returns a list of RunningAppProcessInfo records, or null if there are no * running processes (it will not return an empty list). This list ordering is not * specified. @@ -1544,7 +1581,10 @@ public class ActivityManager { /** * Return information about the memory usage of one or more processes. - * + * + * <p><b>Note: this method is only intended for debugging or building + * a user-facing process management UI.</b></p> + * * @param pids The pids of the processes whose memory usage is to be * retrieved. * @return Returns an array of memory information, one for each @@ -1647,6 +1687,8 @@ public class ActivityManager { return DisplayMetrics.DENSITY_MEDIUM; case DisplayMetrics.DENSITY_MEDIUM: return DisplayMetrics.DENSITY_HIGH; + case DisplayMetrics.DENSITY_TV: + return DisplayMetrics.DENSITY_XHIGH; case DisplayMetrics.DENSITY_HIGH: return DisplayMetrics.DENSITY_XHIGH; case DisplayMetrics.DENSITY_XHIGH: @@ -1656,7 +1698,7 @@ public class ActivityManager { default: // The density is some abnormal value. Return some other // abnormal value that is a reasonable scaling of it. - return (int)(density*1.5f); + return (int)((density*1.5f)+.5f); } } @@ -1683,6 +1725,8 @@ public class ActivityManager { return (size * DisplayMetrics.DENSITY_MEDIUM) / DisplayMetrics.DENSITY_LOW; case DisplayMetrics.DENSITY_MEDIUM: return (size * DisplayMetrics.DENSITY_HIGH) / DisplayMetrics.DENSITY_MEDIUM; + case DisplayMetrics.DENSITY_TV: + return (size * DisplayMetrics.DENSITY_XHIGH) / DisplayMetrics.DENSITY_HIGH; case DisplayMetrics.DENSITY_HIGH: return (size * DisplayMetrics.DENSITY_XHIGH) / DisplayMetrics.DENSITY_HIGH; case DisplayMetrics.DENSITY_XHIGH: @@ -1692,7 +1736,7 @@ public class ActivityManager { default: // The density is some abnormal value. Return some other // abnormal value that is a reasonable scaling of it. - return (int)(size*1.5f); + return (int)((size*1.5f) + .5f); } } diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 7e1589f6c9f7..2f2918d8ccbd 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -218,7 +218,7 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM reply.writeInt(result ? 1 : 0); return true; } - + case FINISH_ACTIVITY_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); @@ -243,6 +243,15 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } + case FINISH_ACTIVITY_AFFINITY_TRANSACTION: { + data.enforceInterface(IActivityManager.descriptor); + IBinder token = data.readStrongBinder(); + boolean res = finishActivityAffinity(token); + reply.writeNoException(); + reply.writeInt(res ? 1 : 0); + return true; + } + case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); @@ -1866,6 +1875,18 @@ class ActivityManagerProxy implements IActivityManager data.recycle(); reply.recycle(); } + public boolean finishActivityAffinity(IBinder token) throws RemoteException { + Parcel data = Parcel.obtain(); + Parcel reply = Parcel.obtain(); + data.writeInterfaceToken(IActivityManager.descriptor); + data.writeStrongBinder(token); + mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); + reply.readException(); + boolean res = reply.readInt() != 0; + data.recycle(); + reply.recycle(); + return res; + } public boolean willActivityBeVisible(IBinder token) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 423b02a8ddaf..b73058140bd9 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -325,10 +325,11 @@ public class ActivityOptions { } /** - * Join the values in <var>otherOptions</var> in to this one. Any values + * Update the current values in this ActivityOptions from those supplied + * in <var>otherOptions</var>. Any values * defined in <var>otherOptions</var> replace those in the base options. */ - public void join(ActivityOptions otherOptions) { + public void update(ActivityOptions otherOptions) { if (otherOptions.mPackageName != null) { mPackageName = otherOptions.mPackageName; } diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index e2e791b1abba..b55ee26a500b 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -61,6 +61,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.StrictMode; import android.os.SystemClock; +import android.os.Trace; import android.os.UserId; import android.util.AndroidRuntimeException; import android.util.DisplayMetrics; @@ -1177,49 +1178,73 @@ public final class ActivityThread { if (DEBUG_MESSAGES) Slog.v(TAG, ">>> handling: " + msg.what); switch (msg.what) { case LAUNCH_ACTIVITY: { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityStart"); ActivityClientRecord r = (ActivityClientRecord)msg.obj; r.packageInfo = getPackageInfoNoCheck( r.activityInfo.applicationInfo, r.compatInfo); handleLaunchActivity(r, null); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } break; case RELAUNCH_ACTIVITY: { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityRestart"); ActivityClientRecord r = (ActivityClientRecord)msg.obj; handleRelaunchActivity(r); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } break; case PAUSE_ACTIVITY: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityPause"); handlePauseActivity((IBinder)msg.obj, false, msg.arg1 != 0, msg.arg2); maybeSnapshot(); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case PAUSE_ACTIVITY_FINISHING: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityPause"); handlePauseActivity((IBinder)msg.obj, true, msg.arg1 != 0, msg.arg2); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case STOP_ACTIVITY_SHOW: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityStop"); handleStopActivity((IBinder)msg.obj, true, msg.arg2); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case STOP_ACTIVITY_HIDE: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityStop"); handleStopActivity((IBinder)msg.obj, false, msg.arg2); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SHOW_WINDOW: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityShowWindow"); handleWindowVisibility((IBinder)msg.obj, true); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case HIDE_WINDOW: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityHideWindow"); handleWindowVisibility((IBinder)msg.obj, false); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case RESUME_ACTIVITY: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityResume"); handleResumeActivity((IBinder)msg.obj, true, msg.arg1 != 0); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SEND_RESULT: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityDeliverResult"); handleSendResult((ResultData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case DESTROY_ACTIVITY: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityDestroy"); handleDestroyActivity((IBinder)msg.obj, msg.arg1 != 0, msg.arg2, false); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case BIND_APPLICATION: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "bindApplication"); AppBindData data = (AppBindData)msg.obj; handleBindApplication(data); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case EXIT_APPLICATION: if (mInitialApplication != null) { @@ -1228,33 +1253,51 @@ public final class ActivityThread { Looper.myLooper().quit(); break; case NEW_INTENT: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityNewIntent"); handleNewIntent((NewIntentData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case RECEIVER: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "broadcastReceiveComp"); handleReceiver((ReceiverData)msg.obj); maybeSnapshot(); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case CREATE_SERVICE: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "serviceCreate"); handleCreateService((CreateServiceData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case BIND_SERVICE: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "serviceBind"); handleBindService((BindServiceData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case UNBIND_SERVICE: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "serviceUnbind"); handleUnbindService((BindServiceData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SERVICE_ARGS: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "serviceStart"); handleServiceArgs((ServiceArgsData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case STOP_SERVICE: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "serviceStop"); handleStopService((IBinder)msg.obj); maybeSnapshot(); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case REQUEST_THUMBNAIL: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "requestThumbnail"); handleRequestThumbnail((IBinder)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case CONFIGURATION_CHANGED: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "configChanged"); handleConfigurationChanged((Configuration)msg.obj, null); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case CLEAN_UP_CONTEXT: ContextCleanupInfo cci = (ContextCleanupInfo)msg.obj; @@ -1267,31 +1310,43 @@ public final class ActivityThread { handleDumpService((DumpComponentInfo)msg.obj); break; case LOW_MEMORY: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "lowMemory"); handleLowMemory(); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case ACTIVITY_CONFIGURATION_CHANGED: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityConfigChanged"); handleActivityConfigurationChanged((IBinder)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case PROFILER_CONTROL: handleProfilerControl(msg.arg1 != 0, (ProfilerControlData)msg.obj, msg.arg2); break; case CREATE_BACKUP_AGENT: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backupCreateAgent"); handleCreateBackupAgent((CreateBackupAgentData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case DESTROY_BACKUP_AGENT: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backupDestroyAgent"); handleDestroyBackupAgent((CreateBackupAgentData)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SUICIDE: Process.killProcess(Process.myPid()); break; case REMOVE_PROVIDER: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "providerRemove"); completeRemoveProvider((IContentProvider)msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case ENABLE_JIT: ensureJitEnabled(); break; case DISPATCH_PACKAGE_BROADCAST: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "broadcastPackage"); handleDispatchPackageBroadcast(msg.arg1, (String[])msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SCHEDULE_CRASH: throw new RemoteServiceException((String)msg.obj); @@ -1305,16 +1360,22 @@ public final class ActivityThread { handleDumpProvider((DumpComponentInfo)msg.obj); break; case SLEEPING: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "sleeping"); handleSleeping((IBinder)msg.obj, msg.arg1 != 0); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SET_CORE_SETTINGS: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "setCoreSettings"); handleSetCoreSettings((Bundle) msg.obj); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case UPDATE_PACKAGE_COMPATIBILITY_INFO: handleUpdatePackageCompatibilityInfo((UpdateCompatibilityData)msg.obj); break; case TRIM_MEMORY: + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "trimMemory"); handleTrimMemory(msg.arg1); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; } if (DEBUG_MESSAGES) Slog.v(TAG, "<<< done: " + msg.what); @@ -3782,7 +3843,7 @@ public final class ActivityThread { windowManager.endTrimMemory(); } - private void setupGraphicsSupport(LoadedApk info) { + private void setupGraphicsSupport(LoadedApk info, File cacheDir) { if (Process.isIsolated()) { // Isolated processes aren't going to do UI. return; @@ -3794,11 +3855,8 @@ public final class ActivityThread { // If there are several packages in this application we won't // initialize the graphics disk caches if (packages != null && packages.length == 1) { - ContextImpl appContext = new ContextImpl(); - appContext.init(info, null, this); - - HardwareRenderer.setupDiskCache(appContext.getCacheDir()); - RenderScript.setupDiskCache(appContext.getCacheDir()); + HardwareRenderer.setupDiskCache(cacheDir); + RenderScript.setupDiskCache(cacheDir); } } catch (RemoteException e) { // Ignore @@ -3864,8 +3922,15 @@ public final class ActivityThread { data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); - setupGraphicsSupport(data.info); - + final ContextImpl appContext = new ContextImpl(); + appContext.init(data.info, null, this); + final File cacheDir = appContext.getCacheDir(); + + // Provide a usable directory for temporary files + System.setProperty("java.io.tmpdir", cacheDir.getAbsolutePath()); + + setupGraphicsSupport(data.info, cacheDir); + /** * For system applications on userdebug/eng builds, log stack * traces of disk and network access to dropbox for analysis. @@ -3942,8 +4007,6 @@ public final class ActivityThread { } if (data.instrumentationName != null) { - ContextImpl appContext = new ContextImpl(); - appContext.init(data.info, null, this); InstrumentationInfo ii = null; try { ii = appContext.getPackageManager(). diff --git a/core/java/android/app/DatePickerDialog.java b/core/java/android/app/DatePickerDialog.java index c62e5cf60466..3f0b4d4add92 100644 --- a/core/java/android/app/DatePickerDialog.java +++ b/core/java/android/app/DatePickerDialog.java @@ -16,17 +16,20 @@ package android.app; -import com.android.internal.R; - import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; +import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; +import com.android.internal.R; + +import java.util.Calendar; + /** * A simple dialog containing an {@link android.widget.DatePicker}. * @@ -42,6 +45,9 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, private final DatePicker mDatePicker; private final OnDateSetListener mCallBack; + private final Calendar mCalendar; + + private boolean mTitleNeedsUpdate = true; /** * The callback used to indicate the user is done filling in the date. @@ -91,10 +97,11 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, mCallBack = callBack; + mCalendar = Calendar.getInstance(); + Context themeContext = getContext(); setButton(BUTTON_POSITIVE, themeContext.getText(R.string.date_time_done), this); setIcon(0); - setTitle(R.string.date_picker_dialog_title); LayoutInflater inflater = (LayoutInflater) themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); @@ -102,6 +109,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, setView(view); mDatePicker = (DatePicker) view.findViewById(R.id.datePicker); mDatePicker.init(year, monthOfYear, dayOfMonth, this); + updateTitle(year, monthOfYear, dayOfMonth); } public void onClick(DialogInterface dialog, int which) { @@ -110,7 +118,8 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, public void onDateChanged(DatePicker view, int year, int month, int day) { - mDatePicker.init(year, month, day, null); + mDatePicker.init(year, month, day, this); + updateTitle(year, month, day); } /** @@ -147,6 +156,28 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, super.onStop(); } + private void updateTitle(int year, int month, int day) { + if (!mDatePicker.getCalendarViewShown()) { + mCalendar.set(Calendar.YEAR, year); + mCalendar.set(Calendar.MONTH, month); + mCalendar.set(Calendar.DAY_OF_MONTH, day); + String title = DateUtils.formatDateTime(mContext, + mCalendar.getTimeInMillis(), + DateUtils.FORMAT_SHOW_DATE + | DateUtils.FORMAT_SHOW_WEEKDAY + | DateUtils.FORMAT_SHOW_YEAR + | DateUtils.FORMAT_ABBREV_MONTH + | DateUtils.FORMAT_ABBREV_WEEKDAY); + setTitle(title); + mTitleNeedsUpdate = true; + } else { + if (mTitleNeedsUpdate) { + mTitleNeedsUpdate = false; + setTitle(R.string.date_picker_dialog_title); + } + } + } + @Override public Bundle onSaveInstanceState() { Bundle state = super.onSaveInstanceState(); diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index f04ff6a6b9a5..4a5b8ebd4645 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -103,7 +103,6 @@ public class Dialog implements DialogInterface, Window.Callback, private boolean mShowing = false; private boolean mCanceled = false; - private final Thread mUiThread; private final Handler mHandler = new Handler(); private static final int DISMISS = 0x43; @@ -162,7 +161,6 @@ public class Dialog implements DialogInterface, Window.Callback, w.setCallback(this); w.setWindowManager(mWindowManager, null, null); w.setGravity(Gravity.CENTER); - mUiThread = Thread.currentThread(); mListenersHandler = new ListenersHandler(this); } @@ -299,12 +297,7 @@ public class Dialog implements DialogInterface, Window.Callback, * that in {@link #onStop}. */ public void dismiss() { - if (Thread.currentThread() != mUiThread) { - mHandler.post(mDismissAction); - } else { - mHandler.removeCallbacks(mDismissAction); - mDismissAction.run(); - } + mHandler.post(mDismissAction); } void dismissDialog() { diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java index 071312714752..93f732ce2d70 100644 --- a/core/java/android/app/DownloadManager.java +++ b/core/java/android/app/DownloadManager.java @@ -1155,7 +1155,7 @@ public class DownloadManager { validateArgumentIsNonEmpty("description", description); validateArgumentIsNonEmpty("path", path); validateArgumentIsNonEmpty("mimeType", mimeType); - if (length <= 0) { + if (length < 0) { throw new IllegalArgumentException(" invalid value for param: totalBytes"); } diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index 3fc228076791..a2c7fa4423c7 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -72,6 +72,7 @@ public interface IActivityManager extends IInterface { public boolean finishActivity(IBinder token, int code, Intent data) throws RemoteException; public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException; + public boolean finishActivityAffinity(IBinder token) throws RemoteException; public boolean willActivityBeVisible(IBinder token) throws RemoteException; public Intent registerReceiver(IApplicationThread caller, String callerPackage, IIntentReceiver receiver, IntentFilter filter, @@ -590,4 +591,5 @@ public interface IActivityManager extends IInterface { int TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+145; int NAVIGATE_UP_TO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+146; int SET_LOCK_SCREEN_SHOWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+147; + int FINISH_ACTIVITY_AFFINITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+148; } diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index 8ab1ed66409d..be4b2844c0b1 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -36,6 +36,7 @@ import android.os.IBinder; import android.os.Process; import android.os.RemoteException; import android.os.StrictMode; +import android.os.Trace; import android.os.UserId; import android.util.AndroidRuntimeException; import android.util.Slog; @@ -745,6 +746,7 @@ public final class LoadedApk { return; } + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "broadcastReceiveReg"); try { ClassLoader cl = mReceiver.getClass().getClassLoader(); intent.setExtrasClassLoader(cl); @@ -759,6 +761,7 @@ public final class LoadedApk { } if (mInstrumentation == null || !mInstrumentation.onException(mReceiver, e)) { + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); throw new RuntimeException( "Error receiving broadcast " + intent + " in " + mReceiver, e); @@ -768,6 +771,7 @@ public final class LoadedApk { if (receiver.getPendingResult() != null) { finish(); } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 0a996dfaec9b..2951476a93bd 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -21,6 +21,7 @@ import com.android.internal.R; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; +import android.media.AudioManager; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; @@ -213,7 +214,7 @@ public class Notification implements Parcelable /** * Use this constant as the value for audioStreamType to request that * the default stream type for notifications be used. Currently the - * default stream type is STREAM_RING. + * default stream type is {@link AudioManager#STREAM_NOTIFICATION}. */ public static final int STREAM_DEFAULT = -1; @@ -887,7 +888,7 @@ public class Notification implements Parcelable * .setContentText(subject) * .setSmallIcon(R.drawable.new_mail) * .setLargeIcon(aBitmap) - * .getNotification(); + * .build(); * </pre> */ public static class Builder { @@ -924,6 +925,7 @@ public class Notification implements Parcelable private int mPriority; private ArrayList<Action> mActions = new ArrayList<Action>(3); private boolean mUseChronometer; + private Style mStyle; /** * Constructs a new Builder with the defaults: @@ -1304,7 +1306,7 @@ public class Notification implements Parcelable * Add metadata to this notification. * * A reference to the Bundle is held for the lifetime of this Builder, and the Bundle's - * current contents are copied into the Notification each time {@link #getNotification()} is + * current contents are copied into the Notification each time {@link #build()} is * called. * * @see Notification#extras @@ -1328,6 +1330,19 @@ public class Notification implements Parcelable return this; } + /** + * Add a rich notification style to be applied at build time. + * + * @param style Object responsible for modifying the notification style. + */ + public Builder setStyle(Style style) { + if (mStyle != style) { + mStyle = style; + mStyle.setBuilder(this); + } + return this; + } + private void setFlag(int mask, boolean value) { if (value) { mFlags |= mask; @@ -1382,7 +1397,8 @@ public class Notification implements Parcelable if (mSubText != null) { contentView.setTextViewText(R.id.text, mSubText); - contentView.setViewVisibility(R.id.text2, View.VISIBLE); + contentView.setViewVisibility(R.id.text2, + mContentText != null ? View.VISIBLE : View.GONE); } else { contentView.setViewVisibility(R.id.text2, View.GONE); if (mProgressMax != 0 || mProgressIndeterminate) { @@ -1413,12 +1429,12 @@ public class Notification implements Parcelable int N = mActions.size(); if (N > 0) { - Log.d("Notification", "has actions: " + mContentText); + // Log.d("Notification", "has actions: " + mContentText); big.setViewVisibility(R.id.actions, View.VISIBLE); if (N>3) N=3; for (int i=0; i<N; i++) { final RemoteViews button = generateActionButton(mActions.get(i)); - Log.d("Notification", "adding action " + i + ": " + mActions.get(i).title); + //Log.d("Notification", "adding action " + i + ": " + mActions.get(i).title); big.addView(R.id.actions, button); } } @@ -1463,10 +1479,9 @@ public class Notification implements Parcelable } /** - * Combine all of the options that have been set and return a new {@link Notification} - * object. + * Apply the unstyled operations and return a new {@link Notification} object. */ - public Notification getNotification() { + private Notification buildUnstyled() { Notification n = new Notification(); n.when = mWhen; n.icon = mSmallIcon; @@ -1508,6 +1523,98 @@ public class Notification implements Parcelable } return n; } + + /** + * @deprecated Use {@link #build()} instead. + */ + @Deprecated + public Notification getNotification() { + return build(); + } + + /** + * Combine all of the options that have been set and return a new {@link Notification} + * object. + */ + public Notification build() { + if (mStyle != null) { + return mStyle.build(); + } else { + return buildUnstyled(); + } + } + } + + + /** + * An object that can apply a rich notification style to a {@link Notification.Builder} + * object. + */ + public static abstract class Style + { + private CharSequence mBigContentTitle; + private CharSequence mSummaryText = null; + + protected Builder mBuilder; + + /** + * Overrides ContentTitle in the big form of the template. + * This defaults to the value passed to setContentTitle(). + */ + protected void internalSetBigContentTitle(CharSequence title) { + mBigContentTitle = title; + } + + /** + * Set the first line of text after the detail section in the big form of the template. + */ + protected void internalSetSummaryText(CharSequence cs) { + mSummaryText = cs; + } + + public void setBuilder(Builder builder) { + if (mBuilder != builder) { + mBuilder = builder; + mBuilder.setStyle(this); + } + } + + protected void checkBuilder() { + if (mBuilder == null) { + throw new IllegalArgumentException("Style requires a valid Builder object"); + } + } + + protected RemoteViews getStandardView(int layoutId) { + checkBuilder(); + + if (mBigContentTitle != null) { + mBuilder.setContentTitle(mBigContentTitle); + } + + if (mBuilder.mSubText == null) { + mBuilder.setContentText(null); + } + + RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(layoutId); + + if (mBuilder.mSubText == null) { + contentView.setViewVisibility(R.id.line3, View.GONE); + } + + if (mBigContentTitle != null && mBigContentTitle.equals("")) { + contentView.setViewVisibility(R.id.line1, View.GONE); + } + + if (mSummaryText != null && !mSummaryText.equals("")) { + contentView.setViewVisibility(R.id.overflow_title, View.VISIBLE); + contentView.setTextViewText(R.id.overflow_title, mSummaryText); + } + + return contentView; + } + + public abstract Notification build(); } /** @@ -1527,12 +1634,31 @@ public class Notification implements Parcelable * * @see Notification#bigContentView */ - public static class BigPictureStyle { - private Builder mBuilder; + public static class BigPictureStyle extends Style { private Bitmap mPicture; + public BigPictureStyle() { + } + public BigPictureStyle(Builder builder) { - mBuilder = builder; + setBuilder(builder); + } + + /** + * Overrides ContentTitle in the big form of the template. + * This defaults to the value passed to setContentTitle(). + */ + public BigPictureStyle setBigContentTitle(CharSequence title) { + internalSetBigContentTitle(title); + return this; + } + + /** + * Set the first line of text after the detail section in the big form of the template. + */ + public BigPictureStyle setSummaryText(CharSequence cs) { + internalSetSummaryText(cs); + return this; } public BigPictureStyle bigPicture(Bitmap b) { @@ -1541,15 +1667,17 @@ public class Notification implements Parcelable } private RemoteViews makeBigContentView() { - RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_big_picture); + RemoteViews contentView = getStandardView(R.layout.notification_template_big_picture); contentView.setImageViewBitmap(R.id.big_picture, mPicture); return contentView; } + @Override public Notification build() { - Notification wip = mBuilder.getNotification(); + checkBuilder(); + Notification wip = mBuilder.buildUnstyled(); wip.bigContentView = makeBigContentView(); return wip; } @@ -1572,12 +1700,31 @@ public class Notification implements Parcelable * * @see Notification#bigContentView */ - public static class BigTextStyle { - private Builder mBuilder; + public static class BigTextStyle extends Style { private CharSequence mBigText; + public BigTextStyle() { + } + public BigTextStyle(Builder builder) { - mBuilder = builder; + setBuilder(builder); + } + + /** + * Overrides ContentTitle in the big form of the template. + * This defaults to the value passed to setContentTitle(). + */ + public BigTextStyle setBigContentTitle(CharSequence title) { + internalSetBigContentTitle(title); + return this; + } + + /** + * Set the first line of text after the detail section in the big form of the template. + */ + public BigTextStyle setSummaryText(CharSequence cs) { + internalSetSummaryText(cs); + return this; } public BigTextStyle bigText(CharSequence cs) { @@ -1586,17 +1733,18 @@ public class Notification implements Parcelable } private RemoteViews makeBigContentView() { - RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_big_text); - + RemoteViews contentView = getStandardView(R.layout.notification_template_big_text); contentView.setTextViewText(R.id.big_text, mBigText); contentView.setViewVisibility(R.id.big_text, View.VISIBLE); - contentView.setTextViewText(R.id.text, ""); // XXX: what do do with this spot? + contentView.setViewVisibility(R.id.text2, View.GONE); return contentView; } + @Override public Notification build() { - Notification wip = mBuilder.getNotification(); + checkBuilder(); + Notification wip = mBuilder.buildUnstyled(); wip.bigContentView = makeBigContentView(); return wip; } @@ -1607,25 +1755,46 @@ public class Notification implements Parcelable * * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so: * <pre class="prettyprint"> - * Notification noti = new Notification.DigestStyle( + * Notification noti = new Notification.InboxStyle( * new Notification.Builder() - * .setContentTitle("New mail from " + sender.toString()) + * .setContentTitle("5 New mails from " + sender.toString()) * .setContentText(subject) * .setSmallIcon(R.drawable.new_mail) * .setLargeIcon(aBitmap)) * .addLine(str1) * .addLine(str2) + * .setContentTitle("") + * .setSummaryText("+3 more") * .build(); * </pre> * * @see Notification#bigContentView */ - public static class InboxStyle { - private Builder mBuilder; + public static class InboxStyle extends Style { private ArrayList<CharSequence> mTexts = new ArrayList<CharSequence>(5); + public InboxStyle() { + } + public InboxStyle(Builder builder) { - mBuilder = builder; + setBuilder(builder); + } + + /** + * Overrides ContentTitle in the big form of the template. + * This defaults to the value passed to setContentTitle(). + */ + public InboxStyle setBigContentTitle(CharSequence title) { + internalSetBigContentTitle(title); + return this; + } + + /** + * Set the first line of text after the detail section in the big form of the template. + */ + public InboxStyle setSummaryText(CharSequence cs) { + internalSetSummaryText(cs); + return this; } public InboxStyle addLine(CharSequence cs) { @@ -1634,10 +1803,12 @@ public class Notification implements Parcelable } private RemoteViews makeBigContentView() { - RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_inbox); + RemoteViews contentView = getStandardView(R.layout.notification_template_inbox); + contentView.setViewVisibility(R.id.text2, View.GONE); + + int[] rowIds = {R.id.inbox_text0, R.id.inbox_text1, R.id.inbox_text2, R.id.inbox_text3, + R.id.inbox_text4}; - int[] rowIds = {R.id.inbox_text0, R.id.inbox_text1, R.id.inbox_text2, R.id.inbox_text3, R.id.inbox_text4}; - int i=0; while (i < mTexts.size() && i < rowIds.length) { CharSequence str = mTexts.get(i); @@ -1651,8 +1822,10 @@ public class Notification implements Parcelable return contentView; } + @Override public Notification build() { - Notification wip = mBuilder.getNotification(); + checkBuilder(); + Notification wip = mBuilder.buildUnstyled(); wip.bigContentView = makeBigContentView(); return wip; } diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index 2ff45fb5ab1d..691ee301cd00 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -395,11 +395,7 @@ public class SearchManager /** * Intent action to be broadcast to inform that the global search provider - * has changed. Normal components will have no need to handle this intent since - * they should be using API methods from this class to access the global search - * activity - * - * @hide + * has changed. */ public final static String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED"; @@ -590,8 +586,6 @@ public class SearchManager /** * Gets the name of the global search activity. - * - * @hide */ public ComponentName getGlobalSearchActivity() { try { diff --git a/core/java/android/app/TaskStackBuilder.java b/core/java/android/app/TaskStackBuilder.java index e2d28dd9766c..e546f6c584f4 100644 --- a/core/java/android/app/TaskStackBuilder.java +++ b/core/java/android/app/TaskStackBuilder.java @@ -22,10 +22,10 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Bundle; import android.util.Log; import java.util.ArrayList; -import java.util.Iterator; /** * Utility class for constructing synthetic back stacks for cross-task navigation @@ -56,7 +56,7 @@ import java.util.Iterator; * from the design guide. * </div> */ -public class TaskStackBuilder implements Iterable<Intent> { +public class TaskStackBuilder { private static final String TAG = "TaskStackBuilder"; private final ArrayList<Intent> mIntents = new ArrayList<Intent>(); @@ -73,7 +73,7 @@ public class TaskStackBuilder implements Iterable<Intent> { * @param context The context that will launch the new task stack or generate a PendingIntent * @return A new TaskStackBuilder */ - public static TaskStackBuilder from(Context context) { + public static TaskStackBuilder create(Context context) { return new TaskStackBuilder(context); } @@ -90,6 +90,30 @@ public class TaskStackBuilder implements Iterable<Intent> { } /** + * Add a new Intent with the resolved chain of parents for the target activity to + * the task stack. + * + * <p>This is equivalent to calling {@link #addParentStack(ComponentName) addParentStack} + * with the resolved ComponentName of nextIntent (if it can be resolved), followed by + * {@link #addNextIntent(Intent) addNextIntent} with nextIntent.</p> + * + * @param nextIntent Intent for the topmost Activity in the synthesized task stack. + * Its chain of parents as specified in the manifest will be added. + * @return This TaskStackBuilder for method chaining. + */ + public TaskStackBuilder addNextIntentWithParentStack(Intent nextIntent) { + ComponentName target = nextIntent.getComponent(); + if (target == null) { + target = nextIntent.resolveActivity(mSourceContext.getPackageManager()); + } + if (target != null) { + addParentStack(target); + } + addNextIntent(nextIntent); + return this; + } + + /** * Add the activity parent chain as specified by the * {@link Activity#getParentActivityIntent() getParentActivityIntent()} method of the activity * specified and the {@link android.R.attr#parentActivityName parentActivityName} attributes @@ -200,25 +224,32 @@ public class TaskStackBuilder implements Iterable<Intent> { } /** - * Get the intent at the specified index. + * Return the intent at the specified index for modification. * Useful if you need to modify the flags or extras of an intent that was previously added, * for example with {@link #addParentStack(Activity)}. * * @param index Index from 0-getIntentCount() * @return the intent at position index */ - public Intent getIntent(int index) { + public Intent editIntentAt(int index) { return mIntents.get(index); } - public Iterator<Intent> iterator() { - return mIntents.iterator(); + /** + * Start the task stack constructed by this builder. + */ + public void startActivities() { + startActivities(null); } /** * Start the task stack constructed by this builder. + * + * @param options Additional options for how the Activity should be started. + * See {@link android.content.Context#startActivity(Intent, Bundle) + * Context.startActivity(Intent, Bundle)} for more details. */ - public void startActivities() { + public void startActivities(Bundle options) { if (mIntents.isEmpty()) { throw new IllegalStateException( "No intents added to TaskStackBuilder; cannot startActivities"); @@ -228,7 +259,7 @@ public class TaskStackBuilder implements Iterable<Intent> { intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME); - mSourceContext.startActivities(intents); + mSourceContext.startActivities(intents, options); } /** @@ -240,9 +271,29 @@ public class TaskStackBuilder implements Iterable<Intent> { * {@link PendingIntent#FLAG_UPDATE_CURRENT}, or any of the flags supported by * {@link Intent#fillIn(Intent, int)} to control which unspecified parts of the * intent that can be supplied when the actual send happens. + * * @return The obtained PendingIntent */ public PendingIntent getPendingIntent(int requestCode, int flags) { + return getPendingIntent(requestCode, flags, null); + } + + /** + * Obtain a {@link PendingIntent} for launching the task constructed by this builder so far. + * + * @param requestCode Private request code for the sender + * @param flags May be {@link PendingIntent#FLAG_ONE_SHOT}, + * {@link PendingIntent#FLAG_NO_CREATE}, {@link PendingIntent#FLAG_CANCEL_CURRENT}, + * {@link PendingIntent#FLAG_UPDATE_CURRENT}, or any of the flags supported by + * {@link Intent#fillIn(Intent, int)} to control which unspecified parts of the + * intent that can be supplied when the actual send happens. + * @param options Additional options for how the Activity should be started. + * See {@link android.content.Context#startActivity(Intent, Bundle) + * Context.startActivity(Intent, Bundle)} for more details. + * + * @return The obtained PendingIntent + */ + public PendingIntent getPendingIntent(int requestCode, int flags, Bundle options) { if (mIntents.isEmpty()) { throw new IllegalStateException( "No intents added to TaskStackBuilder; cannot getPendingIntent"); @@ -252,6 +303,17 @@ public class TaskStackBuilder implements Iterable<Intent> { intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME); - return PendingIntent.getActivities(mSourceContext, requestCode, intents, flags); + return PendingIntent.getActivities(mSourceContext, requestCode, intents, flags, options); + } + + /** + * Return an array containing the intents added to this builder. The intent at the + * root of the task stack will appear as the first item in the array and the + * intent at the top of the stack will appear as the last item. + * + * @return An array containing the intents added to this builder. + */ + public Intent[] getIntents() { + return mIntents.toArray(new Intent[mIntents.size()]); } } diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index 6f19934a1bf0..3824f44ffc4d 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -637,6 +637,14 @@ public class WallpaperManager { * wallpaper it would like to use. This allows such applications to have * a virtual wallpaper that is larger than the physical screen, matching * the size of their workspace. + * + * <p>Note developers, who don't seem to be reading this. This is + * for <em>home screens</em> to tell what size wallpaper they would like. + * Nobody else should be calling this! Certainly not other non-home-screen + * apps that change the wallpaper. Those apps are supposed to + * <b>retrieve</b> the suggested size so they can construct a wallpaper + * that matches it. + * * @param minimumWidth Desired minimum width * @param minimumHeight Desired minimum height */ diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index c1b8e7ce2521..c9bacbad0125 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -207,43 +207,40 @@ public class AppWidgetHostView extends FrameLayout { super.dispatchRestoreInstanceState(jail); } - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int oldWidth = getMeasuredWidth(); - int oldHeight = getMeasuredHeight(); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int newWidth = getMeasuredWidth(); - int newHeight = getMeasuredHeight(); - - // TODO: this is just a hack for now -- we actually have the AppWidgetHost - // be responsible for updating the size of the widget. - if (oldWidth != newWidth || oldHeight != newHeight) { - final float density = mContext.getResources().getDisplayMetrics().density; - final int newWidthDips = (int) (newWidth / density); - final int newHeightDips = (int) (newHeight / density); - updateAppWidgetSize(null, newWidthDips, newHeightDips, newWidthDips, newHeightDips); - } - } - /** * Provide guidance about the size of this widget to the AppWidgetManager. This information * gets embedded into the AppWidgetExtras and causes a callback to the AppWidgetProvider. + * @see AppWidgetProvider#onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle) + * + * @param options The bundle of options, in addition to the size information, + * can be null. + * @param minWidth The minimum width that the widget will be displayed at. + * @param minHeight The maximum height that the widget will be displayed at. + * @param maxWidth The maximum width that the widget will be displayed at. + * @param maxHeight The maximum height that the widget will be displayed at. * - * @see AppWidgetProvider#onAppWidgetExtrasChanged(Context, AppWidgetManager, int, Bundle) */ - public void updateAppWidgetSize(Bundle extras, int minWidth, int minHeight, int maxWidth, int maxHeight) { - if (extras == null) { - extras = new Bundle(); + public void updateAppWidgetSize(Bundle options, int minWidth, int minHeight, int maxWidth, + int maxHeight) { + if (options == null) { + options = new Bundle(); } - extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MIN_WIDTH, minWidth); - extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MIN_HEIGHT, minHeight); - extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MAX_WIDTH, maxWidth); - extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MAX_HEIGHT, maxHeight); - updateAppWidgetExtras(extras); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, minWidth); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, minHeight); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH, maxWidth); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, maxHeight); + updateAppWidgetOptions(options); } - public void updateAppWidgetExtras(Bundle extras) { - AppWidgetManager.getInstance(mContext).updateAppWidgetExtras(mAppWidgetId, extras); + /** + * Specify some extra information for the widget provider. Causes a callback to the + * AppWidgetProvider. + * @see AppWidgetProvider#onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle) + * + * @param options The bundle of options information. + */ + public void updateAppWidgetOptions(Bundle options) { + AppWidgetManager.getInstance(mContext).updateAppWidgetOptions(mAppWidgetId, options); } /** {@inheritDoc} */ diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index f2e909ee6217..7a8c1fbc9eab 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -152,28 +152,28 @@ public class AppWidgetManager { /** * An bundle extra that contains the lower bound on the current width, in dips, of a widget instance. */ - public static final String EXTRA_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth"; + public static final String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth"; /** * An bundle extra that contains the lower bound on the current height, in dips, of a widget instance. */ - public static final String EXTRA_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight"; + public static final String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight"; /** * An bundle extra that contains the upper bound on the current width, in dips, of a widget instance. */ - public static final String EXTRA_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth"; + public static final String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth"; /** * An bundle extra that contains the upper bound on the current width, in dips, of a widget instance. */ - public static final String EXTRA_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight"; + public static final String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight"; /** * An intent extra which points to a bundle of extra information for a particular widget id. * In particular this bundle can contain EXTRA_APPWIDGET_WIDTH and EXTRA_APPWIDGET_HEIGHT. */ - public static final String EXTRA_APPWIDGET_EXTRAS = "appWidgetExtras"; + public static final String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions"; /** * An intent extra that contains multiple appWidgetIds. @@ -240,7 +240,7 @@ public class AppWidgetManager { * @see AppWidgetProvider#onAppWidgetExtrasChanged AppWidgetProvider#onAppWidgetExtrasChanged( * Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newExtras) */ - public static final String ACTION_APPWIDGET_EXTRAS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_EXTRAS"; + public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS"; /** * Sent when an instance of an AppWidget is deleted from its host. @@ -339,14 +339,14 @@ public class AppWidgetManager { * The extras can be used to embed additional information about this widget to be accessed * by the associated widget's AppWidgetProvider. * - * @see #getAppWidgetExtras(int) + * @see #getAppWidgetOptions(int) * * @param appWidgetId The AppWidget instances for which to set the RemoteViews. - * @param extras The extras to associate with this widget + * @param options The options to associate with this widget */ - public void updateAppWidgetExtras(int appWidgetId, Bundle extras) { + public void updateAppWidgetOptions(int appWidgetId, Bundle options) { try { - sService.updateAppWidgetExtras(appWidgetId, extras); + sService.updateAppWidgetOptions(appWidgetId, options); } catch (RemoteException e) { throw new RuntimeException("system server dead?", e); @@ -359,14 +359,14 @@ public class AppWidgetManager { * The extras can be used to embed additional information about this widget to be accessed * by the associated widget's AppWidgetProvider. * - * @see #updateAppWidgetExtras(int, Bundle) + * @see #updateAppWidgetOptions(int, Bundle) * * @param appWidgetId The AppWidget instances for which to set the RemoteViews. - * @return The extras associated with the given widget instance. + * @return The options associated with the given widget instance. */ - public Bundle getAppWidgetExtras(int appWidgetId) { + public Bundle getAppWidgetOptions(int appWidgetId) { try { - return sService.getAppWidgetExtras(appWidgetId); + return sService.getAppWidgetOptions(appWidgetId); } catch (RemoteException e) { throw new RuntimeException("system server dead?", e); diff --git a/core/java/android/appwidget/AppWidgetProvider.java b/core/java/android/appwidget/AppWidgetProvider.java index 3cf40aeee167..edf142b2726a 100755 --- a/core/java/android/appwidget/AppWidgetProvider.java +++ b/core/java/android/appwidget/AppWidgetProvider.java @@ -74,13 +74,13 @@ public class AppWidgetProvider extends BroadcastReceiver { this.onDeleted(context, new int[] { appWidgetId }); } } - else if (AppWidgetManager.ACTION_APPWIDGET_EXTRAS_CHANGED.equals(action)) { + else if (AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED.equals(action)) { Bundle extras = intent.getExtras(); if (extras != null && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID) - && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS)) { + && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS)) { int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); - Bundle widgetExtras = extras.getBundle(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS); - this.onAppWidgetExtrasChanged(context, AppWidgetManager.getInstance(context), + Bundle widgetExtras = extras.getBundle(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS); + this.onAppWidgetOptionsChanged(context, AppWidgetManager.getInstance(context), appWidgetId, widgetExtras); } } @@ -114,7 +114,7 @@ public class AppWidgetProvider extends BroadcastReceiver { } /** - * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_EXTRAS_CHANGED} + * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED} * broadcast when this widget has been layed out at a new size. * * {@more} @@ -124,12 +124,12 @@ public class AppWidgetProvider extends BroadcastReceiver { * @param appWidgetManager A {@link AppWidgetManager} object you can call {@link * AppWidgetManager#updateAppWidget} on. * @param appWidgetId The appWidgetId of the widget who's size changed. - * @param newExtras The appWidgetId of the widget who's size changed. + * @param newOptions The appWidgetId of the widget who's size changed. * - * @see AppWidgetManager#ACTION_APPWIDGET_EXTRAS_CHANGED + * @see AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED */ - public void onAppWidgetExtrasChanged(Context context, AppWidgetManager appWidgetManager, - int appWidgetId, Bundle newExtras) { + public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, + int appWidgetId, Bundle newOptions) { } /** diff --git a/core/java/android/content/AbstractThreadedSyncAdapter.java b/core/java/android/content/AbstractThreadedSyncAdapter.java index 6bffed759465..bafe67d619f3 100644 --- a/core/java/android/content/AbstractThreadedSyncAdapter.java +++ b/core/java/android/content/AbstractThreadedSyncAdapter.java @@ -21,6 +21,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Process; import android.os.RemoteException; +import android.os.Trace; import java.util.HashMap; import java.util.concurrent.atomic.AtomicInteger; @@ -233,9 +234,15 @@ public abstract class AbstractThreadedSyncAdapter { mThreadsKey = toSyncKey(account); } + @Override public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); + // Trace this sync instance. Note, conceptually this should be in + // SyncStorageEngine.insertStartSyncEvent(), but the trace functions require unique + // threads in order to track overlapping operations, so we'll do it here for now. + Trace.traceBegin(Trace.TRACE_TAG_SYNC_MANAGER, mAuthority); + SyncResult syncResult = new SyncResult(); ContentProviderClient provider = null; try { @@ -250,6 +257,8 @@ public abstract class AbstractThreadedSyncAdapter { syncResult.databaseError = true; } } finally { + Trace.traceEnd(Trace.TRACE_TAG_SYNC_MANAGER); + if (provider != null) { provider.release(); } diff --git a/core/java/android/content/CancellationSignal.java b/core/java/android/content/CancellationSignal.java index 2dbbe54c417b..dcaeeb7e677d 100644 --- a/core/java/android/content/CancellationSignal.java +++ b/core/java/android/content/CancellationSignal.java @@ -25,6 +25,7 @@ public final class CancellationSignal { private boolean mIsCanceled; private OnCancelListener mOnCancelListener; private ICancellationSignal mRemote; + private boolean mCancelInProgress; /** * Creates a cancellation signal, initially not canceled. @@ -59,19 +60,33 @@ public final class CancellationSignal { * If the operation has not yet started, then it will be canceled as soon as it does. */ public void cancel() { + final OnCancelListener listener; + final ICancellationSignal remote; synchronized (this) { - if (!mIsCanceled) { - mIsCanceled = true; - if (mOnCancelListener != null) { - mOnCancelListener.onCancel(); - } - if (mRemote != null) { - try { - mRemote.cancel(); - } catch (RemoteException ex) { - } + if (mIsCanceled) { + return; + } + mIsCanceled = true; + mCancelInProgress = true; + listener = mOnCancelListener; + remote = mRemote; + } + + try { + if (listener != null) { + listener.onCancel(); + } + if (remote != null) { + try { + remote.cancel(); + } catch (RemoteException ex) { } } + } finally { + synchronized (this) { + mCancelInProgress = false; + notifyAll(); + } } } @@ -86,38 +101,62 @@ public final class CancellationSignal { * If {@link CancellationSignal#cancel} has already been called, then the provided * listener is invoked immediately. * - * The listener is called while holding the cancellation signal's lock which is - * also held while registering or unregistering the listener. Because of the lock, - * it is not possible for the listener to run after it has been unregistered. - * This design choice makes it easier for clients of {@link CancellationSignal} to - * prevent race conditions related to listener registration and unregistration. + * This method is guaranteed that the listener will not be called after it + * has been removed. * * @param listener The cancellation listener, or null to remove the current listener. */ public void setOnCancelListener(OnCancelListener listener) { synchronized (this) { + waitForCancelFinishedLocked(); + + if (mOnCancelListener == listener) { + return; + } mOnCancelListener = listener; - if (mIsCanceled && listener != null) { - listener.onCancel(); + if (!mIsCanceled || listener == null) { + return; } } + listener.onCancel(); } /** * Sets the remote transport. * + * If {@link CancellationSignal#cancel} has already been called, then the provided + * remote transport is canceled immediately. + * + * This method is guaranteed that the remote transport will not be called after it + * has been removed. + * * @param remote The remote transport, or null to remove. * * @hide */ public void setRemote(ICancellationSignal remote) { synchronized (this) { + waitForCancelFinishedLocked(); + + if (mRemote == remote) { + return; + } mRemote = remote; - if (mIsCanceled && remote != null) { - try { - remote.cancel(); - } catch (RemoteException ex) { - } + if (!mIsCanceled || remote == null) { + return; + } + } + try { + remote.cancel(); + } catch (RemoteException ex) { + } + } + + private void waitForCancelFinishedLocked() { + while (mCancelInProgress) { + try { + wait(); + } catch (InterruptedException ex) { } } } diff --git a/core/java/android/content/ComponentCallbacks2.java b/core/java/android/content/ComponentCallbacks2.java index 85294dd00c9c..a3b4e5efb583 100644 --- a/core/java/android/content/ComponentCallbacks2.java +++ b/core/java/android/content/ComponentCallbacks2.java @@ -88,7 +88,11 @@ public interface ComponentCallbacks2 extends ComponentCallbacks { * should never compare to exact values of the level, since new intermediate * values may be added -- you will typically want to compare if the value * is greater or equal to a level you are interested in. - * + * + * <p>To retrieve the processes current trim level at any point, you can + * use {@link android.app.ActivityManager#getMyMemoryState + * ActivityManager.getMyMemoryState(RunningAppProcessInfo)}. + * * @param level The context of the trim, giving a hint of the amount of * trimming the application may like to perform. May be * {@link #TRIM_MEMORY_COMPLETE}, {@link #TRIM_MEMORY_MODERATE}, diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 665333693e1a..4ed6f25dba74 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -1099,6 +1099,14 @@ public class Intent implements Parcelable, Cloneable { @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH"; /** + * Activity Action: Perform assist action. + * <p> + * Input: nothing + * Output: nothing. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_ASSIST = "android.intent.action.ASSIST"; + /** * Activity Action: List all available applications * <p>Input: Nothing. * <p>Output: nothing. @@ -1240,7 +1248,11 @@ public class Intent implements Parcelable, Cloneable { * Used as a boolean extra field with {@link #ACTION_INSTALL_PACKAGE} to install a * package. Tells the installer UI to skip the confirmation with the user * if the .apk is replacing an existing one. + * @deprecated As of {@link android.os.Build.VERSION_CODES#JELLY_BEAN}, Android + * will no longer show an interstitial message about updating existing + * applications so this is no longer needed. */ + @Deprecated public static final String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE"; @@ -1624,8 +1636,20 @@ public class Intent implements Parcelable, Cloneable { /** * Broadcast Action: The current system wallpaper has changed. See * {@link android.app.WallpaperManager} for retrieving the new wallpaper. - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + * This should <em>only</em> be used to determine when the wallpaper + * has changed to show the new wallpaper to the user. You should certainly + * never, in response to this, change the wallpaper or other attributes of + * it such as the suggested size. That would be crazy, right? You'd cause + * all kinds of loops, especially if other apps are doing similar things, + * right? Of course. So please don't do this. + * + * @deprecated Modern applications should use + * {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER + * WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER} to have the wallpaper + * shown behind their UI, rather than watching for this broadcast and + * rendering the wallpaper on their own. + */ + @Deprecated @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED"; /** * Broadcast Action: The current device {@link android.content.res.Configuration} @@ -6576,58 +6600,56 @@ public class Intent implements Parcelable, Cloneable { final String action = getAction(); if (ACTION_SEND.equals(action)) { - Uri stream = null; try { - stream = getParcelableExtra(EXTRA_STREAM); + final Uri stream = getParcelableExtra(EXTRA_STREAM); + final CharSequence text = getCharSequenceExtra(EXTRA_TEXT); + final String htmlText = getStringExtra(EXTRA_HTML_TEXT); + if (stream != null || text != null || htmlText != null) { + final ClipData clipData = new ClipData( + null, new String[] { getType() }, + new ClipData.Item(text, htmlText, null, stream)); + setClipData(clipData); + addFlags(FLAG_GRANT_READ_URI_PERMISSION); + } } catch (ClassCastException e) { } - final CharSequence text = getCharSequenceExtra(EXTRA_TEXT); - final String htmlText = getStringExtra(EXTRA_HTML_TEXT); - if (stream != null || text != null || htmlText != null) { - final ClipData clipData = new ClipData( - null, new String[] { getType() }, - new ClipData.Item(text, htmlText, null, stream)); - setClipData(clipData); - addFlags(FLAG_GRANT_READ_URI_PERMISSION); - } } else if (ACTION_SEND_MULTIPLE.equals(action)) { - ArrayList<Uri> streams = null; try { - streams = getParcelableArrayListExtra(EXTRA_STREAM); - } catch (ClassCastException e) { - } - final ArrayList<CharSequence> texts = getCharSequenceArrayListExtra(EXTRA_TEXT); - final ArrayList<String> htmlTexts = getStringArrayListExtra(EXTRA_HTML_TEXT); - int num = -1; - if (streams != null) { - num = streams.size(); - } - if (texts != null) { - if (num >= 0 && num != texts.size()) { - // Wha...! F- you. - return; + final ArrayList<Uri> streams = getParcelableArrayListExtra(EXTRA_STREAM); + final ArrayList<CharSequence> texts = getCharSequenceArrayListExtra(EXTRA_TEXT); + final ArrayList<String> htmlTexts = getStringArrayListExtra(EXTRA_HTML_TEXT); + int num = -1; + if (streams != null) { + num = streams.size(); } - num = texts.size(); - } - if (htmlTexts != null) { - if (num >= 0 && num != htmlTexts.size()) { - // Wha...! F- you. - return; + if (texts != null) { + if (num >= 0 && num != texts.size()) { + // Wha...! F- you. + return; + } + num = texts.size(); } - num = htmlTexts.size(); - } - if (num > 0) { - final ClipData clipData = new ClipData( - null, new String[] { getType() }, - makeClipItem(streams, texts, htmlTexts, 0)); - - for (int i = 1; i < num; i++) { - clipData.addItem(makeClipItem(streams, texts, htmlTexts, i)); + if (htmlTexts != null) { + if (num >= 0 && num != htmlTexts.size()) { + // Wha...! F- you. + return; + } + num = htmlTexts.size(); } + if (num > 0) { + final ClipData clipData = new ClipData( + null, new String[] { getType() }, + makeClipItem(streams, texts, htmlTexts, 0)); + + for (int i = 1; i < num; i++) { + clipData.addItem(makeClipItem(streams, texts, htmlTexts, i)); + } - setClipData(clipData); - addFlags(FLAG_GRANT_READ_URI_PERMISSION); + setClipData(clipData); + addFlags(FLAG_GRANT_READ_URI_PERMISSION); + } + } catch (ClassCastException e) { } } } diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index cbabc7cf8634..e1434b3bad67 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -298,6 +298,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { * activity's manifest. * * Default value is false (no support for RTL). + * @hide */ public static final int FLAG_SUPPORTS_RTL = 1<<22; diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 185fcb97fa5f..98b40eb54883 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -970,7 +970,7 @@ public class PackageParser { return null; } } else if (tagName.equals("permission-group")) { - if (parsePermissionGroup(pkg, res, parser, attrs, outError) == null) { + if (parsePermissionGroup(pkg, flags, res, parser, attrs, outError) == null) { return null; } } else if (tagName.equals("permission")) { @@ -1432,7 +1432,7 @@ public class PackageParser { return buildCompoundName(pkg, procSeq, "taskAffinity", outError); } - private PermissionGroup parsePermissionGroup(Package owner, Resources res, + private PermissionGroup parsePermissionGroup(Package owner, int flags, Resources res, XmlPullParser parser, AttributeSet attrs, String[] outError) throws XmlPullParserException, IOException { PermissionGroup perm = new PermissionGroup(owner); @@ -1454,6 +1454,13 @@ public class PackageParser { perm.info.descriptionRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_description, 0); + perm.info.flags = sa.getInt( + com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); + perm.info.priority = sa.getInt( + com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0); + if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) != 0) { + perm.info.priority = 0; + } sa.recycle(); diff --git a/core/java/android/content/pm/PermissionGroupInfo.java b/core/java/android/content/pm/PermissionGroupInfo.java index 02eb816001cc..452bf0d2b6a1 100644 --- a/core/java/android/content/pm/PermissionGroupInfo.java +++ b/core/java/android/content/pm/PermissionGroupInfo.java @@ -41,6 +41,23 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { */ public CharSequence nonLocalizedDescription; + /** + * Flag for {@link #flags}, corresponding to <code>personalInfo</code> + * value of {@link android.R.attr#permissionGroupFlags}. + */ + public static final int FLAG_PERSONAL_INFO = 1<<0; + + /** + * Additional flags about this group as given by + * {@link android.R.attr#permissionGroupFlags}. + */ + public int flags; + + /** + * Prioritization of this group, for visually sorting with other groups. + */ + public int priority; + public PermissionGroupInfo() { } @@ -48,6 +65,8 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super(orig); descriptionRes = orig.descriptionRes; nonLocalizedDescription = orig.nonLocalizedDescription; + flags = orig.flags; + priority = orig.priority; } /** @@ -77,7 +96,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { public String toString() { return "PermissionGroupInfo{" + Integer.toHexString(System.identityHashCode(this)) - + " " + name + "}"; + + " " + name + " flgs=0x" + Integer.toHexString(flags) + "}"; } public int describeContents() { @@ -88,6 +107,8 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super.writeToParcel(dest, parcelableFlags); dest.writeInt(descriptionRes); TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags); + dest.writeInt(flags); + dest.writeInt(priority); } public static final Creator<PermissionGroupInfo> CREATOR = @@ -104,5 +125,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super(source); descriptionRes = source.readInt(); nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); + flags = source.readInt(); + priority = source.readInt(); } } diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java index 5c8e38bfa186..a175662e69a7 100644 --- a/core/java/android/database/sqlite/SQLiteConnectionPool.java +++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java @@ -594,6 +594,7 @@ public final class SQLiteConnectionPool implements Closeable { (connectionFlags & CONNECTION_FLAG_PRIMARY_CONNECTION_AFFINITY) != 0; final ConnectionWaiter waiter; + final int nonce; synchronized (mLock) { throwIfClosedLocked(); @@ -636,73 +637,75 @@ public final class SQLiteConnectionPool implements Closeable { mConnectionWaiterQueue = waiter; } - if (cancellationSignal != null) { - final int nonce = waiter.mNonce; - cancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() { - @Override - public void onCancel() { - synchronized (mLock) { - cancelConnectionWaiterLocked(waiter, nonce); + nonce = waiter.mNonce; + } + + // Set up the cancellation listener. + if (cancellationSignal != null) { + cancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() { + @Override + public void onCancel() { + synchronized (mLock) { + if (waiter.mNonce == nonce) { + cancelConnectionWaiterLocked(waiter); } } - }); - } + } + }); } - - // Park the thread until a connection is assigned or the pool is closed. - // Rethrow an exception from the wait, if we got one. - long busyTimeoutMillis = CONNECTION_POOL_BUSY_MILLIS; - long nextBusyTimeoutTime = waiter.mStartTime + busyTimeoutMillis; - for (;;) { - // Detect and recover from connection leaks. - if (mConnectionLeaked.compareAndSet(true, false)) { - synchronized (mLock) { - wakeConnectionWaitersLocked(); + try { + // Park the thread until a connection is assigned or the pool is closed. + // Rethrow an exception from the wait, if we got one. + long busyTimeoutMillis = CONNECTION_POOL_BUSY_MILLIS; + long nextBusyTimeoutTime = waiter.mStartTime + busyTimeoutMillis; + for (;;) { + // Detect and recover from connection leaks. + if (mConnectionLeaked.compareAndSet(true, false)) { + synchronized (mLock) { + wakeConnectionWaitersLocked(); + } } - } - // Wait to be unparked (may already have happened), a timeout, or interruption. - LockSupport.parkNanos(this, busyTimeoutMillis * 1000000L); + // Wait to be unparked (may already have happened), a timeout, or interruption. + LockSupport.parkNanos(this, busyTimeoutMillis * 1000000L); - // Clear the interrupted flag, just in case. - Thread.interrupted(); + // Clear the interrupted flag, just in case. + Thread.interrupted(); - // Check whether we are done waiting yet. - synchronized (mLock) { - throwIfClosedLocked(); - - final SQLiteConnection connection = waiter.mAssignedConnection; - final RuntimeException ex = waiter.mException; - if (connection != null || ex != null) { - if (cancellationSignal != null) { - cancellationSignal.setOnCancelListener(null); - } - recycleConnectionWaiterLocked(waiter); - if (connection != null) { - return connection; + // Check whether we are done waiting yet. + synchronized (mLock) { + throwIfClosedLocked(); + + final SQLiteConnection connection = waiter.mAssignedConnection; + final RuntimeException ex = waiter.mException; + if (connection != null || ex != null) { + recycleConnectionWaiterLocked(waiter); + if (connection != null) { + return connection; + } + throw ex; // rethrow! } - throw ex; // rethrow! - } - final long now = SystemClock.uptimeMillis(); - if (now < nextBusyTimeoutTime) { - busyTimeoutMillis = now - nextBusyTimeoutTime; - } else { - logConnectionPoolBusyLocked(now - waiter.mStartTime, connectionFlags); - busyTimeoutMillis = CONNECTION_POOL_BUSY_MILLIS; - nextBusyTimeoutTime = now + busyTimeoutMillis; + final long now = SystemClock.uptimeMillis(); + if (now < nextBusyTimeoutTime) { + busyTimeoutMillis = now - nextBusyTimeoutTime; + } else { + logConnectionPoolBusyLocked(now - waiter.mStartTime, connectionFlags); + busyTimeoutMillis = CONNECTION_POOL_BUSY_MILLIS; + nextBusyTimeoutTime = now + busyTimeoutMillis; + } } } + } finally { + // Remove the cancellation listener. + if (cancellationSignal != null) { + cancellationSignal.setOnCancelListener(null); + } } } // Can't throw. - private void cancelConnectionWaiterLocked(ConnectionWaiter waiter, int nonce) { - if (waiter.mNonce != nonce) { - // Waiter already removed and recycled. - return; - } - + private void cancelConnectionWaiterLocked(ConnectionWaiter waiter) { if (waiter.mAssignedConnection != null || waiter.mException != null) { // Waiter is done waiting but has not woken up yet. return; diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index eb0a0c6f4732..89068e79f16e 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -35,6 +35,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.StringTokenizer; +import java.util.concurrent.locks.ReentrantLock; /** * The Camera class is used to set image capture settings, start/stop preview, @@ -154,6 +155,7 @@ public class Camera { private boolean mOneShot; private boolean mWithBuffer; private boolean mFaceDetectionRunning = false; + private Object mAutoFocusCallbackLock = new Object(); /** * Broadcast Action: A new picture is taken by the camera, and the entry of @@ -469,6 +471,11 @@ public class Camera { * Called as preview frames are displayed. This callback is invoked * on the event thread {@link #open(int)} was called from. * + * <p>If using the {@link android.graphics.ImageFormat#YV12} format, + * refer to the equations in {@link Camera.Parameters#setPreviewFormat} + * for the arrangement of the pixel data in the preview callback + * buffers. + * * @param data the contents of the preview frame in the format defined * by {@link android.graphics.ImageFormat}, which can be queried * with {@link android.hardware.Camera.Parameters#getPreviewFormat()}. @@ -506,7 +513,9 @@ public class Camera { mRawImageCallback = null; mPostviewCallback = null; mJpegCallback = null; - mAutoFocusCallback = null; + synchronized (mAutoFocusCallbackLock) { + mAutoFocusCallback = null; + } mAutoFocusMoveCallback = null; } @@ -609,12 +618,17 @@ public class Camera { * the frame is discarded. Applications should add buffers back when they * finish processing the data in them. * - * <p>The size of the buffer is determined by multiplying the preview - * image width, height, and bytes per pixel. The width and height can be - * read from {@link Camera.Parameters#getPreviewSize()}. Bytes per pixel - * can be computed from - * {@link android.graphics.ImageFormat#getBitsPerPixel(int)} / 8, - * using the image format from {@link Camera.Parameters#getPreviewFormat()}. + * <p>For formats besides YV12, the size of the buffer is determined by + * multiplying the preview image width, height, and bytes per pixel. The + * width and height can be read from + * {@link Camera.Parameters#getPreviewSize()}. Bytes per pixel can be + * computed from {@link android.graphics.ImageFormat#getBitsPerPixel(int)} / + * 8, using the image format from + * {@link Camera.Parameters#getPreviewFormat()}. + * + * <p>If using the {@link android.graphics.ImageFormat#YV12} format, the + * size can be calculated using the equations listed in + * {@link Camera.Parameters#setPreviewFormat}. * * <p>This method is only necessary when * {@link #setPreviewCallbackWithBuffer(PreviewCallback)} is used. When @@ -624,8 +638,8 @@ public class Camera { * hold the preview frame data, preview callback will return null and * the buffer will be removed from the buffer queue. * - * @param callbackBuffer the buffer to add to the queue. - * The size should be width * height * bits_per_pixel / 8. + * @param callbackBuffer the buffer to add to the queue. The size of the + * buffer must match the values described above. * @see #setPreviewCallbackWithBuffer(PreviewCallback) */ public final void addCallbackBuffer(byte[] callbackBuffer) @@ -746,8 +760,13 @@ public class Camera { return; case CAMERA_MSG_FOCUS: - if (mAutoFocusCallback != null) { - mAutoFocusCallback.onAutoFocus(msg.arg1 == 0 ? false : true, mCamera); + AutoFocusCallback cb = null; + synchronized (mAutoFocusCallbackLock) { + cb = mAutoFocusCallback; + } + if (cb != null) { + boolean success = msg.arg1 == 0 ? false : true; + cb.onAutoFocus(success, mCamera); } return; @@ -872,7 +891,9 @@ public class Camera { */ public final void autoFocus(AutoFocusCallback cb) { - mAutoFocusCallback = cb; + synchronized (mAutoFocusCallbackLock) { + mAutoFocusCallback = cb; + } native_autoFocus(); } private native final void native_autoFocus(); @@ -887,8 +908,26 @@ public class Camera { */ public final void cancelAutoFocus() { - mAutoFocusCallback = null; + synchronized (mAutoFocusCallbackLock) { + mAutoFocusCallback = null; + } native_cancelAutoFocus(); + // CAMERA_MSG_FOCUS should be removed here because the following + // scenario can happen: + // - An application uses the same thread for autoFocus, cancelAutoFocus + // and looper thread. + // - The application calls autoFocus. + // - HAL sends CAMERA_MSG_FOCUS, which enters the looper message queue. + // Before event handler's handleMessage() is invoked, the application + // calls cancelAutoFocus and autoFocus. + // - The application gets the old CAMERA_MSG_FOCUS and thinks autofocus + // has been completed. But in fact it is not. + // + // As documented in the beginning of the file, apps should not use + // multiple threads to call autoFocus and cancelAutoFocus at the same + // time. It is HAL's responsibility not to send a CAMERA_MSG_FOCUS + // message after native_cancelAutoFocus is called. + mEventHandler.removeMessages(CAMERA_MSG_FOCUS); } private native final void native_cancelAutoFocus(); @@ -2270,12 +2309,44 @@ public class Camera { * {@link android.graphics.ImageFormat#NV21}, which * uses the NV21 encoding format.</p> * - * @param pixel_format the desired preview picture format, defined - * by one of the {@link android.graphics.ImageFormat} constants. - * (E.g., <var>ImageFormat.NV21</var> (default), - * <var>ImageFormat.RGB_565</var>, or - * <var>ImageFormat.JPEG</var>) + * <p>Use {@link Parameters#getSupportedPreviewFormats} to get a list of + * the available preview formats. + * + * <p>It is strongly recommended that either + * {@link android.graphics.ImageFormat#NV21} or + * {@link android.graphics.ImageFormat#YV12} is used, since + * they are supported by all camera devices.</p> + * + * <p>For YV12, the image buffer that is received is not necessarily + * tightly packed, as there may be padding at the end of each row of + * pixel data, as described in + * {@link android.graphics.ImageFormat#YV12}. For camera callback data, + * it can be assumed that the stride of the Y and UV data is the + * smallest possible that meets the alignment requirements. That is, if + * the preview size is <var>width x height</var>, then the following + * equations describe the buffer index for the beginning of row + * <var>y</var> for the Y plane and row <var>c</var> for the U and V + * planes: + * + * {@code + * <pre> + * yStride = (int) ceil(width / 16.0) * 16; + * uvStride = (int) ceil( (yStride / 2) / 16.0) * 16; + * ySize = yStride * height; + * uvSize = uvStride * height / 2; + * yRowIndex = yStride * y; + * uRowIndex = ySize + uvSize + uvStride * c; + * vRowIndex = ySize + uvStride * c; + * size = ySize + uvSize * 2;</pre> + * } + * + * @param pixel_format the desired preview picture format, defined by + * one of the {@link android.graphics.ImageFormat} constants. (E.g., + * <var>ImageFormat.NV21</var> (default), or + * <var>ImageFormat.YV12</var>) + * * @see android.graphics.ImageFormat + * @see android.hardware.Camera.Parameters#getSupportedPreviewFormats */ public void setPreviewFormat(int pixel_format) { String s = cameraFormatForPixelFormat(pixel_format); @@ -2293,6 +2364,7 @@ public class Camera { * * @return the preview format. * @see android.graphics.ImageFormat + * @see #setPreviewFormat */ public int getPreviewFormat() { return pixelFormatForCameraFormat(get(KEY_PREVIEW_FORMAT)); @@ -2306,6 +2378,7 @@ public class Camera { * @return a list of supported preview formats. This method will always * return a list with at least one element. * @see android.graphics.ImageFormat + * @see #setPreviewFormat */ public List<Integer> getSupportedPreviewFormats() { String str = get(KEY_PREVIEW_FORMAT + SUPPORTED_VALUES_SUFFIX); diff --git a/core/java/android/hardware/usb/UsbAccessory.java b/core/java/android/hardware/usb/UsbAccessory.java index 770204466eaf..5719452fab05 100644 --- a/core/java/android/hardware/usb/UsbAccessory.java +++ b/core/java/android/hardware/usb/UsbAccessory.java @@ -55,6 +55,19 @@ public class UsbAccessory implements Parcelable { private final String mUri; private final String mSerial; + /** @hide */ + public static final int MANUFACTURER_STRING = 0; + /** @hide */ + public static final int MODEL_STRING = 1; + /** @hide */ + public static final int DESCRIPTION_STRING = 2; + /** @hide */ + public static final int VERSION_STRING = 3; + /** @hide */ + public static final int URI_STRING = 4; + /** @hide */ + public static final int SERIAL_STRING = 5; + /** * UsbAccessory should only be instantiated by UsbService implementation * @hide @@ -74,12 +87,12 @@ public class UsbAccessory implements Parcelable { * @hide */ public UsbAccessory(String[] strings) { - mManufacturer = strings[0]; - mModel = strings[1]; - mDescription = strings[2]; - mVersion = strings[3]; - mUri = strings[4]; - mSerial = strings[5]; + mManufacturer = strings[MANUFACTURER_STRING]; + mModel = strings[MODEL_STRING]; + mDescription = strings[DESCRIPTION_STRING]; + mVersion = strings[VERSION_STRING]; + mUri = strings[URI_STRING]; + mSerial = strings[SERIAL_STRING]; } /** diff --git a/core/java/android/net/DhcpInfoInternal.java b/core/java/android/net/DhcpInfoInternal.java index c87c34b8b12a..f3508c1105bb 100644 --- a/core/java/android/net/DhcpInfoInternal.java +++ b/core/java/android/net/DhcpInfoInternal.java @@ -147,7 +147,11 @@ public class DhcpInfoInternal { * metered, and sensitive to heavy data transfers. */ public boolean hasMeteredHint() { - return "ANDROID_METERED".equals(vendorInfo); + if (vendorInfo != null) { + return vendorInfo.contains("ANDROID_METERED"); + } else { + return false; + } } public String toString() { diff --git a/core/java/android/net/INetworkStatsService.aidl b/core/java/android/net/INetworkStatsService.aidl index 08d4c6cbf4ab..b7b87318554c 100644 --- a/core/java/android/net/INetworkStatsService.aidl +++ b/core/java/android/net/INetworkStatsService.aidl @@ -42,5 +42,7 @@ interface INetworkStatsService { void setUidForeground(int uid, boolean uidForeground); /** Force update of statistics. */ void forceUpdate(); + /** Advise persistance threshold; may be overridden internally. */ + void advisePersistThreshold(long thresholdBytes); } diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java index 4ac5e764729a..3c67bf9e845b 100644 --- a/core/java/android/net/NetworkIdentity.java +++ b/core/java/android/net/NetworkIdentity.java @@ -158,9 +158,14 @@ public class NetworkIdentity { } } else if (type == TYPE_WIFI) { - final WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - final WifiInfo info = wifi.getConnectionInfo(); - networkId = info != null ? info.getSSID() : null; + if (state.networkId != null) { + networkId = state.networkId; + } else { + final WifiManager wifi = (WifiManager) context.getSystemService( + Context.WIFI_SERVICE); + final WifiInfo info = wifi.getConnectionInfo(); + networkId = info != null ? info.getSSID() : null; + } } return new NetworkIdentity(type, subType, subscriberId, networkId, roaming); diff --git a/core/java/android/net/NetworkState.java b/core/java/android/net/NetworkState.java index 2fc69ad28707..fbe1f8296be4 100644 --- a/core/java/android/net/NetworkState.java +++ b/core/java/android/net/NetworkState.java @@ -31,18 +31,20 @@ public class NetworkState implements Parcelable { public final LinkCapabilities linkCapabilities; /** Currently only used by testing. */ public final String subscriberId; + public final String networkId; public NetworkState(NetworkInfo networkInfo, LinkProperties linkProperties, LinkCapabilities linkCapabilities) { - this(networkInfo, linkProperties, linkCapabilities, null); + this(networkInfo, linkProperties, linkCapabilities, null, null); } public NetworkState(NetworkInfo networkInfo, LinkProperties linkProperties, - LinkCapabilities linkCapabilities, String subscriberId) { + LinkCapabilities linkCapabilities, String subscriberId, String networkId) { this.networkInfo = networkInfo; this.linkProperties = linkProperties; this.linkCapabilities = linkCapabilities; this.subscriberId = subscriberId; + this.networkId = networkId; } public NetworkState(Parcel in) { @@ -50,6 +52,7 @@ public class NetworkState implements Parcelable { linkProperties = in.readParcelable(null); linkCapabilities = in.readParcelable(null); subscriberId = in.readString(); + networkId = in.readString(); } @Override @@ -63,6 +66,7 @@ public class NetworkState implements Parcelable { out.writeParcelable(linkProperties, flags); out.writeParcelable(linkCapabilities, flags); out.writeString(subscriberId); + out.writeString(networkId); } public static final Creator<NetworkState> CREATOR = new Creator<NetworkState>() { diff --git a/core/java/android/os/Handler.java b/core/java/android/os/Handler.java index 0d562e491215..b892c8128cdd 100644 --- a/core/java/android/os/Handler.java +++ b/core/java/android/os/Handler.java @@ -518,7 +518,7 @@ public class Handler { /** * Remove any pending posts of messages with code 'what' and whose obj is - * 'object' that are in the message queue. If <var>token</var> is null, + * 'object' that are in the message queue. If <var>object</var> is null, * all messages will be removed. */ public final void removeMessages(int what, Object object) { diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index 6ecc64054569..e7ea3558dae1 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -238,7 +238,8 @@ interface INetworkManagementService * Return global network statistics summarized at an interface level, * without any UID-level granularity. */ - NetworkStats getNetworkStatsSummary(); + NetworkStats getNetworkStatsSummaryDev(); + NetworkStats getNetworkStatsSummaryXt(); /** * Return detailed network statistics with UID-level granularity, diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java index 4645fab5e58f..05acd63a07b0 100644 --- a/core/java/android/os/Trace.java +++ b/core/java/android/os/Trace.java @@ -34,6 +34,9 @@ public final class Trace { public static final long TRACE_TAG_INPUT = 1L << 2; public static final long TRACE_TAG_VIEW = 1L << 3; public static final long TRACE_TAG_WEBVIEW = 1L << 4; + public static final long TRACE_TAG_WINDOW_MANAGER = 1L << 5; + public static final long TRACE_TAG_ACTIVITY_MANAGER = 1L << 6; + public static final long TRACE_TAG_SYNC_MANAGER = 1L << 7; private static final long sEnabledTags = nativeGetEnabledTags(); diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java index 8b9945925da2..c17111ab8dcd 100644 --- a/core/java/android/preference/PreferenceScreen.java +++ b/core/java/android/preference/PreferenceScreen.java @@ -24,6 +24,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.AttributeSet; +import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.widget.AbsListView; @@ -153,7 +154,12 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi if (mListView != null) { mListView.setAdapter(null); } - mListView = new ListView(context); + + LayoutInflater inflater = (LayoutInflater) + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View childPrefScreen = inflater.inflate( + com.android.internal.R.layout.preference_list_fragment, null); + mListView = (ListView) childPrefScreen.findViewById(android.R.id.list); bind(mListView); // Set the title bar if title is available, else no title bar @@ -164,7 +170,7 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi } else { dialog.setTitle(title); } - dialog.setContentView(mListView); + dialog.setContentView(childPrefScreen); dialog.setOnDismissListener(this); if (state != null) { dialog.onRestoreInstanceState(state); diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index 7d41e649c338..2782dcaab11c 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -3049,6 +3049,13 @@ public final class ContactsContract { * requires android.permission.READ_SOCIAL_STREAM permission, and inserting or updating social * stream items requires android.permission.WRITE_SOCIAL_STREAM permission. * </p> + * <h3>Account check</h3> + * <p> + * The content URIs to the insert, update and delete operations are required to have the account + * information matching that of the owning raw contact as query parameters, namely + * {@link RawContacts#ACCOUNT_TYPE} and {@link RawContacts#ACCOUNT_NAME}. + * {@link RawContacts#DATA_SET} isn't required. + * </p> * <h3>Operations</h3> * <dl> * <dt><b>Insert</b></dt> @@ -3063,9 +3070,12 @@ public final class ContactsContract { * values.put(StreamItems.TEXT, "Breakfasted at Tiffanys"); * values.put(StreamItems.TIMESTAMP, timestamp); * values.put(StreamItems.COMMENTS, "3 people reshared this"); - * Uri streamItemUri = getContentResolver().insert( - * Uri.withAppendedPath(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), - * RawContacts.StreamItems.CONTENT_DIRECTORY), values); + * Uri.Builder builder = RawContacts.CONTENT_URI.buildUpon(); + * ContentUris.appendId(builder, rawContactId); + * builder.appendEncodedPath(RawContacts.StreamItems.CONTENT_DIRECTORY); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * Uri streamItemUri = getContentResolver().insert(builder.build(), values); * long streamItemId = ContentUris.parseId(streamItemUri); * </pre> * </dd> @@ -3077,7 +3087,10 @@ public final class ContactsContract { * values.put(StreamItems.TEXT, "Breakfasted at Tiffanys"); * values.put(StreamItems.TIMESTAMP, timestamp); * values.put(StreamItems.COMMENTS, "3 people reshared this"); - * Uri streamItemUri = getContentResolver().insert(StreamItems.CONTENT_URI, values); + * Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * Uri streamItemUri = getContentResolver().insert(builder.build(), values); * long streamItemId = ContentUris.parseId(streamItemUri); *</pre> * </dd> @@ -3410,6 +3423,13 @@ public final class ContactsContract { * requires android.permission.READ_SOCIAL_STREAM permission, and inserting or updating * social stream photos requires android.permission.WRITE_SOCIAL_STREAM permission. * </p> + * <h3>Account check</h3> + * <p> + * The content URIs to the insert, update and delete operations are required to have the account + * information matching that of the owning raw contact as query parameters, namely + * {@link RawContacts#ACCOUNT_TYPE} and {@link RawContacts#ACCOUNT_NAME}. + * {@link RawContacts#DATA_SET} isn't required. + * </p> * <h3>Operations</h3> * <dl> * <dt><b>Insert</b></dt> @@ -3426,9 +3446,12 @@ public final class ContactsContract { * ContentValues values = new ContentValues(); * values.put(StreamItemPhotos.SORT_INDEX, 1); * values.put(StreamItemPhotos.PHOTO, photoData); - * Uri photoUri = getContentResolver().insert(Uri.withAppendedPath( - * ContentUris.withAppendedId(StreamItems.CONTENT_URI, streamItemId) - * StreamItems.StreamItemPhotos#CONTENT_DIRECTORY), values); + * Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); + * ContentUris.appendId(builder, streamItemId); + * builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * Uri photoUri = getContentResolver().insert(builder.build(), values); * long photoId = ContentUris.parseId(photoUri); * </pre> * </dd> @@ -3439,7 +3462,10 @@ public final class ContactsContract { * values.put(StreamItemPhotos.STREAM_ITEM_ID, streamItemId); * values.put(StreamItemPhotos.SORT_INDEX, 1); * values.put(StreamItemPhotos.PHOTO, photoData); - * Uri photoUri = getContentResolver().insert(StreamItems.CONTENT_PHOTO_URI, values); + * Uri.Builder builder = StreamItems.CONTENT_PHOTO_URI.buildUpon(); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * Uri photoUri = getContentResolver().insert(builder.build(), values); * long photoId = ContentUris.parseId(photoUri); * </pre> * </dd> @@ -3459,12 +3485,13 @@ public final class ContactsContract { * <pre> * ContentValues values = new ContentValues(); * values.put(StreamItemPhotos.PHOTO, newPhotoData); - * getContentResolver().update( - * ContentUris.withAppendedId( - * Uri.withAppendedPath( - * ContentUris.withAppendedId(StreamItems.CONTENT_URI, streamItemId) - * StreamItems.StreamItemPhotos#CONTENT_DIRECTORY), - * streamItemPhotoId), values, null, null); + * Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); + * ContentUris.appendId(builder, streamItemId); + * builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); + * ContentUris.appendId(builder, streamItemPhotoId); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * getContentResolver().update(builder.build(), values, null, null); * </pre> * </dd> * <dt>Via the {@link ContactsContract.StreamItems#CONTENT_PHOTO_URI} URI:</dt> @@ -3473,7 +3500,10 @@ public final class ContactsContract { * ContentValues values = new ContentValues(); * values.put(StreamItemPhotos.STREAM_ITEM_ID, streamItemId); * values.put(StreamItemPhotos.PHOTO, newPhotoData); - * getContentResolver().update(StreamItems.CONTENT_PHOTO_URI, values); + * Uri.Builder builder = StreamItems.CONTENT_PHOTO_URI.buildUpon(); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * getContentResolver().update(builder.build(), values); * </pre> * </dd> * </dl> @@ -3489,21 +3519,24 @@ public final class ContactsContract { * </dt> * <dd> * <pre> - * getContentResolver().delete( - * ContentUris.withAppendedId( - * Uri.withAppendedPath( - * ContentUris.withAppendedId(StreamItems.CONTENT_URI, streamItemId) - * StreamItems.StreamItemPhotos#CONTENT_DIRECTORY), - * streamItemPhotoId), null, null); + * Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); + * ContentUris.appendId(builder, streamItemId); + * builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); + * ContentUris.appendId(builder, streamItemPhotoId); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * getContentResolver().delete(builder.build(), null, null); * </pre> * </dd> * <dt>Deleting all photos under a stream item</dt> * <dd> * <pre> - * getContentResolver().delete( - * Uri.withAppendedPath( - * ContentUris.withAppendedId(StreamItems.CONTENT_URI, streamItemId) - * StreamItems.StreamItemPhotos#CONTENT_DIRECTORY), null, null); + * Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); + * ContentUris.appendId(builder, streamItemId); + * builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); + * builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); + * builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); + * getContentResolver().delete(builder.build(), null, null); * </pre> * </dd> * </dl> @@ -5411,8 +5444,9 @@ public final class ContactsContract { /** * The phone number's E164 representation. This value can be omitted in which - * case the provider will try to automatically infer it. If present, {@link #NUMBER} - * has to be set as well (it will be ignored otherwise). + * case the provider will try to automatically infer it. (It'll be left null if the + * provider fails to infer.) + * If present, {@link #NUMBER} has to be set as well (it will be ignored otherwise). * <P>Type: TEXT</P> */ public static final String NORMALIZED_NUMBER = DATA4; diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 3a5fdd1778c7..2c49bd2a335f 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -3270,6 +3270,12 @@ public final class Settings { public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band"; /** + * The Wi-Fi peer-to-peer device name + * @hide + */ + public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; + + /** * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile * data connectivity to be established after a disconnect from Wi-Fi. */ diff --git a/core/java/android/provider/SocialContract.java b/core/java/android/provider/SocialContract.java deleted file mode 100644 index ee271ba84481..000000000000 --- a/core/java/android/provider/SocialContract.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2009 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 android.provider; - -import android.content.res.Resources; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.provider.ContactsContract.Contacts; -import android.provider.ContactsContract.Data; - -/** - * The contract between the social provider and applications. Contains - * definitions for the supported URIs and columns. - * - * @hide - */ -public class SocialContract { - /** The authority for the social provider */ - public static final String AUTHORITY = "com.android.social"; - - /** A content:// style uri to the authority for the contacts provider */ - public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY); - - private interface ActivitiesColumns { - /** - * The package name to use when creating {@link Resources} objects for - * this data row. This value is only designed for use when building user - * interfaces, and should not be used to infer the owner. - * <p> - * Type: TEXT - */ - public static final String RES_PACKAGE = "res_package"; - - /** - * The mime-type of this social activity. - * <p> - * Type: TEXT - */ - public static final String MIMETYPE = "mimetype"; - - /** - * Internal raw identifier for this social activity. This field is - * analogous to the <code>atom:id</code> element defined in RFC 4287. - * <p> - * Type: TEXT - */ - public static final String RAW_ID = "raw_id"; - - /** - * Reference to another {@link Activities#RAW_ID} that this social activity - * is replying to. This field is analogous to the - * <code>thr:in-reply-to</code> element defined in RFC 4685. - * <p> - * Type: TEXT - */ - public static final String IN_REPLY_TO = "in_reply_to"; - - /** - * Reference to the {@link android.provider.ContactsContract.Contacts#_ID} that authored - * this social activity. This field is analogous to the <code>atom:author</code> - * element defined in RFC 4287. - * <p> - * Type: INTEGER - */ - public static final String AUTHOR_CONTACT_ID = "author_contact_id"; - - /** - * Optional reference to the {@link android.provider.ContactsContract.Contacts#_ID} this - * social activity is targeted towards. If more than one direct target, this field may - * be left undefined. This field is analogous to the - * <code>activity:target</code> element defined in the Atom Activity - * Extensions Internet-Draft. - * <p> - * Type: INTEGER - */ - public static final String TARGET_CONTACT_ID = "target_contact_id"; - - /** - * Timestamp when this social activity was published, in a - * {@link System#currentTimeMillis()} time base. This field is analogous - * to the <code>atom:published</code> element defined in RFC 4287. - * <p> - * Type: INTEGER - */ - public static final String PUBLISHED = "published"; - - /** - * Timestamp when the original social activity in a thread was - * published. For activities that have an in-reply-to field specified, the - * content provider will automatically populate this field with the - * timestamp of the original activity. - * <p> - * This field is useful for sorting order of activities that keeps together all - * messages in each thread. - * <p> - * Type: INTEGER - */ - public static final String THREAD_PUBLISHED = "thread_published"; - - /** - * Title of this social activity. This field is analogous to the - * <code>atom:title</code> element defined in RFC 4287. - * <p> - * Type: TEXT - */ - public static final String TITLE = "title"; - - /** - * Summary of this social activity. This field is analogous to the - * <code>atom:summary</code> element defined in RFC 4287. - * <p> - * Type: TEXT - */ - public static final String SUMMARY = "summary"; - - /** - * A URI associated this social activity. This field is analogous to the - * <code>atom:link rel="alternate"</code> element defined in RFC 4287. - * <p> - * Type: TEXT - */ - public static final String LINK = "link"; - - /** - * Optional thumbnail specific to this social activity. This is the raw - * bytes of an image that could be inflated using {@link BitmapFactory}. - * <p> - * Type: BLOB - */ - public static final String THUMBNAIL = "thumbnail"; - } - - public static final class Activities implements BaseColumns, ActivitiesColumns { - /** - * This utility class cannot be instantiated - */ - private Activities() { - } - - /** - * The content:// style URI for this table - */ - public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "activities"); - - /** - * The content:// URI for this table filtered to the set of social activities - * authored by a specific {@link android.provider.ContactsContract.Contacts#_ID}. - */ - public static final Uri CONTENT_AUTHORED_BY_URI = - Uri.withAppendedPath(CONTENT_URI, "authored_by"); - - /** - * The {@link Uri} for the latest social activity performed by any - * raw contact aggregated under the specified {@link Contacts#_ID}. Will - * also join with most-present {@link Presence} for this aggregate. - */ - public static final Uri CONTENT_CONTACT_STATUS_URI = - Uri.withAppendedPath(AUTHORITY_URI, "contact_status"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of social - * activities. - */ - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/activity"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * social activity. - */ - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/activity"; - } - -} diff --git a/core/java/android/server/BluetoothA2dpService.java b/core/java/android/server/BluetoothA2dpService.java index c4cb3a5f4155..300bc686eddb 100644 --- a/core/java/android/server/BluetoothA2dpService.java +++ b/core/java/android/server/BluetoothA2dpService.java @@ -588,6 +588,8 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { @Override protected synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + if (mAudioDevices.isEmpty()) return; pw.println("Cached audio devices:"); for (BluetoothDevice device : mAudioDevices.keySet()) { diff --git a/core/java/android/server/BluetoothAdapterStateMachine.java b/core/java/android/server/BluetoothAdapterStateMachine.java index 7711caacf5be..f543de9c7c5a 100644 --- a/core/java/android/server/BluetoothAdapterStateMachine.java +++ b/core/java/android/server/BluetoothAdapterStateMachine.java @@ -441,9 +441,10 @@ final class BluetoothAdapterStateMachine extends StateMachine { if (mPublicState == BluetoothAdapter.STATE_TURNING_OFF) { transitionTo(mHotOff); finishSwitchingOff(); - if (!mContext.getResources().getBoolean - (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) { - deferMessage(obtainMessage(TURN_COLD)); + deferMessage(obtainMessage(TURN_COLD)); + if (mContext.getResources().getBoolean + (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) { + deferMessage(obtainMessage(TURN_HOT)); } } } else { @@ -612,9 +613,10 @@ final class BluetoothAdapterStateMachine extends StateMachine { removeMessages(POWER_DOWN_TIMEOUT); if (!((Boolean) message.obj)) { transitionTo(mHotOff); - if (!mContext.getResources().getBoolean + deferMessage(obtainMessage(TURN_COLD)); + if (mContext.getResources().getBoolean (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) { - deferMessage(obtainMessage(TURN_COLD)); + deferMessage(obtainMessage(TURN_HOT)); } } else { if (!isTurningOn) { diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index 9c887a1a5492..b758e7fa0886 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -268,6 +268,11 @@ class BluetoothEventLoop { */ private void onDeviceCreated(String deviceObjectPath) { String address = mBluetoothService.getAddressFromObjectPath(deviceObjectPath); + if (address == null) { + Log.e(TAG, "onDeviceCreated: device address null!" + " deviceObjectPath: " + + deviceObjectPath); + return; + } if (!mBluetoothService.isRemoteDeviceInCache(address)) { // Incoming connection, we haven't seen this device, add to cache. String[] properties = mBluetoothService.getRemoteDeviceProperties(address); @@ -275,7 +280,6 @@ class BluetoothEventLoop { addDevice(address, properties); } } - return; } /** diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index 7a974554fd06..a420734c28e4 100755 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -1775,6 +1775,8 @@ public class BluetoothService extends IBluetooth.Stub { @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + if (getBluetoothStateInternal() != BluetoothAdapter.STATE_ON) { return; } diff --git a/core/java/android/service/dreams/DreamManagerService.java b/core/java/android/service/dreams/DreamManagerService.java index 8712fa23d4fb..4a14cedbf9b3 100644 --- a/core/java/android/service/dreams/DreamManagerService.java +++ b/core/java/android/service/dreams/DreamManagerService.java @@ -169,6 +169,8 @@ public class DreamManagerService @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + pw.println("Dreamland:"); pw.print(" component="); pw.println(mCurrentDreamComponent); pw.print(" token="); pw.println(mCurrentDreamToken); diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 6917fb215365..9d3667766fec 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -154,6 +154,7 @@ public abstract class WallpaperService extends Service { int mCurWindowPrivateFlags = mWindowPrivateFlags; final Rect mVisibleInsets = new Rect(); final Rect mWinFrame = new Rect(); + final Rect mSystemInsets = new Rect(); final Rect mContentInsets = new Rect(); final Configuration mConfiguration = new Configuration(); @@ -253,7 +254,7 @@ public abstract class WallpaperService extends Service { final BaseIWindow mWindow = new BaseIWindow() { @Override - public void resized(int w, int h, Rect coveredInsets, + public void resized(int w, int h, Rect systemInsets, Rect contentInsets, Rect visibleInsets, boolean reportDraw, Configuration newConfig) { Message msg = mCaller.obtainMessageI(MSG_WINDOW_RESIZED, reportDraw ? 1 : 0); @@ -620,7 +621,7 @@ public abstract class WallpaperService extends Service { final int relayoutResult = mSession.relayout( mWindow, mWindow.mSeq, mLayout, mWidth, mHeight, - View.VISIBLE, 0, mWinFrame, mContentInsets, + View.VISIBLE, 0, mWinFrame, mSystemInsets, mContentInsets, mVisibleInsets, mConfiguration, mSurfaceHolder.mSurface); if (DEBUG) Log.v(TAG, "New surface: " + mSurfaceHolder.mSurface diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java index 2dcea80c5b21..c453a5db42c7 100644 --- a/core/java/android/text/Layout.java +++ b/core/java/android/text/Layout.java @@ -45,8 +45,7 @@ public abstract class Layout { private static final ParagraphStyle[] NO_PARA_SPANS = ArrayUtils.emptyArray(ParagraphStyle.class); - /* package */ static final EmojiFactory EMOJI_FACTORY = - EmojiFactory.newAvailableInstance(); + /* package */ static final EmojiFactory EMOJI_FACTORY = EmojiFactory.newAvailableInstance(); /* package */ static final int MIN_EMOJI, MAX_EMOJI; static { @@ -363,15 +362,15 @@ public abstract class Layout { // direction of the layout or line. XXX: Should they? // They are evaluated at each line. if (mSpannedText) { - if (lineBackgroundSpans == null) { - lineBackgroundSpans = new SpanSet<LineBackgroundSpan>(LineBackgroundSpan.class); + if (mLineBackgroundSpans == null) { + mLineBackgroundSpans = new SpanSet<LineBackgroundSpan>(LineBackgroundSpan.class); } Spanned buffer = (Spanned) mText; int textLength = buffer.length(); - lineBackgroundSpans.init(buffer, 0, textLength); + mLineBackgroundSpans.init(buffer, 0, textLength); - if (lineBackgroundSpans.numberOfSpans > 0) { + if (mLineBackgroundSpans.numberOfSpans > 0) { int previousLineBottom = getLineTop(firstLine); int previousLineEnd = getLineStart(firstLine); ParagraphStyle[] spans = NO_PARA_SPANS; @@ -392,17 +391,18 @@ public abstract class Layout { if (start >= spanEnd) { // These should be infrequent, so we'll use this so that // we don't have to check as often. - spanEnd = lineBackgroundSpans.getNextTransition(start, textLength); + spanEnd = mLineBackgroundSpans.getNextTransition(start, textLength); // All LineBackgroundSpans on a line contribute to its background. spansLength = 0; // Duplication of the logic of getParagraphSpans if (start != end || start == 0) { // Equivalent to a getSpans(start, end), but filling the 'spans' local // array instead to reduce memory allocation - for (int j = 0; j < lineBackgroundSpans.numberOfSpans; j++) { - // equal test is valid since both intervals are not empty by construction - if (lineBackgroundSpans.spanStarts[j] >= end || - lineBackgroundSpans.spanEnds[j] <= start) continue; + for (int j = 0; j < mLineBackgroundSpans.numberOfSpans; j++) { + // equal test is valid since both intervals are not empty by + // construction + if (mLineBackgroundSpans.spanStarts[j] >= end || + mLineBackgroundSpans.spanEnds[j] <= start) continue; if (spansLength == spans.length) { // The spans array needs to be expanded int newSize = ArrayUtils.idealObjectArraySize(2 * spansLength); @@ -410,7 +410,7 @@ public abstract class Layout { System.arraycopy(spans, 0, newSpans, 0, spansLength); spans = newSpans; } - spans[spansLength++] = lineBackgroundSpans.spans[j]; + spans[spansLength++] = mLineBackgroundSpans.spans[j]; } } } @@ -423,7 +423,7 @@ public abstract class Layout { } } } - lineBackgroundSpans.recycle(); + mLineBackgroundSpans.recycle(); } // There can be a highlight even without spans if we are drawing @@ -1687,7 +1687,7 @@ public abstract class Layout { * styles that are already applied to the buffer will apply to text that * is inserted into it. */ - /* package */ static <T> T[] getParagraphSpans(Spanned text, int start, int end, Class<T> type) { + /* package */static <T> T[] getParagraphSpans(Spanned text, int start, int end, Class<T> type) { if (start == end && start > 0) { return ArrayUtils.emptyArray(type); } @@ -1857,7 +1857,7 @@ public abstract class Layout { private static final Rect sTempRect = new Rect(); private boolean mSpannedText; private TextDirectionHeuristic mTextDir; - private SpanSet<LineBackgroundSpan> lineBackgroundSpans; + private SpanSet<LineBackgroundSpan> mLineBackgroundSpans; public static final int DIR_LEFT_TO_RIGHT = 1; public static final int DIR_RIGHT_TO_LEFT = -1; diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java index c5e2c42aabb6..09c9438971f1 100644 --- a/core/java/android/text/SpannableStringBuilder.java +++ b/core/java/android/text/SpannableStringBuilder.java @@ -260,7 +260,9 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable private void change(int start, int end, CharSequence cs, int csStart, int csEnd) { // Can be negative - final int nbNewChars = (csEnd - csStart) - (end - start); + final int replacedLength = end - start; + final int replacementLength = csEnd - csStart; + final int nbNewChars = replacementLength - replacedLength; for (int i = mSpanCount - 1; i >= 0; i--) { int spanStart = mSpanStarts[i]; @@ -308,7 +310,7 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable // The removal pass needs to be done before the gap is updated in order to broadcast the // correct previous positions to the correct intersecting SpanWatchers - if (end > start) { // no need for span fixup on pure insertion + if (replacedLength > 0) { // no need for span fixup on pure insertion // A for loop will not work because the array is being modified // Do not iterate in reverse to keep the SpanWatchers notified in ordering // Also, a removed SpanWatcher should not get notified of removed spans located @@ -334,29 +336,18 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable TextUtils.getChars(cs, csStart, csEnd, mText, start); - if (end > start) { // no need for span fixup on pure insertion + if (replacedLength > 0) { // no need for span fixup on pure insertion final boolean atEnd = (mGapStart + mGapLength == mText.length); + final boolean textIsRemoved = replacementLength == 0; for (int i = 0; i < mSpanCount; i++) { - if (mSpanStarts[i] >= start && mSpanStarts[i] < mGapStart + mGapLength) { - int flag = (mSpanFlags[i] & START_MASK) >> START_SHIFT; + final int startFlag = (mSpanFlags[i] & START_MASK) >> START_SHIFT; + mSpanStarts[i] = updatedIntervalBound(mSpanStarts[i], start, nbNewChars, startFlag, + atEnd, textIsRemoved); - if (flag == POINT || (flag == PARAGRAPH && atEnd)) { - mSpanStarts[i] = mGapStart + mGapLength; - } else { - mSpanStarts[i] = start; - } - } - - if (mSpanEnds[i] >= start && mSpanEnds[i] < mGapStart + mGapLength) { - int flag = (mSpanFlags[i] & END_MASK); - - if (flag == POINT || (flag == PARAGRAPH && atEnd)) { - mSpanEnds[i] = mGapStart + mGapLength; - } else { - mSpanEnds[i] = start; - } - } + final int endFlag = (mSpanFlags[i] & END_MASK); + mSpanEnds[i] = updatedIntervalBound(mSpanEnds[i], start, nbNewChars, endFlag, + atEnd, textIsRemoved); } } @@ -382,6 +373,38 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable } } + private int updatedIntervalBound(int offset, int start, int nbNewChars, int flag, boolean atEnd, + boolean textIsRemoved) { + if (offset >= start && offset < mGapStart + mGapLength) { + if (flag == POINT) { + // A POINT located inside the replaced range should be moved to the end of the + // replaced text. + // The exception is when the point is at the start of the range and we are doing a + // text replacement (as opposed to a deletion): the point stays there. + if (textIsRemoved || offset > start) { + return mGapStart + mGapLength; + } + } else { + if (flag == PARAGRAPH) { + if (atEnd) { + return mGapStart + mGapLength; + } + } else { // MARK + // MARKs should be moved to the start, with the exception of a mark located at the + // end of the range (which will be < mGapStart + mGapLength since mGapLength > 0) + // which should stay 'unchanged' at the end of the replaced text. + if (textIsRemoved || offset < mGapStart - nbNewChars) { + return start; + } else { + // Move to the end of replaced text (needed if nbNewChars != 0) + return mGapStart; + } + } + } + } + return offset; + } + private void removeSpan(int i) { Object object = mSpans[i]; @@ -1076,7 +1099,7 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable System.out.print("\n"); } - */ + */ /** * Don't call this yourself -- exists for Canvas to use internally. diff --git a/core/java/android/text/Spanned.java b/core/java/android/text/Spanned.java index d14fcbc4668f..2b73763186dc 100644 --- a/core/java/android/text/Spanned.java +++ b/core/java/android/text/Spanned.java @@ -28,13 +28,17 @@ extends CharSequence /** * Bitmask of bits that are relevent for controlling point/mark behavior * of spans. + * + * MARK and POINT are conceptually located <i>between</i> two adjacent characters. + * A MARK is "attached" to the character on the left hand side, while a POINT + * tends to stick to the character on the right hand side. */ public static final int SPAN_POINT_MARK_MASK = 0x33; /** * 0-length spans with type SPAN_MARK_MARK behave like text marks: * they remain at their original offset when text is inserted - * at that offset. + * at that offset. Conceptually, the text is added after the mark. */ public static final int SPAN_MARK_MARK = 0x11; /** @@ -50,6 +54,7 @@ extends CharSequence * 0-length spans with type SPAN_POINT_POINT behave like cursors: * they are pushed forward by the length of the insertion when text * is inserted at their offset. + * The text is conceptually inserted before the point. */ public static final int SPAN_POINT_POINT = 0x22; diff --git a/core/java/android/text/TextDirectionHeuristic.java b/core/java/android/text/TextDirectionHeuristic.java index 0bf64e4a9afb..513e11ce34d5 100644 --- a/core/java/android/text/TextDirectionHeuristic.java +++ b/core/java/android/text/TextDirectionHeuristic.java @@ -22,5 +22,5 @@ package android.text; * @hide */ public interface TextDirectionHeuristic { - /** @hide */ boolean isRtl(char[] text, int start, int count); + boolean isRtl(char[] text, int start, int count); } diff --git a/core/java/android/text/TextDirectionHeuristics.java b/core/java/android/text/TextDirectionHeuristics.java index 6ca61616384c..be2840b8665d 100644 --- a/core/java/android/text/TextDirectionHeuristics.java +++ b/core/java/android/text/TextDirectionHeuristics.java @@ -22,6 +22,7 @@ import android.view.View; /** * Some objects that implement TextDirectionHeuristic. + * @hide */ public class TextDirectionHeuristics { diff --git a/core/java/android/util/LocaleUtil.java b/core/java/android/util/LocaleUtil.java index 60526e198c94..93f5cd36cac5 100644 --- a/core/java/android/util/LocaleUtil.java +++ b/core/java/android/util/LocaleUtil.java @@ -24,6 +24,7 @@ import libcore.icu.ICU; /** * Various utilities for Locales * + * @hide */ public class LocaleUtil { @@ -40,7 +41,8 @@ public class LocaleUtil { * {@link View#LAYOUT_DIRECTION_LTR} or * {@link View#LAYOUT_DIRECTION_RTL}. * - * Be careful: this code will need to be updated when vertical scripts will be supported + * Warning: this code does not support vertical scripts. + * @hide */ public static int getLayoutDirectionFromLocale(Locale locale) { if (locale != null && !locale.equals(Locale.ROOT)) { @@ -66,8 +68,7 @@ public class LocaleUtil { * {@link View#LAYOUT_DIRECTION_LTR} or * {@link View#LAYOUT_DIRECTION_RTL}. * - * Be careful: this code will need to be updated when vertical scripts will be supported - * + * Warning: this code does not support vertical scripts. * @hide */ private static int getLayoutDirectionFromFirstChar(Locale locale) { diff --git a/core/java/android/util/MathUtils.java b/core/java/android/util/MathUtils.java index b35dd1eac0de..13a692ea18c9 100644 --- a/core/java/android/util/MathUtils.java +++ b/core/java/android/util/MathUtils.java @@ -39,6 +39,10 @@ public final class MathUtils { return amount < low ? low : (amount > high ? high : amount); } + public static long constrain(long amount, long low, long high) { + return amount < low ? low : (amount > high ? high : amount); + } + public static float constrain(float amount, float low, float high) { return amount < low ? low : (amount > high ? high : amount); } diff --git a/core/java/android/view/ActionMode.java b/core/java/android/view/ActionMode.java index 0ba5fdbc4f1a..a359952ddcf2 100644 --- a/core/java/android/view/ActionMode.java +++ b/core/java/android/view/ActionMode.java @@ -30,6 +30,7 @@ package android.view; */ public abstract class ActionMode { private Object mTag; + private boolean mTitleOptionalHint; /** * Set a tag object associated with this ActionMode. @@ -119,6 +120,18 @@ public abstract class ActionMode { * @param titleOptional true if the title only presents optional information. */ public void setTitleOptionalHint(boolean titleOptional) { + mTitleOptionalHint = titleOptional; + } + + /** + * @return true if this action mode has been given a hint to consider the + * title/subtitle display to be optional. + * + * @see #setTitleOptionalHint(boolean) + * @see #isTitleOptional() + */ + public boolean getTitleOptionalHint() { + return mTitleOptionalHint; } /** diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java index 1cb15a6abd52..b319cd56cc09 100644 --- a/core/java/android/view/Choreographer.java +++ b/core/java/android/view/Choreographer.java @@ -69,18 +69,15 @@ public final class Choreographer { private static final boolean USE_VSYNC = SystemProperties.getBoolean( "debug.choreographer.vsync", true); - // Enable/disable allowing traversals to proceed immediately if no drawing occurred - // during the previous frame. When true, the Choreographer can degrade more gracefully - // if drawing takes longer than a frame, but it may potentially block in eglSwapBuffers() - // if there are two dirty buffers enqueued. - // When false, we always schedule traversals on strict vsync boundaries. - private static final boolean USE_PIPELINING = SystemProperties.getBoolean( - "debug.choreographer.pipeline", false); + // Enable/disable using the frame time instead of returning now. + private static final boolean USE_FRAME_TIME = SystemProperties.getBoolean( + "debug.choreographer.frametime", true); + + private static final long NANOS_PER_MS = 1000000; private static final int MSG_DO_FRAME = 0; private static final int MSG_DO_SCHEDULE_VSYNC = 1; private static final int MSG_DO_SCHEDULE_CALLBACK = 2; - private static final int MSG_DO_TRAVERSAL = 3; private final Object mLock = new Object(); @@ -93,9 +90,8 @@ public final class Choreographer { private final CallbackQueue[] mCallbackQueues; private boolean mFrameScheduled; - private long mLastFrameTime; - private boolean mDrewLastFrame; - private boolean mTraversalScheduled; + private boolean mCallbacksRunning; + private long mLastFrameTimeNanos; /** * Callback type: Input callback. Runs first. @@ -119,7 +115,7 @@ public final class Choreographer { mLooper = looper; mHandler = new FrameHandler(looper); mDisplayEventReceiver = USE_VSYNC ? new FrameDisplayEventReceiver(looper) : null; - mLastFrameTime = Long.MIN_VALUE; + mLastFrameTimeNanos = Long.MIN_VALUE; mCallbackQueues = new CallbackQueue[CALLBACK_LAST + 1]; for (int i = 0; i <= CALLBACK_LAST; i++) { @@ -236,35 +232,11 @@ public final class Choreographer { } synchronized (mLock) { - if (USE_PIPELINING && callbackType == CALLBACK_INPUT) { - Message msg = Message.obtain(mHandler, action); - msg.setAsynchronous(true); - mHandler.sendMessage(msg); - return; - } - final long now = SystemClock.uptimeMillis(); final long dueTime = now + delayMillis; mCallbackQueues[callbackType].addCallbackLocked(dueTime, action, token); if (dueTime <= now) { - if (USE_PIPELINING && callbackType == CALLBACK_TRAVERSAL) { - if (!mDrewLastFrame) { - if (DEBUG) { - Log.d(TAG, "Scheduling traversal immediately."); - } - if (!mTraversalScheduled) { - mTraversalScheduled = true; - Message msg = mHandler.obtainMessage(MSG_DO_TRAVERSAL); - msg.setAsynchronous(true); - mHandler.sendMessageAtTime(msg, dueTime); - } - return; - } - if (DEBUG) { - Log.d(TAG, "Scheduling traversal on next frame."); - } - } scheduleFrameLocked(now); } else { Message msg = mHandler.obtainMessage(MSG_DO_SCHEDULE_CALLBACK, action); @@ -306,23 +278,36 @@ public final class Choreographer { } /** - * Tells the choreographer that the application has actually drawn to a surface. + * Gets the time when the current frame started. The frame time should be used + * instead of {@link SystemClock#uptimeMillis()} to synchronize animations. + * This helps to reduce inter-frame jitter because the frame time is fixed at the + * time the frame was scheduled to start, regardless of when the animations or + * drawing code actually ran. + * + * This method should only be called from within a callback. * - * It uses this information to determine whether to draw immediately or to - * post a draw to the next vsync because it might otherwise block. + * @return The frame start time, in the {@link SystemClock#uptimeMillis()} time base. + * + * @throws IllegalStateException if no frame is in progress. */ - public void notifyDrawOccurred() { - if (DEBUG) { - Log.d(TAG, "Draw occurred."); - } + public long getFrameTime() { + return getFrameTimeNanos() / NANOS_PER_MS; + } - if (USE_PIPELINING) { - synchronized (mLock) { - if (!mDrewLastFrame) { - mDrewLastFrame = true; - scheduleFrameLocked(SystemClock.uptimeMillis()); - } + /** + * Same as {@link #getFrameTime()} but with nanosecond precision. + * + * @return The frame start time, in the {@link System#nanoTime()} time base. + * + * @throws IllegalStateException if no frame is in progress. + */ + public long getFrameTimeNanos() { + synchronized (mLock) { + if (!mCallbacksRunning) { + throw new IllegalStateException("This method must only be called as " + + "part of a callback while a frame is in progress."); } + return USE_FRAME_TIME ? mLastFrameTimeNanos : System.nanoTime(); } } @@ -345,7 +330,8 @@ public final class Choreographer { mHandler.sendMessageAtFrontOfQueue(msg); } } else { - final long nextFrameTime = Math.max(mLastFrameTime + sFrameDelay, now); + final long nextFrameTime = Math.max( + mLastFrameTimeNanos / NANOS_PER_MS + sFrameDelay, now); if (DEBUG) { Log.d(TAG, "Scheduling next frame in " + (nextFrameTime - now) + " ms."); } @@ -356,14 +342,18 @@ public final class Choreographer { } } - void doFrame(int frame) { + void doFrame(long timestampNanos, int frame) { synchronized (mLock) { if (!mFrameScheduled) { return; // no work to do } mFrameScheduled = false; - mLastFrameTime = SystemClock.uptimeMillis(); - mDrewLastFrame = false; + mLastFrameTimeNanos = timestampNanos; + } + + final long startNanos; + if (DEBUG) { + startNanos = System.nanoTime(); } doCallbacks(Choreographer.CALLBACK_INPUT); @@ -371,25 +361,24 @@ public final class Choreographer { doCallbacks(Choreographer.CALLBACK_TRAVERSAL); if (DEBUG) { + final long endNanos = System.nanoTime(); Log.d(TAG, "Frame " + frame + ": Finished, took " - + (SystemClock.uptimeMillis() - mLastFrameTime) + " ms."); + + (endNanos - startNanos) * 0.000001f + " ms, latency " + + (startNanos - timestampNanos) * 0.000001f + " ms."); } } void doCallbacks(int callbackType) { - final long start; Callback callbacks; synchronized (mLock) { - start = SystemClock.uptimeMillis(); - callbacks = mCallbackQueues[callbackType].extractDueCallbacksLocked(start); - - if (USE_PIPELINING && callbackType == CALLBACK_TRAVERSAL && mTraversalScheduled) { - mTraversalScheduled = false; - mHandler.removeMessages(MSG_DO_TRAVERSAL); + final long now = SystemClock.uptimeMillis(); + callbacks = mCallbackQueues[callbackType].extractDueCallbacksLocked(now); + if (callbacks == null) { + return; } + mCallbacksRunning = true; } - - if (callbacks != null) { + try { for (Callback c = callbacks; c != null; c = c.next) { if (DEBUG) { Log.d(TAG, "RunCallback: type=" + callbackType @@ -398,8 +387,9 @@ public final class Choreographer { } c.action.run(); } - + } finally { synchronized (mLock) { + mCallbacksRunning = false; do { final Callback next = callbacks.next; recycleCallbackLocked(callbacks); @@ -428,15 +418,6 @@ public final class Choreographer { } } - void doTraversal() { - synchronized (mLock) { - if (mTraversalScheduled) { - mTraversalScheduled = false; - doCallbacks(CALLBACK_TRAVERSAL); - } - } - } - private void scheduleVsyncLocked() { mDisplayEventReceiver.scheduleVsync(); } @@ -475,7 +456,7 @@ public final class Choreographer { public void handleMessage(Message msg) { switch (msg.what) { case MSG_DO_FRAME: - doFrame(0); + doFrame(System.nanoTime(), 0); break; case MSG_DO_SCHEDULE_VSYNC: doScheduleVsync(); @@ -483,9 +464,6 @@ public final class Choreographer { case MSG_DO_SCHEDULE_CALLBACK: doScheduleCallback(msg.arg1); break; - case MSG_DO_TRAVERSAL: - doTraversal(); - break; } } } @@ -497,7 +475,7 @@ public final class Choreographer { @Override public void onVsync(long timestampNanos, int frame) { - doFrame(frame); + doFrame(timestampNanos, frame); } } diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index bda80162c657..c94731201349 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -391,6 +391,15 @@ public class Display { } /** + * If the display is mirrored to an external HDMI display, returns the + * rotation of that display relative to its natural orientation. + * @hide + */ + public int getExternalRotation() { + return Surface.ROTATION_0; + } + + /** * Gets display metrics based on an explicit assumed display size. * @hide */ diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java index fba73fbdd522..3dab17489d25 100644 --- a/core/java/android/view/DisplayList.java +++ b/core/java/android/view/DisplayList.java @@ -30,7 +30,7 @@ import android.graphics.Matrix; public abstract class DisplayList { /** * Flag used when calling - * {@link HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int)}. + * {@link HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int)} * When this flag is set, draw operations lying outside of the bounds of the * display list will be culled early. It is recommeneded to always set this * flag. @@ -42,21 +42,21 @@ public abstract class DisplayList { /** * Indicates that the display list is done drawing. * - * @see HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int) + * @see HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int) */ public static final int STATUS_DONE = 0x0; /** * Indicates that the display list needs another drawing pass. * - * @see HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int) + * @see HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int) */ public static final int STATUS_DRAW = 0x1; /** * Indicates that the display list needs to re-execute its GL functors. * - * @see HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int) + * @see HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int) * @see HardwareCanvas#callDrawGLFunction(int) */ public static final int STATUS_INVOKE = 0x2; diff --git a/core/java/android/view/FocusFinder.java b/core/java/android/view/FocusFinder.java index 98375aeacf24..6bf1888cc2c2 100644 --- a/core/java/android/view/FocusFinder.java +++ b/core/java/android/view/FocusFinder.java @@ -62,7 +62,7 @@ public class FocusFinder { * @return The next focusable view, or null if none exists. */ public final View findNextFocus(ViewGroup root, View focused, int direction) { - return findNextFocus(root, focused, mFocusedRect, direction); + return findNextFocus(root, focused, null, direction); } /** @@ -122,34 +122,40 @@ public class FocusFinder { int direction, ArrayList<View> focusables) { final int directionMasked = (direction & ~View.FOCUS_ACCESSIBILITY); if (focused != null) { + if (focusedRect == null) { + focusedRect = mFocusedRect; + } // fill in interesting rect from focused focused.getFocusedRect(focusedRect); root.offsetDescendantRectToMyCoords(focused, focusedRect); } else { - // make up a rect at top left or bottom right of root - switch (directionMasked) { - case View.FOCUS_RIGHT: - case View.FOCUS_DOWN: - setFocusTopLeft(root, focusedRect); - break; - case View.FOCUS_FORWARD: - if (root.isLayoutRtl()) { - setFocusBottomRight(root, focusedRect); - } else { - setFocusTopLeft(root, focusedRect); - } - break; - - case View.FOCUS_LEFT: - case View.FOCUS_UP: - setFocusBottomRight(root, focusedRect); - break; - case View.FOCUS_BACKWARD: - if (root.isLayoutRtl()) { + if (focusedRect == null) { + focusedRect = mFocusedRect; + // make up a rect at top left or bottom right of root + switch (directionMasked) { + case View.FOCUS_RIGHT: + case View.FOCUS_DOWN: setFocusTopLeft(root, focusedRect); - } else { + break; + case View.FOCUS_FORWARD: + if (root.isLayoutRtl()) { + setFocusBottomRight(root, focusedRect); + } else { + setFocusTopLeft(root, focusedRect); + } + break; + + case View.FOCUS_LEFT: + case View.FOCUS_UP: setFocusBottomRight(root, focusedRect); - break; + break; + case View.FOCUS_BACKWARD: + if (root.isLayoutRtl()) { + setFocusTopLeft(root, focusedRect); + } else { + setFocusBottomRight(root, focusedRect); + break; + } } } } diff --git a/core/java/android/view/Gravity.java b/core/java/android/view/Gravity.java index f031fe767b58..4547aa681c07 100644 --- a/core/java/android/view/Gravity.java +++ b/core/java/android/view/Gravity.java @@ -155,6 +155,7 @@ public class Gravity * * @see {@link View#LAYOUT_DIRECTION_LTR} * @see {@link View#LAYOUT_DIRECTION_RTL} + * @hide */ public static void apply(int gravity, int w, int h, Rect container, Rect outRect, int layoutDirection) { @@ -292,6 +293,7 @@ public class Gravity * * @see {@link View#LAYOUT_DIRECTION_LTR} * @see {@link View#LAYOUT_DIRECTION_RTL} + * @hide */ public static void apply(int gravity, int w, int h, Rect container, int xAdj, int yAdj, Rect outRect, int layoutDirection) { @@ -372,6 +374,7 @@ public class Gravity * * @see {@link View#LAYOUT_DIRECTION_LTR} * @see {@link View#LAYOUT_DIRECTION_RTL} + * @hide */ public static void applyDisplay(int gravity, Rect display, Rect inoutObj, int layoutDirection) { int absGravity = getAbsoluteGravity(gravity, layoutDirection); @@ -408,6 +411,7 @@ public class Gravity * @param gravity The gravity to convert to absolute (horizontal) values. * @param layoutDirection The layout direction. * @return gravity converted to absolute (horizontal) values. + * @hide */ public static int getAbsoluteGravity(int gravity, int layoutDirection) { int result = gravity; diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index b9295c368493..c0771c5c1fee 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -72,7 +72,7 @@ public abstract class HardwareRenderer { * "true", to enable partial invalidates * "false", to disable partial invalidates */ - static final String RENDER_DIRTY_REGIONS_PROPERTY = "hwui.render_dirty_regions"; + static final String RENDER_DIRTY_REGIONS_PROPERTY = "debug.hwui.render_dirty_regions"; /** * System property used to enable or disable vsync. @@ -82,7 +82,7 @@ public abstract class HardwareRenderer { * "true", to disable vsync * "false", to enable vsync */ - static final String DISABLE_VSYNC_PROPERTY = "hwui.disable_vsync"; + static final String DISABLE_VSYNC_PROPERTY = "debug.hwui.disable_vsync"; /** * System property used to enable or disable hardware rendering profiling. @@ -95,8 +95,10 @@ public abstract class HardwareRenderer { * Possible values: * "true", to enable profiling * "false", to disable profiling + * + * @hide */ - static final String PROFILE_PROPERTY = "hwui.profile"; + public static final String PROFILE_PROPERTY = "debug.hwui.profile"; /** * System property used to specify the number of frames to be used @@ -110,7 +112,7 @@ public abstract class HardwareRenderer { * Possible values: * "60", to set the limit of frames to 60 */ - static final String PROFILE_MAXFRAMES_PROPERTY = "hwui.profile.maxframes"; + static final String PROFILE_MAXFRAMES_PROPERTY = "debug.hwui.profile.maxframes"; /** * System property used to debug EGL configuration choice. @@ -119,7 +121,7 @@ public abstract class HardwareRenderer { * "choice", print the chosen configuration only * "all", print all possible configurations */ - static final String PRINT_CONFIG_PROPERTY = "hwui.print_config"; + static final String PRINT_CONFIG_PROPERTY = "debug.hwui.print_config"; /** * Turn on to draw dirty regions every other frame. @@ -127,8 +129,10 @@ public abstract class HardwareRenderer { * Possible values: * "true", to enable dirty regions debugging * "false", to disable dirty regions debugging + * + * @hide */ - static final String DEBUG_DIRTY_REGIONS_PROPERTY = "hwui.debug_dirty_regions"; + public static final String DEBUG_DIRTY_REGIONS_PROPERTY = "debug.hwui.show_dirty_regions"; /** * A process can set this flag to false to prevent the use of hardware diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl index 497bc90b8ed6..555f306d965b 100644 --- a/core/java/android/view/IWindow.aidl +++ b/core/java/android/view/IWindow.aidl @@ -45,8 +45,8 @@ oneway interface IWindow { */ void executeCommand(String command, String parameters, in ParcelFileDescriptor descriptor); - void resized(int w, int h, in Rect coveredInsets, in Rect visibleInsets, - boolean reportDraw, in Configuration newConfig); + void resized(int w, int h, in Rect systemInsets, in Rect contentInsets, + in Rect visibleInsets, boolean reportDraw, in Configuration newConfig); void dispatchAppVisibility(boolean visible); void dispatchGetNewSurface(); void dispatchScreenState(boolean on); @@ -70,11 +70,18 @@ oneway interface IWindow { /** * Drag/drop events */ - void dispatchDragEvent(in DragEvent event); + void dispatchDragEvent(in DragEvent event); /** * System chrome visibility changes */ - void dispatchSystemUiVisibilityChanged(int seq, int globalVisibility, + void dispatchSystemUiVisibilityChanged(int seq, int globalVisibility, int localValue, int localChanges); + + /** + * If the window manager returned RELAYOUT_RES_ANIMATING + * from relayout(), this method will be called when the animation + * is done. + */ + void doneAnimating(); } diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl index 53d6e1f20281..f26d5e1d14cf 100644 --- a/core/java/android/view/IWindowSession.aidl +++ b/core/java/android/view/IWindowSession.aidl @@ -58,6 +58,10 @@ interface IWindowSession { * {@link WindowManagerImpl#RELAYOUT_DEFER_SURFACE_DESTROY}. * @param outFrame Rect in which is placed the new position/size on * screen. + * @param outSystemInsets Rect in which is placed the offsets from + * <var>outFrame</var> over which any core system UI elements are + * currently covering the window. This is not generally used for + * layout, but just to know where the window is obscured. * @param outContentInsets Rect in which is placed the offsets from * <var>outFrame</var> in which the content of the window should be * placed. This can be used to modify the window layout to ensure its @@ -79,9 +83,9 @@ interface IWindowSession { */ int relayout(IWindow window, int seq, in WindowManager.LayoutParams attrs, int requestedWidth, int requestedHeight, int viewVisibility, - int flags, out Rect outFrame, out Rect outContentInsets, - out Rect outVisibleInsets, out Configuration outConfig, - out Surface outSurface); + int flags, out Rect outFrame, out Rect outSystemInsets, + out Rect outContentInsets, out Rect outVisibleInsets, + out Configuration outConfig, out Surface outSurface); /** * If a call to relayout() asked to have the surface destroy deferred, diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java index 85f435c76116..2ea03604315d 100755 --- a/core/java/android/view/InputDevice.java +++ b/core/java/android/view/InputDevice.java @@ -46,6 +46,7 @@ public final class InputDevice implements Parcelable { private final int mGeneration; private final String mName; private final String mDescriptor; + private final boolean mIsExternal; private final int mSources; private final int mKeyboardType; private final KeyCharacterMap mKeyCharacterMap; @@ -322,12 +323,14 @@ public final class InputDevice implements Parcelable { }; // Called by native code. - private InputDevice(int id, int generation, String name, String descriptor, int sources, + private InputDevice(int id, int generation, String name, String descriptor, + boolean isExternal, int sources, int keyboardType, KeyCharacterMap keyCharacterMap, boolean hasVibrator) { mId = id; mGeneration = generation; mName = name; mDescriptor = descriptor; + mIsExternal = isExternal; mSources = sources; mKeyboardType = keyboardType; mKeyCharacterMap = keyCharacterMap; @@ -339,6 +342,7 @@ public final class InputDevice implements Parcelable { mGeneration = in.readInt(); mName = in.readString(); mDescriptor = in.readString(); + mIsExternal = in.readInt() != 0; mSources = in.readInt(); mKeyboardType = in.readInt(); mKeyCharacterMap = KeyCharacterMap.CREATOR.createFromParcel(in); @@ -414,7 +418,7 @@ public final class InputDevice implements Parcelable { * has a trackpad. Alternately, it may be that the input devices are simply * indistinguishable, such as two keyboards made by the same manufacturer. * </p><p> - * The input device descriptor returned by {@link #getDescriptor} should only bt + * The input device descriptor returned by {@link #getDescriptor} should only be * used when an application needs to remember settings associated with a particular * input device. For all other purposes when referring to a logical * {@link InputDevice} instance at runtime use the id returned by {@link #getId()}. @@ -443,6 +447,18 @@ public final class InputDevice implements Parcelable { } /** + * Returns true if the device is external (connected to USB or Bluetooth or some other + * peripheral bus), otherwise it is built-in. + * + * @return True if the device is external. + * + * @hide + */ + public boolean isExternal() { + return mIsExternal; + } + + /** * Gets the name of this input device. * @return The input device name. */ @@ -660,6 +676,7 @@ public final class InputDevice implements Parcelable { out.writeInt(mGeneration); out.writeString(mName); out.writeString(mDescriptor); + out.writeInt(mIsExternal ? 1 : 0); out.writeInt(mSources); out.writeInt(mKeyboardType); mKeyCharacterMap.writeToParcel(out, flags); @@ -689,6 +706,7 @@ public final class InputDevice implements Parcelable { description.append("Input Device ").append(mId).append(": ").append(mName).append("\n"); description.append(" Descriptor: ").append(mDescriptor).append("\n"); description.append(" Generation: ").append(mGeneration).append("\n"); + description.append(" Location: ").append(mIsExternal ? "external" : "built-in").append("\n"); description.append(" Keyboard Type: "); switch (mKeyboardType) { diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java index 6a457ece9b9d..9c56782f9091 100644 --- a/core/java/android/view/InputEventReceiver.java +++ b/core/java/android/view/InputEventReceiver.java @@ -46,7 +46,8 @@ public abstract class InputEventReceiver { InputChannel inputChannel, MessageQueue messageQueue); private static native void nativeDispose(int receiverPtr); private static native void nativeFinishInputEvent(int receiverPtr, int seq, boolean handled); - private static native void nativeConsumeBatchedInputEvents(int receiverPtr); + private static native void nativeConsumeBatchedInputEvents(int receiverPtr, + long frameTimeNanos); /** * Creates an input event receiver bound to the specified input channel. @@ -114,7 +115,7 @@ public abstract class InputEventReceiver { * immediately (such as a pointer up event). */ public void onBatchedInputEventPending() { - consumeBatchedInputEvents(); + consumeBatchedInputEvents(-1); } /** @@ -150,13 +151,16 @@ public abstract class InputEventReceiver { * * This method forces all batched input events to be delivered immediately. * Should be called just before animating or drawing a new frame in the UI. + * + * @param frameTimeNanos The time in the {@link System#nanoTime()} time base + * when the current display frame started rendering, or -1 if unknown. */ - public final void consumeBatchedInputEvents() { + public final void consumeBatchedInputEvents(long frameTimeNanos) { if (mReceiverPtr == 0) { Log.w(TAG, "Attempted to consume batched input events but the input event " + "receiver has already been disposed."); } else { - nativeConsumeBatchedInputEvents(mReceiverPtr); + nativeConsumeBatchedInputEvents(mReceiverPtr, frameTimeNanos); } } diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index 53af3c56bf21..1011d7a1bb53 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -510,6 +510,8 @@ public class Surface implements Parcelable { public native void setFreezeTint(int tint); /** @hide */ public native void setFlags(int flags, int mask); + /** @hide */ + public native void setActiveRect(Rect activeRect); diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index c658a80323d7..ee322f8b773c 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -98,6 +98,7 @@ public class SurfaceView extends View { MyWindow mWindow; final Rect mVisibleInsets = new Rect(); final Rect mWinFrame = new Rect(); + final Rect mSystemInsets = new Rect(); final Rect mContentInsets = new Rect(); final Configuration mConfiguration = new Configuration(); @@ -471,7 +472,7 @@ public class SurfaceView extends View { mWindow, mWindow.mSeq, mLayout, mWidth, mHeight, visible ? VISIBLE : GONE, WindowManagerImpl.RELAYOUT_DEFER_SURFACE_DESTROY, - mWinFrame, mContentInsets, + mWinFrame, mSystemInsets, mContentInsets, mVisibleInsets, mConfiguration, mNewSurface); if ((relayoutResult&WindowManagerImpl.RELAYOUT_RES_FIRST_TIME) != 0) { mReportDrawNeeded = true; @@ -605,7 +606,7 @@ public class SurfaceView extends View { mSurfaceView = new WeakReference<SurfaceView>(surfaceView); } - public void resized(int w, int h, Rect coveredInsets, + public void resized(int w, int h, Rect systemInsets, Rect contentInsets, Rect visibleInsets, boolean reportDraw, Configuration newConfig) { SurfaceView surfaceView = mSurfaceView.get(); if (surfaceView != null) { diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java index 214dc5c12b74..651be2e9c1e4 100644 --- a/core/java/android/view/TextureView.java +++ b/core/java/android/view/TextureView.java @@ -339,8 +339,7 @@ public class TextureView extends View { mLayer = mAttachInfo.mHardwareRenderer.createHardwareLayer(mOpaque); if (!mUpdateSurface) { - // We already have a SurfaceTexture to use, and we will pass it - // to mLayer below. + // Create a new SurfaceTexture for the layer. mSurface = mAttachInfo.mHardwareRenderer.createSurfaceTexture(mLayer); } nSetDefaultBufferSize(mSurface, getWidth(), getHeight()); @@ -359,7 +358,7 @@ public class TextureView extends View { }; mSurface.setOnFrameAvailableListener(mUpdateListener); - if (mListener != null) { + if (mListener != null && !mUpdateSurface) { mListener.onSurfaceTextureAvailable(mSurface, getWidth(), getHeight()); } } @@ -669,7 +668,9 @@ public class TextureView extends View { * SurfaceTexture} is already being used by this view, it is immediately * released and not be usable any more. The {@link * SurfaceTextureListener#onSurfaceTextureDestroyed} callback is <b>not</b> - * called. + * called for the previous {@link SurfaceTexture}. Similarly, the {@link + * SurfaceTextureListener#onSurfaceTextureAvailable} callback is <b>not</b> + * called for the {@link SurfaceTexture} passed to setSurfaceTexture. * * The {@link SurfaceTexture} object must be detached from all OpenGL ES * contexts prior to calling this method. diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index b65bf8f70019..d1d036c57efc 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -340,10 +340,9 @@ import java.util.concurrent.CopyOnWriteArrayList; * Padding can be used to offset the content of the view by a specific amount of * pixels. For instance, a left padding of 2 will push the view's content by * 2 pixels to the right of the left edge. Padding can be set using the - * {@link #setPadding(int, int, int, int)} or {@link #setPaddingRelative(int, int, int, int)} - * method and queried by calling {@link #getPaddingLeft()}, {@link #getPaddingTop()}, - * {@link #getPaddingRight()}, {@link #getPaddingBottom()}, {@link #getPaddingStart()}, - * {@link #getPaddingEnd()}. + * {@link #setPadding(int, int, int, int)} method and queried by calling + * {@link #getPaddingLeft()}, {@link #getPaddingTop()}, {@link #getPaddingRight()}, + * {@link #getPaddingBottom()}. * </p> * * <p> @@ -537,9 +536,32 @@ import java.util.concurrent.CopyOnWriteArrayList; * themselves rather than by putting them in a separate structure. * </p> * + * <a name="Properties"></a> + * <h3>Properties</h3> + * <p> + * The View class exposes an {@link #ALPHA} property, as well as several transform-related + * properties, such as {@link #TRANSLATION_X} and {@link #TRANSLATION_Y}. These properties are + * available both in the {@link Property} form as well as in similarly-named setter/getter + * methods (such as {@link #setAlpha(float)} for {@link #ALPHA}). These properties can + * be used to set persistent state associated with these rendering-related properties on the view. + * The properties and methods can also be used in conjunction with + * {@link android.animation.Animator Animator}-based animations, described more in the + * <a href="#Animation">Animation</a> section. + * </p> + * * <a name="Animation"></a> * <h3>Animation</h3> * <p> + * Starting with Android 3.0, the preferred way of animating views is to use the + * {@link android.animation} package APIs. These {@link android.animation.Animator Animator}-based + * classes change actual properties of the View object, such as {@link #setAlpha(float) alpha} and + * {@link #setTranslationX(float) translationX}. This behavior is contrasted to that of the pre-3.0 + * {@link android.view.animation.Animation Animation}-based classes, which instead animate only + * how the view is drawn on the display. In particular, the {@link ViewPropertyAnimator} class + * makes animating these View properties particularly easy and efficient. + * </p> + * <p> + * Alternatively, you can use the pre-3.0 animation classes to animate how Views are rendered. * You can attach an {@link Animation} object to a view using * {@link #setAnimation(Animation)} or * {@link #startAnimation(Animation)}. The animation can alter the scale, @@ -548,10 +570,6 @@ import java.util.concurrent.CopyOnWriteArrayList; * subtree rooted by that node. When an animation is started, the framework will * take care of redrawing the appropriate views until the animation completes. * </p> - * <p> - * Starting with Android 3.0, the preferred way of animating views is to use the - * {@link android.animation} package APIs. - * </p> * * <a name="Security"></a> * <h3>Security</h3> @@ -606,8 +624,6 @@ import java.util.concurrent.CopyOnWriteArrayList; * @attr ref android.R.styleable#View_paddingLeft * @attr ref android.R.styleable#View_paddingRight * @attr ref android.R.styleable#View_paddingTop - * @attr ref android.R.styleable#View_paddingStart - * @attr ref android.R.styleable#View_paddingEnd * @attr ref android.R.styleable#View_saveEnabled * @attr ref android.R.styleable#View_rotation * @attr ref android.R.styleable#View_rotationX @@ -629,7 +645,6 @@ import java.util.concurrent.CopyOnWriteArrayList; * @attr ref android.R.styleable#View_scrollbarAlwaysDrawVerticalTrack * @attr ref android.R.styleable#View_soundEffectsEnabled * @attr ref android.R.styleable#View_tag - * @attr ref android.R.styleable#View_textAlignment * @attr ref android.R.styleable#View_transformPivotX * @attr ref android.R.styleable#View_transformPivotY * @attr ref android.R.styleable#View_translationX @@ -648,6 +663,13 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal protected static final String VIEW_LOG_TAG = "View"; /** + * When set to true, apps will draw debugging information about their layouts. + * + * @hide + */ + public static final String DEBUG_LAYOUT_PROPERTY = "debug.layout"; + + /** * Used to mark a View that has no ID. */ public static final int NO_ID = -1; @@ -1756,24 +1778,28 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Horizontal layout direction of this view is from Left to Right. * Use with {@link #setLayoutDirection}. + * @hide */ public static final int LAYOUT_DIRECTION_LTR = 0; /** * Horizontal layout direction of this view is from Right to Left. * Use with {@link #setLayoutDirection}. + * @hide */ public static final int LAYOUT_DIRECTION_RTL = 1; /** * Horizontal layout direction of this view is inherited from its parent. * Use with {@link #setLayoutDirection}. + * @hide */ public static final int LAYOUT_DIRECTION_INHERIT = 2; /** * Horizontal layout direction of this view is from deduced from the default language * script for the locale. Use with {@link #setLayoutDirection}. + * @hide */ public static final int LAYOUT_DIRECTION_LOCALE = 3; @@ -1838,6 +1864,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Text direction is inherited thru {@link ViewGroup} + * @hide */ public static final int TEXT_DIRECTION_INHERIT = 0; @@ -1845,6 +1872,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Text direction is using "first strong algorithm". The first strong directional character * determines the paragraph direction. If there is no strong directional character, the * paragraph direction is the view's resolved layout direction. + * @hide */ public static final int TEXT_DIRECTION_FIRST_STRONG = 1; @@ -1852,26 +1880,31 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Text direction is using "any-RTL" algorithm. The paragraph direction is RTL if it contains * any strong RTL character, otherwise it is LTR if it contains any strong LTR characters. * If there are neither, the paragraph direction is the view's resolved layout direction. + * @hide */ public static final int TEXT_DIRECTION_ANY_RTL = 2; /** * Text direction is forced to LTR. + * @hide */ public static final int TEXT_DIRECTION_LTR = 3; /** * Text direction is forced to RTL. + * @hide */ public static final int TEXT_DIRECTION_RTL = 4; /** * Text direction is coming from the system Locale. + * @hide */ public static final int TEXT_DIRECTION_LOCALE = 5; /** * Default text direction is inherited + * @hide */ protected static int TEXT_DIRECTION_DEFAULT = TEXT_DIRECTION_INHERIT; @@ -1929,6 +1962,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /* * Default text alignment. The text alignment of this View is inherited from its parent. * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_INHERIT = 0; @@ -1937,6 +1971,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s text direction. * * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_GRAVITY = 1; @@ -1944,6 +1979,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Align to the start of the paragraph, e.g. ALIGN_NORMAL. * * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_TEXT_START = 2; @@ -1951,6 +1987,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Align to the end of the paragraph, e.g. ALIGN_OPPOSITE. * * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_TEXT_END = 3; @@ -1958,6 +1995,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Center the paragraph, e.g. ALIGN_CENTER. * * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_CENTER = 4; @@ -1966,6 +2004,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * layoutDirection is LTR, and ALIGN_RIGHT otherwise. * * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_VIEW_START = 5; @@ -1974,11 +2013,13 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * layoutDirection is LTR, and ALIGN_LEFT otherwise. * * Use with {@link #setTextAlignment(int)} + * @hide */ public static final int TEXT_ALIGNMENT_VIEW_END = 6; /** * Default text alignment is inherited + * @hide */ protected static int TEXT_ALIGNMENT_DEFAULT = TEXT_ALIGNMENT_GRAVITY; @@ -4661,6 +4702,24 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal info.addAction(AccessibilityNodeInfo.ACTION_FOCUS); } } + + info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS); + info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); + + if (isClickable()) { + info.addAction(AccessibilityNodeInfo.ACTION_CLICK); + } + + if (isLongClickable()) { + info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); + } + + if (getContentDescription() != null) { + info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY); + info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY); + info.setGranularities(AccessibilityNodeInfo.GRANULARITY_CHARACTER + | AccessibilityNodeInfo.GRANULARITY_WORD); + } } /** @@ -5327,7 +5386,9 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #LAYOUT_DIRECTION_RTL}, * {@link #LAYOUT_DIRECTION_INHERIT} or * {@link #LAYOUT_DIRECTION_LOCALE}. + * * @attr ref android.R.styleable#View_layoutDirection + * @hide */ @ViewDebug.ExportedProperty(category = "layout", mapping = { @ViewDebug.IntToString(from = LAYOUT_DIRECTION_LTR, to = "LTR"), @@ -5349,6 +5410,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #LAYOUT_DIRECTION_LOCALE}. * * @attr ref android.R.styleable#View_layoutDirection + * @hide */ @RemotableViewMethod public void setLayoutDirection(int layoutDirection) { @@ -5368,6 +5430,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * * @return {@link #LAYOUT_DIRECTION_RTL} if the layout direction is RTL or returns * {@link #LAYOUT_DIRECTION_LTR} if the layout direction is not RTL. + * @hide */ @ViewDebug.ExportedProperty(category = "layout", mapping = { @ViewDebug.IntToString(from = LAYOUT_DIRECTION_LTR, to = "RESOLVED_DIRECTION_LTR"), @@ -5387,6 +5450,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * layout attribute and/or the inherited value from the parent * * @return true if the layout is right-to-left. + * @hide */ @ViewDebug.ExportedProperty(category = "layout") public boolean isLayoutRtl() { @@ -5398,6 +5462,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * app should not need to concern itself with saving and restoring, but that * the framework should take special note to preserve when possible. * + * <p>A view with transient state cannot be trivially rebound from an external + * data source, such as an adapter binding item views in a list. This may be + * because the view is performing an animation, tracking user selection + * of content, or similar.</p> + * * @return true if the view has transient state */ @ViewDebug.ExportedProperty(category = "layout") @@ -5411,6 +5480,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * so every call to setHasTransientState(true) should be paired with a later call * to setHasTransientState(false). * + * <p>A view with transient state cannot be trivially rebound from an external + * data source, such as an adapter binding item views in a list. This may be + * because the view is performing an animation, tracking user selection + * of content, or similar.</p> + * * @param hasTransientState true if this view has transient state */ public void setHasTransientState(boolean hasTransientState) { @@ -5935,7 +6009,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * @hide */ public boolean requestAccessibilityFocus() { - if (!AccessibilityManager.getInstance(mContext).isEnabled()) { + AccessibilityManager manager = AccessibilityManager.getInstance(mContext); + if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) { return false; } if ((mViewFlags & VISIBILITY_MASK) != VISIBLE) { @@ -10842,6 +10917,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Resolve and cache the layout direction. LTR is set initially. This is implicitly supposing * that the parent directionality can and will be resolved before its children. * Will call {@link View#onResolvedLayoutDirectionChanged} when resolution is done. + * @hide */ public void resolveLayoutDirection() { // Clear any previous layout direction resolution @@ -10886,12 +10962,14 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Called when layout direction has been resolved. * * The default implementation does nothing. + * @hide */ public void onResolvedLayoutDirectionChanged() { } /** * Resolve padding depending on layout direction. + * @hide */ public void resolvePadding() { // If the user specified the absolute padding (either with android:padding or @@ -10951,6 +11029,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * * @see {@link #LAYOUT_DIRECTION_LTR} * @see {@link #LAYOUT_DIRECTION_RTL} + * @hide */ public void onPaddingChanged(int layoutDirection) { } @@ -10959,6 +11038,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Check if layout direction resolution can be done. * * @return true if layout direction resolution can be done otherwise return false. + * @hide */ public boolean canResolveLayoutDirection() { switch (getLayoutDirection()) { @@ -10972,6 +11052,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Reset the resolved layout direction. Will call {@link View#onResolvedLayoutDirectionReset} * when reset is done. + * @hide */ public void resetResolvedLayoutDirection() { // Reset the current resolved bits @@ -10988,6 +11069,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * resolved layout direction, or to inform child views that inherit their layout direction. * * The default implementation does nothing. + * @hide */ public void onResolvedLayoutDirectionReset() { } @@ -10997,6 +11079,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * * @param locale Locale to check * @return true if the Locale uses an RTL script. + * @hide */ protected static boolean isLayoutDirectionRtl(Locale locale) { return (LAYOUT_DIRECTION_RTL == LocaleUtil.getLayoutDirectionFromLocale(locale)); @@ -13301,6 +13384,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Return the layout direction of a given Drawable. * * @param who the Drawable to query + * @hide */ public int getResolvedLayoutDirection(Drawable who) { return (who == mBackground) ? getResolvedLayoutDirection() : LAYOUT_DIRECTION_DEFAULT; @@ -13736,19 +13820,13 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Sets the relative padding. The view may add on the space required to display * the scrollbars, depending on the style and visibility of the scrollbars. - * So the values returned from {@link #getPaddingStart}, {@link #getPaddingTop}, - * {@link #getPaddingEnd} and {@link #getPaddingBottom} may be different * from the values set in this call. * - * @attr ref android.R.styleable#View_padding - * @attr ref android.R.styleable#View_paddingBottom - * @attr ref android.R.styleable#View_paddingStart - * @attr ref android.R.styleable#View_paddingEnd - * @attr ref android.R.styleable#View_paddingTop * @param start the start padding in pixels * @param top the top padding in pixels * @param end the end padding in pixels * @param bottom the bottom padding in pixels + * @hide */ public void setPaddingRelative(int start, int top, int end, int bottom) { mUserPaddingStart = start; @@ -13802,6 +13880,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * required to display the scrollbars as well. * * @return the start padding in pixels + * @hide */ public int getPaddingStart() { return (getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) ? @@ -13825,6 +13904,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * required to display the scrollbars as well. * * @return the end padding in pixels + * @hide */ public int getPaddingEnd() { return (getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) ? @@ -13833,11 +13913,10 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Return if the padding as been set thru relative values - * {@link #setPaddingRelative(int, int, int, int)} or thru - * @attr ref android.R.styleable#View_paddingStart or - * @attr ref android.R.styleable#View_paddingEnd + * {@link #setPaddingRelative(int, int, int, int)} * * @return true if the padding is relative or false if it is not. + * @hide */ public boolean isPaddingRelative() { return mUserPaddingRelative; @@ -13846,7 +13925,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * @hide */ - public Insets getLayoutInsets() { + public Insets getOpticalInsets() { if (mLayoutInsets == null) { mLayoutInsets = (mBackground == null) ? Insets.NONE : mBackground.getLayoutInsets(); } @@ -15681,6 +15760,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #TEXT_DIRECTION_LTR}, * {@link #TEXT_DIRECTION_RTL}, * {@link #TEXT_DIRECTION_LOCALE} + * @hide */ @ViewDebug.ExportedProperty(category = "text", mapping = { @ViewDebug.IntToString(from = TEXT_DIRECTION_INHERIT, to = "INHERIT"), @@ -15705,6 +15785,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #TEXT_DIRECTION_LTR}, * {@link #TEXT_DIRECTION_RTL}, * {@link #TEXT_DIRECTION_LOCALE} + * @hide */ public void setTextDirection(int textDirection) { if (getTextDirection() != textDirection) { @@ -15734,6 +15815,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #TEXT_DIRECTION_LTR}, * {@link #TEXT_DIRECTION_RTL}, * {@link #TEXT_DIRECTION_LOCALE} + * @hide */ public int getResolvedTextDirection() { // The text direction will be resolved only if needed @@ -15746,6 +15828,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Resolve the text direction. Will call {@link View#onResolvedTextDirectionChanged} when * resolution is done. + * @hide */ public void resolveTextDirection() { // Reset any previous text direction resolution @@ -15806,6 +15889,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * resolution should override this method. * * The default implementation does nothing. + * @hide */ public void onResolvedTextDirectionChanged() { } @@ -15814,6 +15898,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Check if text direction resolution can be done. * * @return true if text direction resolution can be done otherwise return false. + * @hide */ public boolean canResolveTextDirection() { switch (getTextDirection()) { @@ -15828,6 +15913,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Reset resolved text direction. Text direction can be resolved with a call to * getResolvedTextDirection(). Will call {@link View#onResolvedTextDirectionReset} when * reset is done. + * @hide */ public void resetResolvedTextDirection() { mPrivateFlags2 &= ~(TEXT_DIRECTION_RESOLVED | TEXT_DIRECTION_RESOLVED_MASK); @@ -15838,6 +15924,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Called when text direction is reset. Subclasses that care about text direction reset should * override this method and do a reset of the text direction of their children. The default * implementation does nothing. + * @hide */ public void onResolvedTextDirectionReset() { } @@ -15855,6 +15942,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #TEXT_ALIGNMENT_TEXT_END}, * {@link #TEXT_ALIGNMENT_VIEW_START}, * {@link #TEXT_ALIGNMENT_VIEW_END} + * @hide */ @ViewDebug.ExportedProperty(category = "text", mapping = { @ViewDebug.IntToString(from = TEXT_ALIGNMENT_INHERIT, to = "INHERIT"), @@ -15883,6 +15971,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #TEXT_ALIGNMENT_VIEW_END} * * @attr ref android.R.styleable#View_textAlignment + * @hide */ public void setTextAlignment(int textAlignment) { if (textAlignment != getTextAlignment()) { @@ -15912,6 +16001,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link #TEXT_ALIGNMENT_TEXT_END}, * {@link #TEXT_ALIGNMENT_VIEW_START}, * {@link #TEXT_ALIGNMENT_VIEW_END} + * @hide */ @ViewDebug.ExportedProperty(category = "text", mapping = { @ViewDebug.IntToString(from = TEXT_ALIGNMENT_INHERIT, to = "INHERIT"), @@ -15933,6 +16023,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Resolve the text alignment. Will call {@link View#onResolvedTextAlignmentChanged} when * resolution is done. + * @hide */ public void resolveTextAlignment() { // Reset any previous text alignment resolution @@ -15997,6 +16088,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Check if text alignment resolution can be done. * * @return true if text alignment resolution can be done otherwise return false. + * @hide */ public boolean canResolveTextAlignment() { switch (getTextAlignment()) { @@ -16012,6 +16104,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * resolution should override this method. * * The default implementation does nothing. + * @hide */ public void onResolvedTextAlignmentChanged() { } @@ -16020,6 +16113,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Reset resolved text alignment. Text alignment can be resolved with a call to * getResolvedTextAlignment(). Will call {@link View#onResolvedTextAlignmentReset} when * reset is done. + * @hide */ public void resetResolvedTextAlignment() { // Reset any previous text alignment resolution @@ -16031,6 +16125,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * Called when text alignment is reset. Subclasses that care about text alignment reset should * override this method and do a reset of the text alignment of their children. The default * implementation does nothing. + * @hide */ public void onResolvedTextAlignmentReset() { } @@ -16726,6 +16821,12 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal boolean mUse32BitDrawingCache; /** + * Describes the parts of the window that are currently completely + * obscured by system UI elements. + */ + final Rect mSystemInsets = new Rect(); + + /** * For windows that are full-screen but using insets to layout inside * of the screen decorations, these are the current insets for the * content of the window. @@ -16903,7 +17004,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Show where the margins, bounds and layout bounds are for each view. */ - final boolean mDebugLayout = SystemProperties.getBoolean("debug.layout", false); + final boolean mDebugLayout = SystemProperties.getBoolean(DEBUG_LAYOUT_PROPERTY, false); /** * Creates a new set of attachment information with the specified diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 9009e9ae9f2e..a5ae248ee609 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -173,10 +173,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager protected int mGroupFlags; /* - * THe layout mode: either {@link #UNDEFINED_LAYOUT_MODE}, {@link #COMPONENT_BOUNDS} or - * {@link #LAYOUT_BOUNDS} + * The layout mode: either {@link #CLIP_BOUNDS} or {@link #OPTICAL_BOUNDS} */ - private int mLayoutMode = UNDEFINED_LAYOUT_MODE; + private int mLayoutMode = CLIP_BOUNDS; /** * NOTE: If you change the flags below make sure to reflect the changes @@ -345,19 +344,20 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // Layout Modes - private static final int UNDEFINED_LAYOUT_MODE = -1; - /** * This constant is a {@link #setLayoutMode(int) layoutMode}. - * Component bounds are the raw values of {@link #getLeft() left}, {@link #getTop() top}, + * Clip bounds are the raw values of {@link #getLeft() left}, {@link #getTop() top}, * {@link #getRight() right} and {@link #getBottom() bottom}. */ - public static final int COMPONENT_BOUNDS = 0; + public static final int CLIP_BOUNDS = 0; /** * This constant is a {@link #setLayoutMode(int) layoutMode}. + * Optical bounds describe where a widget appears to be. They sit inside the clip + * bounds which need to cover a larger area to allow other effects, + * such as shadows and glows, to be drawn. */ - public static final int LAYOUT_BOUNDS = 1; + public static final int OPTICAL_BOUNDS = 1; /** * We clip to padding when FLAG_CLIP_TO_PADDING and FLAG_PADDING_NOT_NULL @@ -382,15 +382,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager private static final int ARRAY_INITIAL_CAPACITY = 12; private static final int ARRAY_CAPACITY_INCREMENT = 12; - private static Paint DEBUG_PAINT; - - private static Paint getDebugPaint() { - if (DEBUG_PAINT == null) { - DEBUG_PAINT = new Paint(); - DEBUG_PAINT.setStyle(Paint.Style.STROKE); - } - return DEBUG_PAINT; - } + private static Paint sDebugPaint; + private static float[] sDebugLines; // Used to draw cached views Paint mCachePaint; @@ -2445,7 +2438,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) { handled = child.dispatchPopulateAccessibilityEvent(event); if (handled) { - children.recycle(); return handled; } } @@ -2678,7 +2670,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager private static void drawRect(Canvas canvas, int x1, int y1, int x2, int y2, int color) { Paint paint = getDebugPaint(); paint.setColor(color); - canvas.drawRect(x1, y1, x2 - 1, y2 - 1, paint); + + canvas.drawLines(getDebugLines(x1, y1, x2, y2), paint); } /** @@ -2696,10 +2689,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ protected void onDebugDraw(Canvas canvas) { // Draw optical bounds - if (getLayoutMode() == LAYOUT_BOUNDS) { + if (getLayoutMode() == OPTICAL_BOUNDS) { for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); - Insets insets = c.getLayoutInsets(); + Insets insets = c.getOpticalInsets(); drawRect(canvas, c.getLeft() + insets.left, c.getTop() + insets.top, @@ -3945,59 +3938,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // through final boolean drawAnimation = (child.mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION; - //noinspection PointlessBooleanExpression - if (!HardwareRenderer.RENDER_DIRTY_REGIONS) { - if (dirty == null) { - if (child.mLayerType != LAYER_TYPE_NONE) { - mPrivateFlags |= INVALIDATED; - mPrivateFlags &= ~DRAWING_CACHE_VALID; - child.mLocalDirtyRect.setEmpty(); - } - do { - View view = null; - if (parent instanceof View) { - view = (View) parent; - if (view.mLayerType != LAYER_TYPE_NONE) { - view.mLocalDirtyRect.setEmpty(); - if (view.getParent() instanceof View) { - final View grandParent = (View) view.getParent(); - grandParent.mPrivateFlags |= INVALIDATED; - grandParent.mPrivateFlags &= ~DRAWING_CACHE_VALID; - } - } - if ((view.mPrivateFlags & DIRTY_MASK) != 0) { - // already marked dirty - we're done - break; - } - } - - if (drawAnimation) { - if (view != null) { - view.mPrivateFlags |= DRAW_ANIMATION; - } else if (parent instanceof ViewRootImpl) { - ((ViewRootImpl) parent).mIsAnimating = true; - } - } - - if (parent instanceof ViewRootImpl) { - ((ViewRootImpl) parent).invalidate(); - parent = null; - } else if (view != null) { - if ((view.mPrivateFlags & DRAWN) == DRAWN || - (view.mPrivateFlags & DRAWING_CACHE_VALID) == DRAWING_CACHE_VALID) { - view.mPrivateFlags &= ~DRAWING_CACHE_VALID; - view.mPrivateFlags |= DIRTY; - parent = view.mParent; - } else { - parent = null; - } - } - } while (parent != null); - } - - return; - } - // Check whether the child that requests the invalidate is fully opaque // Views being animated or transformed are not considered opaque because we may // be invalidating their old position and need the parent to paint behind them. @@ -4032,12 +3972,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager View view = null; if (parent instanceof View) { view = (View) parent; - if (view.mLayerType != LAYER_TYPE_NONE && - view.getParent() instanceof View) { - final View grandParent = (View) view.getParent(); - grandParent.mPrivateFlags |= INVALIDATED; - grandParent.mPrivateFlags &= ~DRAWING_CACHE_VALID; - } } if (drawAnimation) { @@ -4110,6 +4044,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager location[CHILD_TOP_INDEX] = top; if (mLayerType != LAYER_TYPE_NONE) { + mPrivateFlags |= INVALIDATED; mLocalDirtyRect.union(dirty); } @@ -4128,6 +4063,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } if (mLayerType != LAYER_TYPE_NONE) { + mPrivateFlags |= INVALIDATED; mLocalDirtyRect.union(dirty); } @@ -4597,37 +4533,22 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } /** - * Returns the basis of alignment during the layout of this view group: - * either {@link #COMPONENT_BOUNDS} or {@link #LAYOUT_BOUNDS}. + * Returns the basis of alignment during layout operations on this view group: + * either {@link #CLIP_BOUNDS} or {@link #OPTICAL_BOUNDS}. * * @return the layout mode to use during layout operations * * @see #setLayoutMode(int) */ public int getLayoutMode() { - if (mLayoutMode == UNDEFINED_LAYOUT_MODE) { - ViewParent parent = getParent(); - if (parent instanceof ViewGroup) { - ViewGroup viewGroup = (ViewGroup) parent; - return viewGroup.getLayoutMode(); - } else { - int targetSdkVersion = mContext.getApplicationInfo().targetSdkVersion; - boolean preJellyBean = targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN; - return preJellyBean ? COMPONENT_BOUNDS : LAYOUT_BOUNDS; - } - - } return mLayoutMode; } /** - * Sets the basis of alignment during alignment of this view group. - * Valid values are either {@link #COMPONENT_BOUNDS} or {@link #LAYOUT_BOUNDS}. + * Sets the basis of alignment during the layout of this view group. + * Valid values are either {@link #CLIP_BOUNDS} or {@link #OPTICAL_BOUNDS}. * <p> - * The default is to query the property of the parent if this view group has a parent. - * If this ViewGroup is the root of the view hierarchy the default - * value is {@link #LAYOUT_BOUNDS} for target SDK's greater than JellyBean, - * {@link #LAYOUT_BOUNDS} otherwise. + * The default is {@link #CLIP_BOUNDS}. * * @param layoutMode the layout mode to use during layout operations * @@ -5308,6 +5229,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + /** + * @hide + */ @Override public void onResolvedLayoutDirectionReset() { // Take care of resetting the children resolution too @@ -5320,6 +5244,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + /** + * @hide + */ @Override public void onResolvedTextDirectionReset() { // Take care of resetting the children resolution too @@ -5332,6 +5259,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + /** + * @hide + */ @Override public void onResolvedTextAlignmentReset() { // Take care of resetting the children resolution too @@ -5522,6 +5452,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * * {@link View#LAYOUT_DIRECTION_LTR} * {@link View#LAYOUT_DIRECTION_RTL} + * @hide */ public void onResolveLayoutDirection(int layoutDirection) { } @@ -5613,6 +5544,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * The start margin in pixels of the child. * Call {@link ViewGroup#setLayoutParams(LayoutParams)} after reassigning a new value * to this field. + * @hide */ @ViewDebug.ExportedProperty(category = "layout") public int startMargin = DEFAULT_RELATIVE; @@ -5621,6 +5553,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * The end margin in pixels of the child. * Call {@link ViewGroup#setLayoutParams(LayoutParams)} after reassigning a new value * to this field. + * @hide */ @ViewDebug.ExportedProperty(category = "layout") public int endMargin = DEFAULT_RELATIVE; @@ -5739,7 +5672,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginTop * @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginEnd * @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginBottom - * * @hide */ public void setMarginsRelative(int start, int top, int end, int bottom) { @@ -5755,6 +5687,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginStart * * @return the start margin in pixels. + * @hide */ public int getMarginStart() { return startMargin; @@ -5766,6 +5699,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginEnd * * @return the end margin in pixels. + * @hide */ public int getMarginEnd() { return endMargin; @@ -5778,6 +5712,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginEnd * * @return true if either marginStart or marginEnd has been set + * @hide */ public boolean isMarginRelative() { return (startMargin != DEFAULT_RELATIVE) || (endMargin != DEFAULT_RELATIVE); @@ -5786,6 +5721,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager /** * This will be called by {@link android.view.View#requestLayout()}. Left and Right margins * may be overridden depending on layout direction. + * @hide */ @Override public void onResolveLayoutDirection(int layoutDirection) { @@ -6136,4 +6072,43 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager mLocation.set(0, 0, 0, 0); } } + + private static Paint getDebugPaint() { + if (sDebugPaint == null) { + sDebugPaint = new Paint(); + sDebugPaint.setAntiAlias(false); + } + return sDebugPaint; + } + + private static float[] getDebugLines(int x1, int y1, int x2, int y2) { + if (sDebugLines== null) { + sDebugLines = new float[16]; + } + + x2--; + y2--; + + sDebugLines[0] = x1; + sDebugLines[1] = y1; + sDebugLines[2] = x2; + sDebugLines[3] = y1; + + sDebugLines[4] = x2; + sDebugLines[5] = y1; + sDebugLines[6] = x2; + sDebugLines[7] = y2 + 1; + + sDebugLines[8] = x2 + 1; + sDebugLines[9] = y2; + sDebugLines[10] = x1; + sDebugLines[11] = y2; + + sDebugLines[12] = x1; + sDebugLines[13] = y2; + sDebugLines[14] = x1; + sDebugLines[15] = y1; + + return sDebugLines; + } } diff --git a/core/java/android/view/ViewPropertyAnimator.java b/core/java/android/view/ViewPropertyAnimator.java index ec37acf41d4b..2012db2adb21 100644 --- a/core/java/android/view/ViewPropertyAnimator.java +++ b/core/java/android/view/ViewPropertyAnimator.java @@ -624,14 +624,20 @@ public class ViewPropertyAnimator { /** * The View associated with this ViewPropertyAnimator will have its * {@link View#setLayerType(int, android.graphics.Paint) layer type} set to - * {@link View#LAYER_TYPE_HARDWARE} for the duration of the next animation. This state - * is not persistent, either on the View or on this ViewPropertyAnimator: the layer type - * of the View will be restored when the animation ends to what it was when this method was - * called, and this setting on ViewPropertyAnimator is only valid for the next animation. - * Note that calling this method and then independently setting the layer type of the View - * (by a direct call to {@link View#setLayerType(int, android.graphics.Paint)}) will result - * in some inconsistency, including having the layer type restored to its pre-withLayer() - * value when the animation ends. + * {@link View#LAYER_TYPE_HARDWARE} for the duration of the next animation. + * As stated in the documentation for {@link View#LAYER_TYPE_HARDWARE}, + * the actual type of layer used internally depends on the runtime situation of the + * view. If the activity and this view are hardware-accelerated, then the layer will be + * accelerated as well. If the activity or the view is not accelerated, then the layer will + * effectively be the same as {@link View#LAYER_TYPE_SOFTWARE}. + * + * <p>This state is not persistent, either on the View or on this ViewPropertyAnimator: the + * layer type of the View will be restored when the animation ends to what it was when this + * method was called, and this setting on ViewPropertyAnimator is only valid for the next + * animation. Note that calling this method and then independently setting the layer type of + * the View (by a direct call to {@link View#setLayerType(int, android.graphics.Paint)}) will + * result in some inconsistency, including having the layer type restored to its pre-withLayer() + * value when the animation ends.</p> * * @see View#setLayerType(int, android.graphics.Paint) * @return This object, allowing calls to methods in this class to be chained. diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 59f0917e1916..5eeb2112aa0a 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -229,6 +229,7 @@ public final class ViewRootImpl implements ViewParent, boolean mNewSurfaceNeeded; boolean mHasHadWindowFocus; boolean mLastWasImTarget; + boolean mWindowsAnimating; int mLastSystemUiVisibility; // Pool of queued input events. @@ -260,6 +261,8 @@ public final class ViewRootImpl implements ViewParent, final Rect mPendingVisibleInsets = new Rect(); final Rect mPendingContentInsets = new Rect(); + final Rect mPendingSystemInsets = new Rect(); + final Rect mActiveRect = new Rect(); final ViewTreeObserver.InternalInsetsInfo mLastGivenInsets = new ViewTreeObserver.InternalInsetsInfo(); @@ -269,7 +272,8 @@ public final class ViewRootImpl implements ViewParent, final Configuration mPendingConfiguration = new Configuration(); class ResizedInfo { - Rect coveredInsets; + Rect systemInsets; + Rect contentInsets; Rect visibleInsets; Configuration newConfig; } @@ -565,6 +569,7 @@ public final class ViewRootImpl implements ViewParent, if (mTranslator != null) { mTranslator.translateRectInScreenToAppWindow(mAttachInfo.mContentInsets); } + mPendingSystemInsets.set(0, 0, 0, 0); mPendingContentInsets.set(mAttachInfo.mContentInsets); mPendingVisibleInsets.set(0, 0, 0, 0); if (DEBUG_LAYOUT) Log.v(TAG, "Added window " + mWindow); @@ -634,6 +639,8 @@ public final class ViewRootImpl implements ViewParent, if (view.getImportantForAccessibility() == View.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); } + + setAccessibilityFocusedHost(null); } } } @@ -759,6 +766,9 @@ public final class ViewRootImpl implements ViewParent, // preserve compatible window flag if exists. int compatibleWindowFlag = mWindowAttributes.flags & WindowManager.LayoutParams.FLAG_COMPATIBLE_WINDOW; + // transfer over system UI visibility values as they carry current state. + attrs.systemUiVisibility = mWindowAttributes.systemUiVisibility; + attrs.subtreeSystemUiVisibility = mWindowAttributes.subtreeSystemUiVisibility; mWindowAttributesChangesFlag = mWindowAttributes.copyFrom(attrs); mWindowAttributes.flags |= compatibleWindowFlag; @@ -947,6 +957,7 @@ public final class ViewRootImpl implements ViewParent, mTraversalBarrier = mHandler.getLooper().postSyncBarrier(); mChoreographer.postCallback( Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null); + scheduleConsumeBatchedInput(); } } @@ -964,9 +975,6 @@ public final class ViewRootImpl implements ViewParent, mTraversalScheduled = false; mHandler.getLooper().removeSyncBarrier(mTraversalBarrier); - doConsumeBatchedInput(false); - doProcessInputEvents(); - if (mProfile) { Debug.startMethodTracing("ViewAncestor"); } @@ -1217,6 +1225,7 @@ public final class ViewRootImpl implements ViewParent, getRunQueue().executeActions(attachInfo.mHandler); boolean insetsChanged = false; + boolean activeRectChanged = false; boolean layoutRequested = mLayoutRequested && !mStopped; if (layoutRequested) { @@ -1228,7 +1237,12 @@ public final class ViewRootImpl implements ViewParent, // to opposite of the added touch mode. mAttachInfo.mInTouchMode = !mAddedTouchMode; ensureTouchModeLocally(mAddedTouchMode); + activeRectChanged = true; } else { + if (!mPendingSystemInsets.equals(mAttachInfo.mSystemInsets)) { + mAttachInfo.mSystemInsets.set(mPendingSystemInsets); + activeRectChanged = true; + } if (!mPendingContentInsets.equals(mAttachInfo.mContentInsets)) { insetsChanged = true; } @@ -1381,7 +1395,11 @@ public final class ViewRootImpl implements ViewParent, updateConfiguration(mPendingConfiguration, !mFirst); mPendingConfiguration.seq = 0; } - + + if (!mPendingSystemInsets.equals(mAttachInfo.mSystemInsets)) { + activeRectChanged = true; + mAttachInfo.mSystemInsets.set(mPendingSystemInsets); + } contentInsetsChanged = !mPendingContentInsets.equals( mAttachInfo.mContentInsets); visibleInsetsChanged = !mPendingVisibleInsets.equals( @@ -1484,6 +1502,7 @@ public final class ViewRootImpl implements ViewParent, // before actually drawing them, so it can display then // all at once. newSurface = true; + activeRectChanged = true; mFullRedrawNeeded = true; mPreviousTransparentRegion.setEmpty(); @@ -1548,8 +1567,11 @@ public final class ViewRootImpl implements ViewParent, // !!FIXME!! This next section handles the case where we did not get the // window size we asked for. We should avoid this by getting a maximum size from // the window session beforehand. - mWidth = frame.width(); - mHeight = frame.height(); + if (mWidth != frame.width() || mHeight != frame.height()) { + activeRectChanged = true; + mWidth = frame.width(); + mHeight = frame.height(); + } if (mSurfaceHolder != null) { // The app owns the surface; tell it about what is going on. @@ -1665,6 +1687,14 @@ public final class ViewRootImpl implements ViewParent, } } + if (activeRectChanged && mSurface.isValid()) { + mActiveRect.set(attachInfo.mSystemInsets.left, attachInfo.mSystemInsets.top, + mWidth - attachInfo.mSystemInsets.right, + mHeight - attachInfo.mSystemInsets.bottom); + //Log.i(TAG, "Active rect " + mWindowAttributes.getTitle() + ": " + mActiveRect); + mSurface.setActiveRect(mActiveRect); + } + final boolean didLayout = layoutRequested && !mStopped; boolean triggerGlobalLayoutListener = didLayout || attachInfo.mRecomputeGlobalAttributes; @@ -1768,6 +1798,8 @@ public final class ViewRootImpl implements ViewParent, } } + boolean skipDraw = false; + if (mFirst) { // handle first focus request if (DEBUG_INPUT_RESIZE) Log.v(TAG, "First: mView.hasFocus()=" @@ -1784,6 +1816,14 @@ public final class ViewRootImpl implements ViewParent, + mRealFocusedView); } } + if ((relayoutResult&WindowManagerImpl.RELAYOUT_RES_ANIMATING) != 0) { + // The first time we relayout the window, if the system is + // doing window animations, we want to hold of on any future + // draws until the animation is done. + mWindowsAnimating = true; + } + } else if (mWindowsAnimating) { + skipDraw = true; } mFirst = false; @@ -1815,14 +1855,16 @@ public final class ViewRootImpl implements ViewParent, viewVisibility != View.VISIBLE; if (!cancelDraw && !newSurface) { - if (mPendingTransitions != null && mPendingTransitions.size() > 0) { - for (int i = 0; i < mPendingTransitions.size(); ++i) { - mPendingTransitions.get(i).startChangingAnimations(); + if (!skipDraw || mReportNextDraw) { + if (mPendingTransitions != null && mPendingTransitions.size() > 0) { + for (int i = 0; i < mPendingTransitions.size(); ++i) { + mPendingTransitions.get(i).startChangingAnimations(); + } + mPendingTransitions.clear(); } - mPendingTransitions.clear(); + + performDraw(); } - - performDraw(); } else { // End any pending transitions on this non-visible window if (mPendingTransitions != null && mPendingTransitions.size() > 0) { @@ -1994,7 +2036,6 @@ public final class ViewRootImpl implements ViewParent, final boolean fullRedrawNeeded = mFullRedrawNeeded; mFullRedrawNeeded = false; - mChoreographer.notifyDrawOccurred(); Trace.traceBegin(Trace.TRACE_TAG_VIEW, "draw"); try { @@ -2306,7 +2347,8 @@ public final class ViewRootImpl implements ViewParent, * @param canvas The canvas on which to draw. */ private void drawAccessibilityFocusedDrawableIfNeeded(Canvas canvas) { - if (!AccessibilityManager.getInstance(mView.mContext).isEnabled()) { + AccessibilityManager manager = AccessibilityManager.getInstance(mView.mContext); + if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) { return; } if (mAccessibilityFocusedHost == null || mAccessibilityFocusedHost.mAttachInfo == null) { @@ -2329,6 +2371,9 @@ public final class ViewRootImpl implements ViewParent, if (mAccessibilityFocusedVirtualView == null) { mAccessibilityFocusedVirtualView = provider.findAccessibilitiyFocus(View.NO_ID); } + if (mAccessibilityFocusedVirtualView == null) { + return; + } mAccessibilityFocusedVirtualView.getBoundsInScreen(bounds); bounds.offset(-mAttachInfo.mWindowLeft, -mAttachInfo.mWindowTop); } @@ -2680,6 +2725,7 @@ public final class ViewRootImpl implements ViewParent, private final static int MSG_DISPATCH_SCREEN_STATE = 20; private final static int MSG_INVALIDATE_DISPLAY_LIST = 21; private final static int MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST = 22; + private final static int MSG_DISPATCH_DONE_ANIMATING = 23; final class ViewRootHandler extends Handler { @Override @@ -2729,6 +2775,8 @@ public final class ViewRootImpl implements ViewParent, return "MSG_INVALIDATE_DISPLAY_LIST"; case MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST: return "MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST"; + case MSG_DISPATCH_DONE_ANIMATING: + return "MSG_DISPATCH_DONE_ANIMATING"; } return super.getMessageName(message); } @@ -2761,7 +2809,8 @@ public final class ViewRootImpl implements ViewParent, ResizedInfo ri = (ResizedInfo)msg.obj; if (mWinFrame.width() == msg.arg1 && mWinFrame.height() == msg.arg2 - && mPendingContentInsets.equals(ri.coveredInsets) + && mPendingSystemInsets.equals(ri.systemInsets) + && mPendingContentInsets.equals(ri.contentInsets) && mPendingVisibleInsets.equals(ri.visibleInsets) && ((ResizedInfo)msg.obj).newConfig == null) { break; @@ -2777,7 +2826,8 @@ public final class ViewRootImpl implements ViewParent, mWinFrame.right = msg.arg1; mWinFrame.top = 0; mWinFrame.bottom = msg.arg2; - mPendingContentInsets.set(((ResizedInfo)msg.obj).coveredInsets); + mPendingSystemInsets.set(((ResizedInfo)msg.obj).systemInsets); + mPendingContentInsets.set(((ResizedInfo)msg.obj).contentInsets); mPendingVisibleInsets.set(((ResizedInfo)msg.obj).visibleInsets); if (msg.what == MSG_RESIZED_REPORT) { mReportNextDraw = true; @@ -2852,6 +2902,8 @@ public final class ViewRootImpl implements ViewParent, mHasHadWindowFocus = true; } + setAccessibilityFocusedHost(null); + if (mView != null && mAccessibilityManager.isEnabled()) { if (hasWindowFocus) { mView.sendAccessibilityEvent( @@ -2870,9 +2922,6 @@ public final class ViewRootImpl implements ViewParent, if (mAccessibilityFocusedHost == null) { mView.requestAccessibilityFocus(); } - } else { - // Clear accessibility focus when the window loses input focus. - setAccessibilityFocusedHost(null); } } } @@ -2941,6 +2990,9 @@ public final class ViewRootImpl implements ViewParent, case MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST: { setAccessibilityFocusedHost(null); } break; + case MSG_DISPATCH_DONE_ANIMATING: { + handleDispatchDoneAnimating(); + } break; } } } @@ -2997,24 +3049,23 @@ public final class ViewRootImpl implements ViewParent, // be when the window is first being added, and mFocused isn't // set yet. final View focused = mView.findFocus(); - if (focused != null) { - if (focused.isFocusableInTouchMode()) { - return true; - } + if (focused != null && !focused.isFocusableInTouchMode()) { + final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused); if (ancestorToTakeFocus != null) { // there is an ancestor that wants focus after its descendants that // is focusable in touch mode.. give it focus return ancestorToTakeFocus.requestFocus(); + } else { + // nothing appropriate to have focus in touch mode, clear it out + mView.unFocus(); + mAttachInfo.mTreeObserver.dispatchOnGlobalFocusChange(focused, null); + mFocusedView = null; + mOldFocusedView = null; + return true; } } - // nothing appropriate to have focus in touch mode, clear it out - mView.unFocus(); - mAttachInfo.mTreeObserver.dispatchOnGlobalFocusChange(focused, null); - mFocusedView = null; - mOldFocusedView = null; - return true; } } return false; @@ -3045,45 +3096,25 @@ public final class ViewRootImpl implements ViewParent, private boolean leaveTouchMode() { if (mView != null) { - boolean inputFocusValid = false; if (mView.hasFocus()) { // i learned the hard way to not trust mFocusedView :) mFocusedView = mView.findFocus(); if (!(mFocusedView instanceof ViewGroup)) { // some view has focus, let it keep it - inputFocusValid = true; - } else if (((ViewGroup) mFocusedView).getDescendantFocusability() != + return false; + } else if (((ViewGroup)mFocusedView).getDescendantFocusability() != ViewGroup.FOCUS_AFTER_DESCENDANTS) { // some view group has focus, and doesn't prefer its children // over itself for focus, so let them keep it. - inputFocusValid = true; + return false; } } - // In accessibility mode we always have a view that has the - // accessibility focus and input focus follows it, i.e. we - // try to give input focus to the accessibility focused view. - if (!AccessibilityManager.getInstance(mView.mContext).isEnabled()) { - // If the current input focus is not valid, find the best view to give - // focus to in this brave new non-touch-mode world. - if (!inputFocusValid) { - final View focused = focusSearch(null, View.FOCUS_DOWN); - if (focused != null) { - return focused.requestFocus(View.FOCUS_DOWN); - } - } - } else { - // If the current input focus is not valid clear it but do not - // give it to another view since the accessibility focus is - // leading now and the input one follows. - if (!inputFocusValid) { - if (mFocusedView != null) { - mView.unFocus(); - mAttachInfo.mTreeObserver.dispatchOnGlobalFocusChange(mFocusedView, null); - mFocusedView = null; - mOldFocusedView = null; - return true; - } - } + + // find the best view to give focus to in this brave new non-touch-mode + // world + final View focused = focusSearch(null, View.FOCUS_DOWN); + if (focused != null) { + return focused.requestFocus(View.FOCUS_DOWN); } } return false; @@ -3756,6 +3787,15 @@ public final class ViewRootImpl implements ViewParent, mView.dispatchSystemUiVisibilityChanged(args.globalVisibility); } + public void handleDispatchDoneAnimating() { + if (mWindowsAnimating) { + mWindowsAnimating = false; + if (!mDirty.isEmpty() || mIsAnimating) { + scheduleTraversals(); + } + } + } + public void getLastTouchPoint(Point outLocation) { outLocation.x = (int) mLastTouchPoint.x; outLocation.y = (int) mLastTouchPoint.y; @@ -3816,7 +3856,7 @@ public final class ViewRootImpl implements ViewParent, (int) (mView.getMeasuredWidth() * appScale + 0.5f), (int) (mView.getMeasuredHeight() * appScale + 0.5f), viewVisibility, insetsPending ? WindowManagerImpl.RELAYOUT_INSETS_PENDING : 0, - mWinFrame, mPendingContentInsets, mPendingVisibleInsets, + mWinFrame, mPendingSystemInsets, mPendingContentInsets, mPendingVisibleInsets, mPendingConfiguration, mSurface); //Log.d(TAG, "<<<<<< BACK FROM relayout"); if (restore) { @@ -3996,15 +4036,16 @@ public final class ViewRootImpl implements ViewParent, mHandler.sendMessage(msg); } - public void dispatchResized(int w, int h, Rect coveredInsets, + public void dispatchResized(int w, int h, Rect systemInsets, Rect contentInsets, Rect visibleInsets, boolean reportDraw, Configuration newConfig) { if (DEBUG_LAYOUT) Log.v(TAG, "Resizing " + this + ": w=" + w - + " h=" + h + " coveredInsets=" + coveredInsets.toShortString() + + " h=" + h + " systemInsets=" + systemInsets.toShortString() + + " contentInsets=" + contentInsets.toShortString() + " visibleInsets=" + visibleInsets.toShortString() + " reportDraw=" + reportDraw); Message msg = mHandler.obtainMessage(reportDraw ? MSG_RESIZED_REPORT :MSG_RESIZED); if (mTranslator != null) { - mTranslator.translateRectInScreenToAppWindow(coveredInsets); + mTranslator.translateRectInScreenToAppWindow(contentInsets); mTranslator.translateRectInScreenToAppWindow(visibleInsets); w *= mTranslator.applicationInvertedScale; h *= mTranslator.applicationInvertedScale; @@ -4012,7 +4053,8 @@ public final class ViewRootImpl implements ViewParent, msg.arg1 = w; msg.arg2 = h; ResizedInfo ri = new ResizedInfo(); - ri.coveredInsets = new Rect(coveredInsets); + ri.systemInsets = new Rect(systemInsets); + ri.contentInsets = new Rect(contentInsets); ri.visibleInsets = new Rect(visibleInsets); ri.newConfig = newConfig; msg.obj = ri; @@ -4207,20 +4249,13 @@ public final class ViewRootImpl implements ViewParent, } } - void doConsumeBatchedInput(boolean callback) { + void doConsumeBatchedInput(long frameTimeNanos) { if (mConsumeBatchedInputScheduled) { mConsumeBatchedInputScheduled = false; - if (!callback) { - mChoreographer.removeCallbacks(Choreographer.CALLBACK_INPUT, - mConsumedBatchedInputRunnable, null); + if (mInputEventReceiver != null) { + mInputEventReceiver.consumeBatchedInputEvents(frameTimeNanos); } - } - - // Always consume batched input events even if not scheduled, because there - // might be new input there waiting for us that we have no noticed yet because - // the Looper has not had a chance to run again. - if (mInputEventReceiver != null) { - mInputEventReceiver.consumeBatchedInputEvents(); + doProcessInputEvents(); } } @@ -4258,8 +4293,7 @@ public final class ViewRootImpl implements ViewParent, final class ConsumeBatchedInputRunnable implements Runnable { @Override public void run() { - doConsumeBatchedInput(true); - doProcessInputEvents(); + doConsumeBatchedInput(mChoreographer.getFrameTimeNanos()); } } final ConsumeBatchedInputRunnable mConsumedBatchedInputRunnable = @@ -4476,6 +4510,10 @@ public final class ViewRootImpl implements ViewParent, mHandler.sendMessage(mHandler.obtainMessage(MSG_DISPATCH_SYSTEM_UI_VISIBILITY, args)); } + public void dispatchDoneAnimating() { + mHandler.sendEmptyMessage(MSG_DISPATCH_DONE_ANIMATING); + } + public void dispatchCheckFocus() { if (!mHandler.hasMessages(MSG_CHECK_FOCUS)) { // This will result in a call to checkFocus() below. @@ -4663,12 +4701,12 @@ public final class ViewRootImpl implements ViewParent, mViewAncestor = new WeakReference<ViewRootImpl>(viewAncestor); } - public void resized(int w, int h, Rect coveredInsets, Rect visibleInsets, - boolean reportDraw, Configuration newConfig) { + public void resized(int w, int h, Rect systemInsets, Rect contentInsets, + Rect visibleInsets, boolean reportDraw, Configuration newConfig) { final ViewRootImpl viewAncestor = mViewAncestor.get(); if (viewAncestor != null) { - viewAncestor.dispatchResized(w, h, coveredInsets, visibleInsets, reportDraw, - newConfig); + viewAncestor.dispatchResized(w, h, systemInsets, contentInsets, + visibleInsets, reportDraw, newConfig); } } @@ -4783,6 +4821,13 @@ public final class ViewRootImpl implements ViewParent, localValue, localChanges); } } + + public void doneAnimating() { + final ViewRootImpl viewAncestor = mViewAncestor.get(); + if (viewAncestor != null) { + viewAncestor.dispatchDoneAnimating(); + } + } } /** diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index a0f104103b71..b5690e97e22d 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -73,6 +73,11 @@ public class WindowManagerImpl implements WindowManager { * The window manager has changed the surface from the last call. */ public static final int RELAYOUT_RES_SURFACE_CHANGED = 0x4; + /** + * The window manager is currently animating. It will call + * IWindow.doneAnimating() when done. + */ + public static final int RELAYOUT_RES_ANIMATING = 0x8; /** * Flag for relayout: the client will be later giving @@ -340,6 +345,14 @@ public class WindowManagerImpl implements WindowManager { View curView = root.getView(); root.mAddNesting = 0; + + if (view != null) { + InputMethodManager imm = InputMethodManager.getInstance(view.getContext()); + if (imm != null) { + imm.windowDismissed(mViews[index].getWindowToken()); + } + } + root.die(true); finishRemoveViewLocked(curView, index); if (curView == view) { diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 27baaea870f8..e725e75d2e77 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -91,6 +91,11 @@ public interface WindowManagerPolicy { public final static int FLAG_BRIGHT_HERE = 0x20000000; public final static int FLAG_PASS_TO_USER = 0x40000000; + // Flags used for indicating whether the internal and/or external input devices + // of some type are available. + public final static int PRESENCE_INTERNAL = 1 << 0; + public final static int PRESENCE_EXTERNAL = 1 << 1; + public final static boolean WATCH_POINTER = false; /** @@ -140,6 +145,10 @@ public interface WindowManagerPolicy { * @param displayFrame The frame of the overall display in which this * window can appear, used for constraining the overall dimensions * of the window. + * @param systemFrame The frame within the display that any system + * elements are currently covering. These indicate which parts of + * the window should be considered completely obscured by the screen + * decorations. * @param contentFrame The frame within the display in which we would * like active content to appear. This will cause windows behind to * be resized to match the given content frame. @@ -151,7 +160,7 @@ public interface WindowManagerPolicy { * are visible. */ public void computeFrameLw(Rect parentFrame, Rect displayFrame, - Rect contentFrame, Rect visibleFrame); + Rect systemFrame, Rect contentFrame, Rect visibleFrame); /** * Retrieve the current frame of the window that has been assigned by @@ -173,12 +182,20 @@ public interface WindowManagerPolicy { * Retrieve the frame of the display that this window was last * laid out in. Must be called with the * window manager lock held. - * + * * @return Rect The rectangle holding the display frame. */ public Rect getDisplayFrameLw(); /** + * Retrieve the frame of the system elements that last covered the window. + * Must be called with the window manager lock held. + * + * @return Rect The rectangle holding the system frame. + */ + public Rect getSystemFrameLw(); + + /** * Retrieve the frame of the content area that this window was last * laid out in. This is the area in which the content of the window * should be placed. It will be smaller than the display frame to @@ -298,6 +315,12 @@ public interface WindowManagerPolicy { boolean isDisplayedLw(); /** + * Return true if this window (or a window it is attached to, but not + * considering its app token) is currently animating. + */ + public boolean isAnimatingLw(); + + /** * Is this window considered to be gone for purposes of layout? */ boolean isGoneForLayoutLw(); @@ -305,8 +328,6 @@ public interface WindowManagerPolicy { /** * Returns true if this window has been shown on screen at some time in * the past. Must be called with the window manager lock held. - * - * @return boolean */ public boolean hasDrawnLw(); @@ -500,8 +521,13 @@ public interface WindowManagerPolicy { * * @param config The Configuration being computed, for you to change as * desired. + * @param keyboardPresence Flags that indicate whether internal or external + * keyboards are present. + * @param navigationPresence Flags that indicate whether internal or external + * navigation devices are present. */ - public void adjustConfigurationLw(Configuration config); + public void adjustConfigurationLw(Configuration config, int keyboardPresence, + int navigationPresence); /** * Assign a window type to a layer. Allows you to control how different @@ -1074,6 +1100,13 @@ public interface WindowManagerPolicy { public void stopScreenSaver(); /** + * Set the last used input method window state. This state is used to make IME transition + * smooth. + * @hide + */ + public void setLastInputMethodWindowLw(WindowState ime, WindowState target); + + /** * Print the WindowManagerPolicy's state into the given stream. * * @param prefix Text to print at the front of each line. diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index aec18fe4043e..5266c8358ae9 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -1531,6 +1531,22 @@ public class AccessibilityNodeInfo implements Parcelable { return "ACTION_SELECT"; case ACTION_CLEAR_SELECTION: return "ACTION_CLEAR_SELECTION"; + case ACTION_CLICK: + return "ACTION_CLICK"; + case ACTION_LONG_CLICK: + return "ACTION_LONG_CLICK"; + case ACTION_ACCESSIBILITY_FOCUS: + return "ACTION_ACCESSIBILITY_FOCUS"; + case ACTION_CLEAR_ACCESSIBILITY_FOCUS: + return "ACTION_CLEAR_ACCESSIBILITY_FOCUS"; + case ACTION_NEXT_AT_GRANULARITY: + return "ACTION_NEXT_AT_GRANULARITY"; + case ACTION_PREVIOUS_AT_GRANULARITY: + return "ACTION_PREVIOUS_AT_GRANULARITY"; + case ACTION_NEXT_HTML_ELEMENT: + return "ACTION_NEXT_HTML_ELEMENT"; + case ACTION_PREVIOUS_HTML_ELEMENT: + return "ACTION_PREVIOUS_HTML_ELEMENT"; default: throw new IllegalArgumentException("Unknown action: " + action); } diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java index 78a7d466f14a..5c60a1262ff0 100644 --- a/core/java/android/view/accessibility/AccessibilityRecord.java +++ b/core/java/android/view/accessibility/AccessibilityRecord.java @@ -135,7 +135,12 @@ public class AccessibilityRecord { */ public void setSource(View root, int virtualDescendantId) { enforceNotSealed(); - final boolean important = (root != null) ? root.isImportantForAccessibility() : true; + final boolean important; + if (virtualDescendantId == UNDEFINED) { + important = (root != null) ? root.isImportantForAccessibility() : true; + } else { + important = true; + } setBooleanProperty(PROPERTY_IMPORTANT_FOR_ACCESSIBILITY, important); mSourceWindowId = (root != null) ? root.getAccessibilityWindowId() : UNDEFINED; final int rootViewId = (root != null) ? root.getAccessibilityViewId() : UNDEFINED; diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 067be39db6e0..1803352ecaf4 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -672,6 +672,7 @@ public final class InputMethodManager { * Disconnect any existing input connection, clearing the served view. */ void finishInputLocked() { + mCurRootView = null; mNextServedView = null; if (mServedView != null) { if (DEBUG) Log.v(TAG, "FINISH INPUT: " + mServedView); diff --git a/core/java/android/webkit/AutoCompletePopup.java b/core/java/android/webkit/AutoCompletePopup.java index 21d5e0248445..87e878b40624 100644 --- a/core/java/android/webkit/AutoCompletePopup.java +++ b/core/java/android/webkit/AutoCompletePopup.java @@ -28,12 +28,15 @@ import android.widget.Filter; import android.widget.Filterable; import android.widget.ListAdapter; import android.widget.ListPopupWindow; +import android.widget.PopupWindow.OnDismissListener; -class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { +class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener, + OnDismissListener{ private static class AnchorView extends View { AnchorView(Context context) { super(context); setFocusable(false); + setVisibility(INVISIBLE); } } private static final int AUTOFILL_FORM = 100; @@ -48,17 +51,10 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { private WebViewClassic.WebViewInputConnection mInputConnection; private WebViewClassic mWebView; - public AutoCompletePopup(Context context, - WebViewClassic webView, + public AutoCompletePopup(WebViewClassic webView, WebViewClassic.WebViewInputConnection inputConnection) { mInputConnection = inputConnection; mWebView = webView; - mPopup = new ListPopupWindow(context); - mAnchor = new AnchorView(context); - mWebView.getWebView().addView(mAnchor); - mPopup.setOnItemClickListener(this); - mPopup.setAnchorView(mAnchor); - mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW); mHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -72,6 +68,9 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { } public boolean onKeyPreIme(int keyCode, KeyEvent event) { + if (mPopup == null) { + return false; + } if (keyCode == KeyEvent.KEYCODE_BACK && mPopup.isShowing()) { // special case for the back key, we do not even try to send it // to the drop down list but instead, consume it immediately @@ -112,11 +111,14 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { public void clearAdapter() { mAdapter = null; mFilter = null; - mPopup.dismiss(); - mPopup.setAdapter(null); + if (mPopup != null) { + mPopup.dismiss(); + mPopup.setAdapter(null); + } } public <T extends ListAdapter & Filterable> void setAdapter(T adapter) { + ensurePopup(); mPopup.setAdapter(adapter); mAdapter = adapter; if (adapter != null) { @@ -129,6 +131,7 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { } public void resetRect() { + ensurePopup(); int left = mWebView.contentToViewX(mWebView.mEditTextContentBounds.left); int right = mWebView.contentToViewX(mWebView.mEditTextContentBounds.right); int width = right - left; @@ -164,6 +167,9 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { // AdapterView.OnItemClickListener implementation @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + if (mPopup == null) { + return; + } if (id == 0 && position == 0 && mInputConnection.getIsAutoFillable()) { mText = ""; pushTextToInputConnection(); @@ -206,6 +212,7 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { @Override public void onFilterComplete(int count) { + ensurePopup(); boolean showDropDown = (count > 0) && (mInputConnection.getIsAutoFillable() || mText.length() > 0); if (showDropDown) { @@ -219,5 +226,23 @@ class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener { mPopup.dismiss(); } } + + @Override + public void onDismiss() { + mWebView.getWebView().removeView(mAnchor); + } + + private void ensurePopup() { + if (mPopup == null) { + mPopup = new ListPopupWindow(mWebView.getContext()); + mAnchor = new AnchorView(mWebView.getContext()); + mWebView.getWebView().addView(mAnchor); + mPopup.setOnItemClickListener(this); + mPopup.setAnchorView(mAnchor); + mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW); + } else if (mWebView.getWebView().indexOfChild(mAnchor) < 0) { + mWebView.getWebView().addView(mAnchor); + } + } } diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index 7b6b54cce0cf..c169de4cd69a 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -72,7 +72,7 @@ class BrowserFrame extends Handler { private final CallbackProxy mCallbackProxy; private final WebSettingsClassic mSettings; private final Context mContext; - private final WebViewDatabase mDatabase; + private final WebViewDatabaseClassic mDatabase; private final WebViewCore mWebViewCore; /* package */ boolean mLoadInitFromJava; private int mLoadType; @@ -241,7 +241,7 @@ class BrowserFrame extends Handler { mSettings = settings; mContext = context; mCallbackProxy = proxy; - mDatabase = WebViewDatabase.getInstance(appContext); + mDatabase = WebViewDatabaseClassic.getInstance(appContext); mWebViewCore = w; mSearchBox = new SearchBoxImpl(mWebViewCore, mCallbackProxy); @@ -496,8 +496,8 @@ class BrowserFrame extends Handler { if (item != null) { WebAddress uri = new WebAddress(item.getUrl()); String schemePlusHost = uri.getScheme() + uri.getHost(); - String[] up = - mDatabase.getUsernamePassword(schemePlusHost); + String[] up = mDatabase.getUsernamePassword( + schemePlusHost); if (up != null && up[0] != null) { setUsernamePassword(up[0], up[1]); } @@ -809,8 +809,7 @@ class BrowserFrame extends Handler { // non-null username implies that user has // chosen to save password, so update the // recorded password - mDatabase.setUsernamePassword( - schemePlusHost, username, password); + mDatabase.setUsernamePassword(schemePlusHost, username, password); } } else { // CallbackProxy will handle creating the resume diff --git a/core/java/android/webkit/CacheManager.java b/core/java/android/webkit/CacheManager.java index 671c06446609..f0e6ff03a919 100644 --- a/core/java/android/webkit/CacheManager.java +++ b/core/java/android/webkit/CacheManager.java @@ -56,6 +56,7 @@ public final class CacheManager { * Represents a resource stored in the HTTP cache. Instances of this class * can be obtained by calling * {@link CacheManager#getCacheFile CacheManager.getCacheFile(String, Map<String, String>))}. + * * @deprecated Access to the HTTP cache will be removed in a future release. */ @Deprecated @@ -81,7 +82,8 @@ public final class CacheManager { /** * Gets the status code of this cache entry. - * @return The status code of this cache entry + * + * @return the status code of this cache entry */ public int getHttpStatusCode() { return httpStatusCode; @@ -89,7 +91,8 @@ public final class CacheManager { /** * Gets the content length of this cache entry. - * @return The content length of this cache entry + * + * @return the content length of this cache entry */ public long getContentLength() { return contentLength; @@ -99,7 +102,8 @@ public final class CacheManager { * Gets the path of the file used to store the content of this cache * entry, relative to the base directory of the cache. See * {@link CacheManager#getCacheFileBaseDir CacheManager.getCacheFileBaseDir()}. - * @return The path of the file used to store this cache entry + * + * @return the path of the file used to store this cache entry */ public String getLocalPath() { return localPath; @@ -108,7 +112,8 @@ public final class CacheManager { /** * Gets the expiry date of this cache entry, expressed in milliseconds * since midnight, January 1, 1970 UTC. - * @return The expiry date of this cache entry + * + * @return the expiry date of this cache entry */ public long getExpires() { return expires; @@ -116,7 +121,8 @@ public final class CacheManager { /** * Gets the expiry date of this cache entry, expressed as a string. - * @return The expiry date of this cache entry + * + * @return the expiry date of this cache entry * */ public String getExpiresString() { @@ -126,7 +132,8 @@ public final class CacheManager { /** * Gets the date at which this cache entry was last modified, expressed * as a string. - * @return The date at which this cache entry was last modified + * + * @return the date at which this cache entry was last modified */ public String getLastModified() { return lastModified; @@ -134,7 +141,8 @@ public final class CacheManager { /** * Gets the entity tag of this cache entry. - * @return The entity tag of this cache entry + * + * @return the entity tag of this cache entry */ public String getETag() { return etag; @@ -142,7 +150,8 @@ public final class CacheManager { /** * Gets the MIME type of this cache entry. - * @return The MIME type of this cache entry + * + * @return the MIME type of this cache entry */ public String getMimeType() { return mimeType; @@ -151,7 +160,8 @@ public final class CacheManager { /** * Gets the value of the HTTP 'Location' header with which this cache * entry was received. - * @return The HTTP 'Location' header for this cache entry + * + * @return the HTTP 'Location' header for this cache entry */ public String getLocation() { return location; @@ -159,7 +169,8 @@ public final class CacheManager { /** * Gets the encoding of this cache entry. - * @return The encoding of this cache entry + * + * @return the encoding of this cache entry */ public String getEncoding() { return encoding; @@ -168,7 +179,8 @@ public final class CacheManager { /** * Gets the value of the HTTP 'Content-Disposition' header with which * this cache entry was received. - * @return The HTTP 'Content-Disposition' header for this cache entry + * + * @return the HTTP 'Content-Disposition' header for this cache entry * */ public String getContentDisposition() { @@ -179,7 +191,8 @@ public final class CacheManager { * Gets the input stream to the content of this cache entry, to allow * content to be read. See * {@link CacheManager#getCacheFile CacheManager.getCacheFile(String, Map<String, String>)}. - * @return An input stream to the content of this cache entry + * + * @return an input stream to the content of this cache entry */ public InputStream getInputStream() { return inStream; @@ -189,7 +202,8 @@ public final class CacheManager { * Gets an output stream to the content of this cache entry, to allow * content to be written. See * {@link CacheManager#saveCacheFile CacheManager.saveCacheFile(String, CacheResult)}. - * @return An output stream to the content of this cache entry + * + * @return an output stream to the content of this cache entry */ // Note that this is always null for objects returned by getCacheFile()! public OutputStream getOutputStream() { @@ -199,7 +213,8 @@ public final class CacheManager { /** * Sets an input stream to the content of this cache entry. - * @param stream An input stream to the content of this cache entry + * + * @param stream an input stream to the content of this cache entry */ public void setInputStream(InputStream stream) { this.inStream = stream; @@ -207,7 +222,8 @@ public final class CacheManager { /** * Sets the encoding of this cache entry. - * @param encoding The encoding of this cache entry + * + * @param encoding the encoding of this cache entry */ public void setEncoding(String encoding) { this.encoding = encoding; @@ -225,7 +241,8 @@ public final class CacheManager { * Initializes the HTTP cache. This method must be called before any * CacheManager methods are used. Note that this is called automatically * when a {@link WebView} is created. - * @param context The application context + * + * @param context the application context */ static void init(Context context) { // This isn't actually where the real cache lives, but where we put files for the @@ -240,7 +257,8 @@ public final class CacheManager { * Gets the base directory in which the files used to store the contents of * cache entries are placed. See * {@link CacheManager.CacheResult#getLocalPath CacheManager.CacheResult.getLocalPath()}. - * @return The base directory of the cache + * + * @return the base directory of the cache * @deprecated Access to the HTTP cache will be removed in a future release. */ @Deprecated @@ -250,7 +268,8 @@ public final class CacheManager { /** * Gets whether the HTTP cache is disabled. - * @return True if the HTTP cache is disabled + * + * @return true if the HTTP cache is disabled * @deprecated Access to the HTTP cache will be removed in a future release. */ @Deprecated @@ -262,8 +281,9 @@ public final class CacheManager { * Starts a cache transaction. Returns true if this is the only running * transaction. Otherwise, this transaction is nested inside currently * running transactions and false is returned. - * @return True if this is the only running transaction - * @deprecated This method no longer has any effect and always returns false + * + * @return true if this is the only running transaction + * @deprecated This method no longer has any effect and always returns false. */ @Deprecated public static boolean startCacheTransaction() { @@ -273,8 +293,9 @@ public final class CacheManager { /** * Ends the innermost cache transaction and returns whether this was the * only running transaction. - * @return True if this was the only running transaction - * @deprecated This method no longer has any effect and always returns false + * + * @return true if this was the only running transaction + * @deprecated This method no longer has any effect and always returns false. */ @Deprecated public static boolean endCacheTransaction() { @@ -287,10 +308,11 @@ public final class CacheManager { * entry needs validation, appropriate headers will be added to the map. * The input stream of the CacheEntry object should be closed by the caller * when access to the underlying file is no longer required. - * @param url The URL for which a cache entry is requested - * @param headers A map from HTTP header name to value, to be populated + * + * @param url the URL for which a cache entry is requested + * @param headers a map from HTTP header name to value, to be populated * for the returned cache entry - * @return The cache entry for the specified URL + * @return the cache entry for the specified URL * @deprecated Access to the HTTP cache will be removed in a future release. */ @Deprecated @@ -345,14 +367,15 @@ public final class CacheManager { } /** - * Given a url and its full headers, returns CacheResult if a local cache + * Given a URL and its full headers, gets a CacheResult if a local cache * can be stored. Otherwise returns null. The mimetype is passed in so that * the function can use the mimetype that will be passed to WebCore which * could be different from the mimetype defined in the headers. * forceCache is for out-of-package callers to force creation of a * CacheResult, and is used to supply surrogate responses for URL * interception. - * @return CacheResult for a given url + * + * @return a CacheResult for a given URL */ static CacheResult createCacheFile(String url, int statusCode, Headers headers, String mimeType, boolean forceCache) { @@ -363,8 +386,9 @@ public final class CacheManager { /** * Adds a cache entry to the HTTP cache for the specicifed URL. Also closes * the cache entry's output stream. - * @param url The URL for which the cache entry should be added - * @param cacheResult The cache entry to add + * + * @param url the URL for which the cache entry should be added + * @param cacheResult the cache entry to add * @deprecated Access to the HTTP cache will be removed in a future release. */ @Deprecated @@ -401,9 +425,9 @@ public final class CacheManager { } /** - * Remove all cache files. + * Removes all cache files. * - * @return Whether the removal succeeded. + * @return whether the removal succeeded */ static boolean removeAllCacheFiles() { // delete cache files in a separate thread to not block UI. diff --git a/core/java/android/webkit/CookieManager.java b/core/java/android/webkit/CookieManager.java index 1e7f38ce5af2..30c713e814c0 100644 --- a/core/java/android/webkit/CookieManager.java +++ b/core/java/android/webkit/CookieManager.java @@ -40,7 +40,7 @@ public class CookieManager { * {@link CookieSyncManager#createInstance(Context)} must be called * first. * - * @return The singleton CookieManager instance + * @return the singleton CookieManager instance */ public static synchronized CookieManager getInstance() { return WebViewFactory.getProvider().getCookieManager(); @@ -49,7 +49,8 @@ public class CookieManager { /** * Sets whether the application's {@link WebView} instances should send and * accept cookies. - * @param accept Whether {@link WebView} instances should send and accept + * + * @param accept whether {@link WebView} instances should send and accept * cookies */ public synchronized void setAcceptCookie(boolean accept) { @@ -59,7 +60,8 @@ public class CookieManager { /** * Gets whether the application's {@link WebView} instances send and accept * cookies. - * @return True if {@link WebView} instances send and accept cookies + * + * @return true if {@link WebView} instances send and accept cookies */ public synchronized boolean acceptCookie() { throw new MustOverrideException(); @@ -70,8 +72,9 @@ public class CookieManager { * path and name will be replaced with the new cookie. The cookie being set * must not have expired and must not be a session cookie, otherwise it * will be ignored. - * @param url The URL for which the cookie is set - * @param value The cookie as a string, using the format of the 'Set-Cookie' + * + * @param url the URL for which the cookie is set + * @param value the cookie as a string, using the format of the 'Set-Cookie' * HTTP response header */ public void setCookie(String url, String value) { @@ -80,8 +83,9 @@ public class CookieManager { /** * Gets the cookies for the given URL. - * @param url The URL for which the cookies are requested - * @return value The cookies as a string, using the format of the 'Cookie' + * + * @param url the URL for which the cookies are requested + * @return value the cookies as a string, using the format of the 'Cookie' * HTTP request header */ public String getCookie(String url) { @@ -89,10 +93,11 @@ public class CookieManager { } /** - * See {@link #getCookie(String)} - * @param url The URL for which the cookies are requested - * @param privateBrowsing Whether to use the private browsing cookie jar - * @return value The cookies as a string, using the format of the 'Cookie' + * See {@link #getCookie(String)}. + * + * @param url the URL for which the cookies are requested + * @param privateBrowsing whether to use the private browsing cookie jar + * @return value the cookies as a string, using the format of the 'Cookie' * HTTP request header * @hide Used by Browser, no intention to publish. */ @@ -101,10 +106,11 @@ public class CookieManager { } /** - * Get cookie(s) for a given uri so that it can be set to "cookie:" in http + * Gets cookie(s) for a given uri so that it can be set to "cookie:" in http * request header. - * @param uri The WebAddress for which the cookies are requested - * @return value The cookies as a string, using the format of the 'Cookie' + * + * @param uri the WebAddress for which the cookies are requested + * @return value the cookies as a string, using the format of the 'Cookie' * HTTP request header * @hide Used by RequestHandle, no intention to publish. */ @@ -129,7 +135,8 @@ public class CookieManager { /** * Gets whether there are stored cookies. - * @return True if there are stored cookies. + * + * @return true if there are stored cookies */ public synchronized boolean hasCookies() { throw new MustOverrideException(); @@ -137,7 +144,8 @@ public class CookieManager { /** * See {@link #hasCookies()}. - * @param privateBrowsing Whether to use the private browsing cookie jar + * + * @param privateBrowsing whether to use the private browsing cookie jar * @hide Used by Browser, no intention to publish. */ public synchronized boolean hasCookies(boolean privateBrowsing) { @@ -152,7 +160,7 @@ public class CookieManager { } /** - * Flush all cookies managed by the Chrome HTTP stack to flash. + * Flushes all cookies managed by the Chrome HTTP stack to flash. * * @hide Package level api, called from CookieSyncManager */ @@ -163,7 +171,8 @@ public class CookieManager { /** * Gets whether the application's {@link WebView} instances send and accept * cookies for file scheme URLs. - * @return True if {@link WebView} instances send and accept cookies for + * + * @return true if {@link WebView} instances send and accept cookies for * file scheme URLs */ // Static for backward compatibility. @@ -172,7 +181,8 @@ public class CookieManager { } /** - * Implements {@link #allowFileSchemeCookies()} + * Implements {@link #allowFileSchemeCookies()}. + * * @hide Only for use by WebViewProvider implementations */ protected boolean allowFileSchemeCookiesImpl() { @@ -195,7 +205,8 @@ public class CookieManager { } /** - * Implements {@link #setAcceptFileSchemeCookies(boolean)} + * Implements {@link #setAcceptFileSchemeCookies(boolean)}. + * * @hide Only for use by WebViewProvider implementations */ protected void setAcceptFileSchemeCookiesImpl(boolean accept) { diff --git a/core/java/android/webkit/GeolocationPermissions.java b/core/java/android/webkit/GeolocationPermissions.java index cd5c9d136816..9c0f7541fbcf 100755 --- a/core/java/android/webkit/GeolocationPermissions.java +++ b/core/java/android/webkit/GeolocationPermissions.java @@ -48,28 +48,31 @@ public class GeolocationPermissions { */ public interface Callback { /** - * Set the Geolocation permission state for the supplied origin. - * @param origin The origin for which permissions are set. - * @param allow Whether or not the origin should be allowed to use the - * Geolocation API. - * @param retain Whether the permission should be retained beyond the + * Sets the Geolocation permission state for the supplied origin. + * + * @param origin the origin for which permissions are set + * @param allow whether or not the origin should be allowed to use the + * Geolocation API + * @param retain whether the permission should be retained beyond the * lifetime of a page currently being displayed by a - * WebView. + * WebView */ public void invoke(String origin, boolean allow, boolean retain); }; /** - * Get the singleton instance of this class. - * @return The singleton {@link GeolocationPermissions} instance. + * Gets the singleton instance of this class. + * + * @return the singleton {@link GeolocationPermissions} instance */ public static GeolocationPermissions getInstance() { return WebViewFactory.getProvider().getGeolocationPermissions(); } /** - * Get the set of origins for which Geolocation permissions are stored. - * @param callback A {@link ValueCallback} to receive the result of this + * Gets the set of origins for which Geolocation permissions are stored. + * + * @param callback a {@link ValueCallback} to receive the result of this * request. This object's * {@link ValueCallback#onReceiveValue(T) onReceiveValue()} * method will be invoked asynchronously with a set of @@ -85,9 +88,10 @@ public class GeolocationPermissions { } /** - * Get the Geolocation permission state for the specified origin. - * @param origin The origin for which Geolocation permission is requested. - * @param callback A {@link ValueCallback} to receive the result of this + * Gets the Geolocation permission state for the specified origin. + * + * @param origin the origin for which Geolocation permission is requested + * @param callback a {@link ValueCallback} to receive the result of this * request. This object's * {@link ValueCallback#onReceiveValue(T) onReceiveValue()} * method will be invoked asynchronously with a boolean @@ -99,23 +103,25 @@ public class GeolocationPermissions { } /** - * Clear the Geolocation permission state for the specified origin. - * @param origin The origin for which Geolocation permissions are cleared. + * Clears the Geolocation permission state for the specified origin. + * + * @param origin the origin for which Geolocation permissions are cleared */ public void clear(String origin) { // Must be a no-op for backward compatibility: see the hidden constructor for reason. } /** - * Allow the specified origin to use the Geolocation API. - * @param origin The origin for which Geolocation API use is allowed. + * Allows the specified origin to use the Geolocation API. + * + * @param origin the origin for which Geolocation API use is allowed */ public void allow(String origin) { // Must be a no-op for backward compatibility: see the hidden constructor for reason. } /** - * Clear the Geolocation permission state for all origins. + * Clears the Geolocation permission state for all origins. */ public void clearAll() { // Must be a no-op for backward compatibility: see the hidden constructor for reason. diff --git a/core/java/android/webkit/ViewStateSerializer.java b/core/java/android/webkit/ViewStateSerializer.java index 35168cf11c3d..c16108577a58 100644 --- a/core/java/android/webkit/ViewStateSerializer.java +++ b/core/java/android/webkit/ViewStateSerializer.java @@ -64,7 +64,6 @@ class ViewStateSerializer { draw.mViewState = new WebViewCore.ViewState(); draw.mContentSize = new Point(contentWidth, contentHeight); draw.mBaseLayer = baseLayer; - draw.mInvalRegion = new Region(0, 0, contentWidth, contentHeight); stream.close(); return draw; } diff --git a/core/java/android/webkit/WebResourceResponse.java b/core/java/android/webkit/WebResourceResponse.java index 650310e219a4..b7171eebfb3f 100644 --- a/core/java/android/webkit/WebResourceResponse.java +++ b/core/java/android/webkit/WebResourceResponse.java @@ -36,9 +36,10 @@ public class WebResourceResponse { * input stream. Callers must implement * {@link InputStream#read(byte[]) InputStream.read(byte[])} for the input * stream. - * @param mimeType The resource response's MIME type, for example text/html - * @param encoding The resource response's encoding - * @param data The input stream that provides the resource response's data + * + * @param mimeType the resource response's MIME type, for example text/html + * @param encoding the resource response's encoding + * @param data the input stream that provides the resource response's data */ public WebResourceResponse(String mimeType, String encoding, InputStream data) { @@ -49,7 +50,8 @@ public class WebResourceResponse { /** * Sets the resource response's MIME type, for example text/html. - * @param mimeType The resource response's MIME type + * + * @param mimeType the resource response's MIME type */ public void setMimeType(String mimeType) { mMimeType = mimeType; @@ -57,7 +59,8 @@ public class WebResourceResponse { /** * Gets the resource response's MIME type. - * @return The resource response's MIME type + * + * @return the resource response's MIME type */ public String getMimeType() { return mMimeType; @@ -66,7 +69,8 @@ public class WebResourceResponse { /** * Sets the resource response's encoding, for example UTF-8. This is used * to decode the data from the input stream. - * @param encoding The resource response's encoding + * + * @param encoding the resource response's encoding */ public void setEncoding(String encoding) { mEncoding = encoding; @@ -74,7 +78,8 @@ public class WebResourceResponse { /** * Gets the resource response's encoding. - * @return The resource response's encoding + * + * @return the resource response's encoding */ public String getEncoding() { return mEncoding; @@ -83,7 +88,8 @@ public class WebResourceResponse { /** * Sets the input stream that provides the resource respone's data. Callers * must implement {@link InputStream#read(byte[]) InputStream.read(byte[])}. - * @param data The input stream that provides the resource response's data + * + * @param data the input stream that provides the resource response's data */ public void setData(InputStream data) { mInputStream = data; @@ -91,7 +97,8 @@ public class WebResourceResponse { /** * Gets the input stream that provides the resource respone's data. - * @return The input stream that provides the resource response's data + * + * @return the input stream that provides the resource response's data */ public InputStream getData() { return mInputStream; diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java index 1bbf00f5fe62..fa3cb2047a0c 100644 --- a/core/java/android/webkit/WebSettings.java +++ b/core/java/android/webkit/WebSettings.java @@ -33,10 +33,12 @@ import android.os.Build; public abstract class WebSettings { /** * Enum for controlling the layout of html. - * NORMAL means no rendering changes. - * SINGLE_COLUMN moves all content into one column that is the width of the - * view. - * NARROW_COLUMNS makes all columns no wider than the screen if possible. + * <ul> + * <li>NORMAL means no rendering changes.</li> + * <li>SINGLE_COLUMN moves all content into one column that is the width of the + * view.</li> + * <li>NARROW_COLUMNS makes all columns no wider than the screen if possible.</li> + * </ul> */ // XXX: These must match LayoutAlgorithm in Settings.h in WebCore. public enum LayoutAlgorithm { @@ -51,11 +53,14 @@ public abstract class WebSettings { /** * Enum for specifying the text size. - * SMALLEST is 50% - * SMALLER is 75% - * NORMAL is 100% - * LARGER is 150% - * LARGEST is 200% + * <ul> + * <li>SMALLEST is 50%</li> + * <li>SMALLER is 75%</li> + * <li>NORMAL is 100%</li> + * <li>LARGER is 150%</li> + * <li>LARGEST is 200%</li> + * </ul> + * * @deprecated Use {@link WebSettings#setTextZoom(int)} and {@link WebSettings#getTextZoom()} instead. */ public enum TextSize { @@ -72,9 +77,11 @@ public abstract class WebSettings { /** * Enum for specifying the WebView's desired density. - * FAR makes 100% looking like in 240dpi - * MEDIUM makes 100% looking like in 160dpi - * CLOSE makes 100% looking like in 120dpi + * <ul> + * <li>FAR makes 100% looking like in 240dpi</li> + * <li>MEDIUM makes 100% looking like in 160dpi</li> + * <li>CLOSE makes 100% looking like in 120dpi</li> + * </ul> */ public enum ZoomDensity { FAR(150), // 240dpi @@ -87,24 +94,24 @@ public abstract class WebSettings { } /** - * Default cache usage pattern Use with {@link #setCacheMode}. + * Default cache usage pattern. Use with {@link #setCacheMode}. */ public static final int LOAD_DEFAULT = -1; /** - * Normal cache usage pattern Use with {@link #setCacheMode}. + * Normal cache usage pattern. Use with {@link #setCacheMode}. */ public static final int LOAD_NORMAL = 0; /** - * Use cache if content is there, even if expired (eg, history nav) + * Use cache if content is there, even if expired (eg, history nav). * If it is not in the cache, load from network. * Use with {@link #setCacheMode}. */ public static final int LOAD_CACHE_ELSE_NETWORK = 1; /** - * Don't use the cache, load from network + * Don't use the cache, load from network. * Use with {@link #setCacheMode}. */ public static final int LOAD_NO_CACHE = 2; @@ -139,6 +146,7 @@ public abstract class WebSettings { /** * Hidden constructor to prevent clients from creating a new settings * instance or deriving the class. + * * @hide */ protected WebSettings() { @@ -146,6 +154,7 @@ public abstract class WebSettings { /** * Enables dumping the pages navigation cache to a text file. + * * @deprecated This method is now obsolete. */ @Deprecated @@ -154,7 +163,8 @@ public abstract class WebSettings { } /** - * Returns true if dumping the navigation cache is enabled. + * Gets whether dumping the navigation cache is enabled. + * * @deprecated This method is now obsolete. */ @Deprecated @@ -167,16 +177,19 @@ public abstract class WebSettings { * controls and gestures. The particular zoom mechanisms that should be used * can be set with {@link #setBuiltInZoomControls}. This setting does not * affect zooming performed using the {@link WebView#zoomIn()} and - * {@link WebView#zoomOut()} methods. - * @param support Whether the WebView should support zoom. + * {@link WebView#zoomOut()} methods. The default is true. + * + * @param support whether the WebView should support zoom */ public void setSupportZoom(boolean support) { throw new MustOverrideException(); } /** - * Returns true if the WebView supports zoom. The default is true. - * @return True if the WebView supports zoom. + * Gets whether the WebView supports zoom. + * + * @return true if the WebView supports zoom + * @see #setSupportZoom */ public boolean supportZoom() { throw new MustOverrideException(); @@ -187,11 +200,12 @@ public abstract class WebSettings { * built-in zoom mechanisms comprise on-screen zoom controls, which are * displayed over the WebView's content, and the use of a pinch gesture to * control zooming. Whether or not these on-screen controls are displayed - * can be set with {@link #setDisplayZoomControls}. + * can be set with {@link #setDisplayZoomControls}. The default is false. * <p> * The built-in mechanisms are the only currently supported zoom * mechanisms, so it is recommended that this setting is always enabled. - * @param enabled Whether the WebView should use its built-in zoom mechanisms. + * + * @param enabled whether the WebView should use its built-in zoom mechanisms */ // This method was intended to select between the built-in zoom mechanisms // and the separate zoom controls. The latter were obtained using @@ -201,9 +215,10 @@ public abstract class WebSettings { } /** - * Returns true if the zoom mechanisms built into WebView are being used. - * The default is false. - * @return True if the zoom mechanisms built into WebView are being used. + * Gets whether the zoom mechanisms built into WebView are being used. + * + * @return true if the zoom mechanisms built into WebView are being used + * @see #setBuiltInZoomControls */ public boolean getBuiltInZoomControls() { throw new MustOverrideException(); @@ -212,24 +227,28 @@ public abstract class WebSettings { /** * Sets whether the WebView should display on-screen zoom controls when * using the built-in zoom mechanisms. See {@link #setBuiltInZoomControls}. - * @param enabled Whether the WebView should display on-screen zoom controls. + * The default is true. + * + * @param enabled whether the WebView should display on-screen zoom controls */ public void setDisplayZoomControls(boolean enabled) { throw new MustOverrideException(); } /** - * Returns true if the WebView displays on-screen zoom controls when using - * the built-in zoom mechanisms. The default is true. - * @return True if the WebView displays on-screen zoom controls when using + * Gets whether the WebView displays on-screen zoom controls when using * the built-in zoom mechanisms. + * + * @return true if the WebView displays on-screen zoom controls when using + * the built-in zoom mechanisms + * @see #setDisplayZoomControls */ public boolean getDisplayZoomControls() { throw new MustOverrideException(); } /** - * Enable or disable file access within WebView. File access is enabled by + * Enables or disables file access within WebView. File access is enabled by * default. Note that this enables or disables file system access only. * Assets and resources are still accessible using file:///android_asset and * file:///android_res. @@ -239,44 +258,48 @@ public abstract class WebSettings { } /** - * Returns true if this WebView supports file access. + * Gets whether this WebView supports file access. + * + * @see #setAllowFileAccess */ public boolean getAllowFileAccess() { throw new MustOverrideException(); } /** - * Enable or disable content url access within WebView. Content url access - * allows WebView to load content from a content provider installed in the - * system. The default is enabled. + * Enables or disables content URL access within WebView. Content URL + * access allows WebView to load content from a content provider installed + * in the system. The default is enabled. */ public void setAllowContentAccess(boolean allow) { throw new MustOverrideException(); } /** - * Returns true if this WebView supports content url access. + * Gets whether this WebView supports content URL access. + * + * @see #setAllowContentAccess */ public boolean getAllowContentAccess() { throw new MustOverrideException(); } /** - * Set whether the WebView loads a page with overview mode. + * Sets whether the WebView loads a page with overview mode. */ public void setLoadWithOverviewMode(boolean overview) { throw new MustOverrideException(); } /** - * Returns true if this WebView loads page with overview mode + * Gets whether this WebView loads pages with overview mode. */ public boolean getLoadWithOverviewMode() { throw new MustOverrideException(); } /** - * Set whether the WebView will enable smooth transition while panning or + * Sets whether the WebView will enable smooth transition while panning or * zooming or while the window hosting the WebView does not have focus. * If it is true, WebView will choose a solution to maximize the performance. * e.g. the WebView's content may not be updated during the transition. @@ -285,18 +308,22 @@ public abstract class WebSettings { public void setEnableSmoothTransition(boolean enable) { throw new MustOverrideException(); } + /** - * Returns true if the WebView enables smooth transition while panning or + * Gets whether the WebView enables smooth transition while panning or * zooming. + * + * @see #setEnableSmoothTransition */ public boolean enableSmoothTransition() { throw new MustOverrideException(); } /** - * Set whether the WebView uses its background for over scroll background. + * Sets whether the WebView uses its background for over scroll background. * If true, it will use the WebView's background. If false, it will use an * internal pattern. Default is true. + * * @deprecated This method is now obsolete. */ @Deprecated @@ -305,8 +332,10 @@ public abstract class WebSettings { } /** - * Returns true if this WebView uses WebView's background instead of + * Gets whether this WebView uses WebView's background instead of * internal pattern for over scroll background. + * + * @see #setUseWebViewBackgroundForOverscrollBackground * @deprecated This method is now obsolete. */ @Deprecated @@ -315,77 +344,82 @@ public abstract class WebSettings { } /** - * Store whether the WebView is saving form data. + * Sets whether the WebView is saving form data. */ public void setSaveFormData(boolean save) { throw new MustOverrideException(); } /** - * Return whether the WebView is saving form data and displaying prior - * entries/autofill++. Always false in private browsing mode. + * Gets whether the WebView is saving form data and displaying prior + * entries/autofill++. Always false in private browsing mode. */ public boolean getSaveFormData() { throw new MustOverrideException(); } /** - * Store whether the WebView is saving password. + * Stores whether the WebView is saving password. */ public void setSavePassword(boolean save) { throw new MustOverrideException(); } /** - * Return whether the WebView is saving password. + * Gets whether the WebView is saving password. */ public boolean getSavePassword() { throw new MustOverrideException(); } /** - * Set the text zoom of the page in percent. Default is 100. - * @param textZoom A percent value for increasing or decreasing the text. + * Sets the text zoom of the page in percent. Default is 100. + * + * @param textZoom the percent value for increasing or decreasing the text */ public synchronized void setTextZoom(int textZoom) { throw new MustOverrideException(); } /** - * Get the text zoom of the page in percent. - * @return A percent value describing the text zoom. - * @see setTextSizeZoom + * Gets the text zoom of the page in percent. + * + * @return a percent value describing the text zoom + * @see #setTextSizeZoom */ public synchronized int getTextZoom() { throw new MustOverrideException(); } /** - * Set the text size of the page. - * @param t A TextSize value for increasing or decreasing the text. + * Sets the text size of the page. + * + * @param t the TextSize value for increasing or decreasing the text * @see WebSettings.TextSize - * @deprecated Use {@link #setTextZoom(int)} instead + * @deprecated Use {@link #setTextZoom(int)} instead. */ public synchronized void setTextSize(TextSize t) { throw new MustOverrideException(); } /** - * Get the text size of the page. If the text size was previously specified + * Gets the text size of the page. If the text size was previously specified * in percent using {@link #setTextZoom(int)}, this will return * the closest matching {@link TextSize}. - * @return A TextSize enum value describing the text size. + * + * @return a TextSize enum value describing the text size * @see WebSettings.TextSize - * @deprecated Use {@link #getTextZoom()} instead + * @deprecated Use {@link #getTextZoom()} instead. */ public synchronized TextSize getTextSize() { throw new MustOverrideException(); } /** - * Set the default zoom density of the page. This should be called from UI + * Sets the default zoom density of the page. This should be called from UI * thread. - * @param zoom A ZoomDensity value + * + * @param zoom a ZoomDensity value * @see WebSettings.ZoomDensity */ public void setDefaultZoom(ZoomDensity zoom) { @@ -393,9 +427,9 @@ public abstract class WebSettings { } /** - * Get the default zoom density of the page. This should be called from UI + * Gets the default zoom density of the page. This should be called from UI * thread. - * @return A ZoomDensity value + * @return a ZoomDensity value * @see WebSettings.ZoomDensity */ public ZoomDensity getDefaultZoom() { @@ -410,15 +444,17 @@ public abstract class WebSettings { } /** - * Returns true if light touches are enabled. + * Gets whether light touches are enabled. */ public boolean getLightTouchEnabled() { throw new MustOverrideException(); } /** - * @deprecated This setting controlled a rendering optimization - * that is no longer present. Setting it now has no effect. + * Controlled a rendering optimization that is no longer present. Setting + * it now has no effect. + * + * @deprecated This setting now has no effect. */ @Deprecated public synchronized void setUseDoubleTree(boolean use) { @@ -426,8 +462,10 @@ public abstract class WebSettings { } /** - * @deprecated This setting controlled a rendering optimization - * that is no longer present. Setting it now has no effect. + * Controlled a rendering optimization that is no longer present. Setting + * it now has no effect. + * + * @deprecated This setting now has no effect. */ @Deprecated public synchronized boolean getUseDoubleTree() { @@ -436,10 +474,10 @@ public abstract class WebSettings { } /** - * Tell the WebView about user-agent string. - * @param ua 0 if the WebView should use an Android user-agent string, - * 1 if the WebView should use a desktop user-agent string. + * Tells the WebView about user-agent string. * + * @param ua 0 if the WebView should use an Android user-agent string, + * 1 if the WebView should use a desktop user-agent string * @deprecated Please use setUserAgentString instead. */ @Deprecated @@ -448,11 +486,11 @@ public abstract class WebSettings { } /** - * Return user-agent as int - * @return int 0 if the WebView is using an Android user-agent string. - * 1 if the WebView is using a desktop user-agent string. - * -1 if the WebView is using user defined user-agent string. + * Gets the user-agent as an int. * + * @return 0 if the WebView is using an Android user-agent string, + * 1 if the WebView is using a desktop user-agent string, + * -1 if the WebView is using user defined user-agent string * @deprecated Please use getUserAgentString instead. */ @Deprecated @@ -461,30 +499,34 @@ public abstract class WebSettings { } /** - * Tell the WebView to use the wide viewport + * Tells the WebView to use the wide viewport. */ public synchronized void setUseWideViewPort(boolean use) { throw new MustOverrideException(); } /** - * @return True if the WebView is using a wide viewport + * Gets whether the WebView is using a wide viewport. + * + * @return true if the WebView is using a wide viewport */ public synchronized boolean getUseWideViewPort() { throw new MustOverrideException(); } /** - * Tell the WebView whether it supports multiple windows. TRUE means - * that {@link WebChromeClient#onCreateWindow(WebView, boolean, - * boolean, Message)} is implemented by the host application. + * Tells the WebView whether it supports multiple windows. TRUE means + * that {@link WebChromeClient#onCreateWindow(WebView, boolean, + * boolean, Message)} is implemented by the host application. */ public synchronized void setSupportMultipleWindows(boolean support) { throw new MustOverrideException(); } /** - * @return True if the WebView is supporting multiple windows. This means + * Gets whether the WebView is supporting multiple windows. + * + * @return true if the WebView is supporting multiple windows. This means * that {@link WebChromeClient#onCreateWindow(WebView, boolean, * boolean, Message)} is implemented by the host application. */ @@ -493,9 +535,10 @@ public abstract class WebSettings { } /** - * Set the underlying layout algorithm. This will cause a relayout of the - * WebView. - * @param l A LayoutAlgorithm enum specifying the algorithm to use. + * Sets the underlying layout algorithm. This will cause a relayout of the + * WebView. The default is NARROW_COLUMNS. + * + * @param l a LayoutAlgorithm enum specifying the algorithm to use * @see WebSettings.LayoutAlgorithm */ public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) { @@ -503,9 +546,11 @@ public abstract class WebSettings { } /** - * Return the current layout algorithm. The default is NARROW_COLUMNS. - * @return LayoutAlgorithm enum value describing the layout algorithm - * being used. + * Gets the current layout algorithm. + * + * @return a LayoutAlgorithm enum value describing the layout algorithm + * being used + * @see #setLayoutAlgorithm * @see WebSettings.LayoutAlgorithm */ public synchronized LayoutAlgorithm getLayoutAlgorithm() { @@ -513,164 +558,193 @@ public abstract class WebSettings { } /** - * Set the standard font family name. - * @param font A font family name. + * Sets the standard font family name. The default is "sans-serif". + * + * @param font a font family name */ public synchronized void setStandardFontFamily(String font) { throw new MustOverrideException(); } /** - * Get the standard font family name. The default is "sans-serif". - * @return The standard font family name as a string. + * Gets the standard font family name. + * + * @return the standard font family name as a string + * @see #setStandardFontFamily */ public synchronized String getStandardFontFamily() { throw new MustOverrideException(); } /** - * Set the fixed font family name. - * @param font A font family name. + * Sets the fixed font family name. The default is "monospace". + * + * @param font a font family name */ public synchronized void setFixedFontFamily(String font) { throw new MustOverrideException(); } /** - * Get the fixed font family name. The default is "monospace". - * @return The fixed font family name as a string. + * Gets the fixed font family name. + * + * @return the fixed font family name as a string + * @see #setFixedFontFamily */ public synchronized String getFixedFontFamily() { throw new MustOverrideException(); } /** - * Set the sans-serif font family name. - * @param font A font family name. + * Sets the sans-serif font family name. + * + * @param font a font family name */ public synchronized void setSansSerifFontFamily(String font) { throw new MustOverrideException(); } /** - * Get the sans-serif font family name. - * @return The sans-serif font family name as a string. + * Gets the sans-serif font family name. + * + * @return the sans-serif font family name as a string */ public synchronized String getSansSerifFontFamily() { throw new MustOverrideException(); } /** - * Set the serif font family name. The default is "sans-serif". - * @param font A font family name. + * Sets the serif font family name. The default is "sans-serif". + * + * @param font a font family name */ public synchronized void setSerifFontFamily(String font) { throw new MustOverrideException(); } /** - * Get the serif font family name. The default is "serif". - * @return The serif font family name as a string. + * Gets the serif font family name. The default is "serif". + * + * @return the serif font family name as a string + * @see #setSerifFontFamily */ public synchronized String getSerifFontFamily() { throw new MustOverrideException(); } /** - * Set the cursive font family name. - * @param font A font family name. + * Sets the cursive font family name. The default is "cursive". + * + * @param font a font family name */ public synchronized void setCursiveFontFamily(String font) { throw new MustOverrideException(); } /** - * Get the cursive font family name. The default is "cursive". - * @return The cursive font family name as a string. + * Gets the cursive font family name. + * + * @return the cursive font family name as a string + * @see #setCursiveFontFamily */ public synchronized String getCursiveFontFamily() { throw new MustOverrideException(); } /** - * Set the fantasy font family name. - * @param font A font family name. + * Sets the fantasy font family name. The default is "fantasy". + * + * @param font a font family name */ public synchronized void setFantasyFontFamily(String font) { throw new MustOverrideException(); } /** - * Get the fantasy font family name. The default is "fantasy". - * @return The fantasy font family name as a string. + * Gets the fantasy font family name. + * + * @return the fantasy font family name as a string + * @see #setFantasyFontFamily */ public synchronized String getFantasyFontFamily() { throw new MustOverrideException(); } /** - * Set the minimum font size. - * @param size A non-negative integer between 1 and 72. - * Any number outside the specified range will be pinned. + * Sets the minimum font size. The default is 8. + * + * @param size a non-negative integer between 1 and 72. Any number outside + * the specified range will be pinned. */ public synchronized void setMinimumFontSize(int size) { throw new MustOverrideException(); } /** - * Get the minimum font size. The default is 8. - * @return A non-negative integer between 1 and 72. + * Gets the minimum font size. + * + * @return a non-negative integer between 1 and 72 + * @see #setMinimumFontSize */ public synchronized int getMinimumFontSize() { throw new MustOverrideException(); } /** - * Set the minimum logical font size. - * @param size A non-negative integer between 1 and 72. - * Any number outside the specified range will be pinned. + * Sets the minimum logical font size. The default is 8. + * + * @param size a non-negative integer between 1 and 72. Any number outside + * the specified range will be pinned. */ public synchronized void setMinimumLogicalFontSize(int size) { throw new MustOverrideException(); } /** - * Get the minimum logical font size. The default is 8. - * @return A non-negative integer between 1 and 72. + * Gets the minimum logical font size. + * + * @return a non-negative integer between 1 and 72 + * @see #setMinimumLogicalFontSize */ public synchronized int getMinimumLogicalFontSize() { throw new MustOverrideException(); } /** - * Set the default font size. - * @param size A non-negative integer between 1 and 72. - * Any number outside the specified range will be pinned. + * Sets the default font size. The default is 16. + * + * @param size a non-negative integer between 1 and 72. Any number outside + * the specified range will be pinned. */ public synchronized void setDefaultFontSize(int size) { throw new MustOverrideException(); } /** - * Get the default font size. The default is 16. - * @return A non-negative integer between 1 and 72. + * Gets the default font size. + * + * @return a non-negative integer between 1 and 72 + * @see #setDefaultFontSize */ public synchronized int getDefaultFontSize() { throw new MustOverrideException(); } /** - * Set the default fixed font size. - * @param size A non-negative integer between 1 and 72. - * Any number outside the specified range will be pinned. + * Sets the default fixed font size. The default is 16. + * + * @param size a non-negative integer between 1 and 72. Any number outside + * the specified range will be pinned. */ public synchronized void setDefaultFixedFontSize(int size) { throw new MustOverrideException(); } /** - * Get the default fixed font size. The default is 16. - * @return A non-negative integer between 1 and 72. + * Gets the default fixed font size. + * + * @return a non-negative integer between 1 and 72 + * @see #setDefaultFixedFontSize */ public synchronized int getDefaultFixedFontSize() { throw new MustOverrideException(); @@ -683,16 +757,20 @@ public abstract class WebSettings { * of images specified using network URI schemes. Note that if the value of this * setting is changed from false to true, all images resources referenced * by content currently displayed by the WebView are loaded automatically. - * @param flag Whether the WebView should load image resources. + * The default is true. + * + * @param flag whether the WebView should load image resources */ public synchronized void setLoadsImagesAutomatically(boolean flag) { throw new MustOverrideException(); } /** - * Returns true if the WebView loads image resources. This includes - * images embedded using the data URI scheme. The default is true. - * @return True if the WebView loads image resources. + * Gets whether the WebView loads image resources. This includes + * images embedded using the data URI scheme. + * + * @return true if the WebView loads image resources + * @see #setLoadsImagesAutomatically */ public synchronized boolean getLoadsImagesAutomatically() { throw new MustOverrideException(); @@ -707,9 +785,10 @@ public abstract class WebSettings { * will also prevent network images from loading, even if this flag is set * to false. When the value of this setting is changed from true to false, * network images resources referenced by content currently displayed by - * the WebView are fetched automatically. - * @param flag Whether the WebView should not load image resources from - * the network. + * the WebView are fetched automatically. The default is false. + * + * @param flag whether the WebView should not load image resources from the + * network * @see #setBlockNetworkLoads */ public synchronized void setBlockNetworkImage(boolean flag) { @@ -717,9 +796,10 @@ public abstract class WebSettings { } /** - * Returns true if the WebView does not load image resources from the network. - * The default is false. - * @return True if the WebView does not load image resources from the network. + * Gets whether the WebView does not load image resources from the network. + * + * @return true if the WebView does not load image resources from the network + * @see #setBlockNetworkImage */ public synchronized boolean getBlockNetworkImage() { throw new MustOverrideException(); @@ -735,9 +815,12 @@ public abstract class WebSettings { * If the application does not have the * {@link android.Manifest.permission#INTERNET} permission, attempts to set * a value of false will cause a {@link java.lang.SecurityException} - * to be thrown. - * @param flag Whether the WebView should not load any resources - * from the network. + * to be thrown. The default value is false if the application has the + * {@link android.Manifest.permission#INTERNET} permission, otherwise it is + * true. + * + * @param flag whether the WebView should not load any resources from the + * network * @see android.webkit.WebView#reload */ public synchronized void setBlockNetworkLoads(boolean flag) { @@ -745,50 +828,64 @@ public abstract class WebSettings { } /** - * Returns true if the WebView does not load any resources from the network. - * The default value is false if the application has the - * {@link android.Manifest.permission#INTERNET} permission, otherwise it is - * true. - * @return True if the WebView does not load any resources from the network. + * Gets whether the WebView does not load any resources from the network. + * + * @return true if the WebView does not load any resources from the network + * @see #setBlockNetworkLoads */ public synchronized boolean getBlockNetworkLoads() { throw new MustOverrideException(); } /** - * Tell the WebView to enable javascript execution. - * @param flag True if the WebView should execute javascript. + * Tells the WebView to enable JavaScript execution. + * <b>The default is false.</b> + * + * @param flag true if the WebView should execute JavaScript */ public synchronized void setJavaScriptEnabled(boolean flag) { throw new MustOverrideException(); } /** - * Configure scripting (such as XmlHttpRequest) access from file scheme URLs - * to any origin. Note, calling this method with a true argument value also - * implies calling setAllowFileAccessFromFileURLs with a true. The default - * value is false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} - * and higher and true otherwise. + * Sets whether JavaScript running in the context of a file scheme URL + * should be allowed to access content from any origin. This includes + * access to content from other file scheme URLs. See + * {@link #setAllowFileAccessFromFileURLs}. To enable the most restrictive, + * and therefore secure policy, this setting should be disabled. + * <p> + * The default value is true for API level + * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below, + * and false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} + * and above. * - . * @param flag True if the WebView should allow scripting access from file - * scheme URLs to any origin + * @param flag whether JavaScript running in the context of a file scheme + * URL should be allowed to access content from any origin */ public abstract void setAllowUniversalAccessFromFileURLs(boolean flag); /** - * Configure scripting (such as XmlHttpRequest) access from file scheme URLs - * to file origin. The default value is false for API level - * {@link android.os.Build.VERSION_CODES#JELLY_BEAN} and higher and true - * otherwise. + * Sets whether JavaScript running in the context of a file scheme URL + * should be allowed to access content from other file scheme URLs. To + * enable the most restrictive, and therefore secure policy, this setting + * should be disabled. Note that the value of this setting is ignored if + * the value of {@link #getAllowUniversalAccessFromFileURLs} is true. + * <p> + * The default value is true for API level + * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below, + * and false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} + * and above. * - * @param flag True if the WebView should allow scripting access from file - * scheme URLs to file origin + * @param flag whether JavaScript running in the context of a file scheme + * URL should be allowed to access content from other file + * scheme URLs */ public abstract void setAllowFileAccessFromFileURLs(boolean flag); /** - * Tell the WebView to enable plugins. - * @param flag True if the WebView should load plugins. + * Tells the WebView to enable plugins. + * + * @param flag true if the WebView should load plugins * @deprecated This method has been deprecated in favor of * {@link #setPluginState} */ @@ -798,22 +895,24 @@ public abstract class WebSettings { } /** - * Tell the WebView to enable, disable, or have plugins on demand. On + * Tells the WebView to enable, disable, or have plugins on demand. On * demand mode means that if a plugin exists that can handle the embedded * content, a placeholder icon will be shown instead of the plugin. When * the placeholder is clicked, the plugin will be enabled. - * @param state One of the PluginState values. + * + * @param state a PluginState value */ public synchronized void setPluginState(PluginState state) { throw new MustOverrideException(); } /** - * Set a custom path to plugins used by the WebView. This method is + * Sets a custom path to plugins used by the WebView. This method is * obsolete since each plugin is now loaded from its own package. - * @param pluginsPath String path to the directory containing plugins. + * + * @param pluginsPath a String path to the directory containing plugins * @deprecated This method is no longer used as plugins are loaded from - * their own APK via the system's package manager. + * their own APK via the system's package manager. */ @Deprecated public synchronized void setPluginsPath(String pluginsPath) { @@ -821,91 +920,101 @@ public abstract class WebSettings { } /** - * Set the path to where database storage API databases should be saved. - * Nota that the WebCore Database Tracker only allows the path to be set once. - * This will update WebCore when the Sync runs in the C++ side. - * @param databasePath String path to the directory where databases should - * be saved. May be the empty string but should never be null. + * Sets the path to where database storage API databases should be saved. + * Note that the WebCore Database Tracker only allows the path to be set once. + * + * @param databasePath a String path to the directory where databases should + * be saved. May be the empty string but should never + * be null. */ + // This will update WebCore when the Sync runs in the C++ side. public synchronized void setDatabasePath(String databasePath) { throw new MustOverrideException(); } /** - * Set the path where the Geolocation permissions database should be saved. - * This will update WebCore when the Sync runs in the C++ side. - * @param databasePath String path to the directory where the Geolocation - * permissions database should be saved. May be the empty string but - * should never be null. + * Sets the path where the Geolocation permissions database should be saved. + * + * @param databasePath a String path to the directory where the Geolocation + * permissions database should be saved. May be the + * empty string but should never be null. */ + // This will update WebCore when the Sync runs in the C++ side. public synchronized void setGeolocationDatabasePath(String databasePath) { throw new MustOverrideException(); } /** - * Tell the WebView to enable Application Caches API. - * @param flag True if the WebView should enable Application Caches. + * Tells the WebView to enable Application Caches API. + * + * @param flag true if the WebView should enable Application Caches */ public synchronized void setAppCacheEnabled(boolean flag) { throw new MustOverrideException(); } /** - * Set a custom path to the Application Caches files. The client + * Sets a custom path to the Application Caches files. The client * must ensure it exists before this call. - * @param appCachePath String path to the directory containing Application - * Caches files. The appCache path can be the empty string but should not - * be null. Passing null for this parameter will result in a no-op. + * + * @param appCachePath a String path to the directory containing + * Application Caches files. The appCache path can be + * the empty string but should not be null. Passing + * null for this parameter will result in a no-op. */ public synchronized void setAppCachePath(String appCachePath) { throw new MustOverrideException(); } /** - * Set the maximum size for the Application Caches content. - * @param appCacheMaxSize the maximum size in bytes. + * Sets the maximum size for the Application Caches content. + * + * @param appCacheMaxSize the maximum size in bytes */ public synchronized void setAppCacheMaxSize(long appCacheMaxSize) { throw new MustOverrideException(); } /** - * Set whether the database storage API is enabled. - * @param flag boolean True if the WebView should use the database storage - * API. + * Sets whether the database storage API is enabled. + * + * @param flag true if the WebView should use the database storage API */ public synchronized void setDatabaseEnabled(boolean flag) { throw new MustOverrideException(); } /** - * Set whether the DOM storage API is enabled. - * @param flag boolean True if the WebView should use the DOM storage - * API. + * Sets whether the DOM storage API is enabled. + * + * @param flag true if the WebView should use the DOM storage API */ public synchronized void setDomStorageEnabled(boolean flag) { throw new MustOverrideException(); } /** - * Returns true if the DOM Storage API's are enabled. - * @return True if the DOM Storage API's are enabled. + * Gets whether the DOM Storage APIs are enabled. + * + * @return true if the DOM Storage APIs are enabled */ public synchronized boolean getDomStorageEnabled() { throw new MustOverrideException(); } /** - * Return the path to where database storage API databases are saved for + * Gets the path to where database storage API databases are saved for * the current WebView. - * @return the String path to the database storage API databases. + * + * @return the String path to the database storage API databases */ public synchronized String getDatabasePath() { throw new MustOverrideException(); } /** - * Returns true if database storage API is enabled. - * @return True if the database storage API is enabled. + * Gets whether the database storage API is enabled. + * + * @return true if the database storage API is enabled */ public synchronized boolean getDatabaseEnabled() { throw new MustOverrideException(); @@ -913,43 +1022,48 @@ public abstract class WebSettings { /** * Sets whether Geolocation is enabled. - * @param flag Whether Geolocation should be enabled. + * + * @param flag whether Geolocation should be enabled */ public synchronized void setGeolocationEnabled(boolean flag) { throw new MustOverrideException(); } /** - * Return true if javascript is enabled. <b>Note: The default is false.</b> - * @return True if javascript is enabled. + * Gets whether JavaScript is enabled. + * + * @return true if JavaScript is enabled + * @see #setJavaScriptEnabled */ public synchronized boolean getJavaScriptEnabled() { throw new MustOverrideException(); } /** - * Return true if scripting access {see @setAllowUniversalAccessFromFileURLs} from - * file URLs to any origin is enabled. The default value is false for API level - * {@link android.os.Build.VERSION_CODES#JELLY_BEAN} and higher and true otherwise. + * Gets whether JavaScript running in the context of a file scheme URL can + * access content from any origin. This includes access to content from + * other file scheme URLs. * - * @return True if the WebView allows scripting access from file scheme requests - * to any origin + * @return whether JavaScript running in the context of a file scheme URL + * can access content from any origin + * @see #setAllowUniversalAccessFromFileURLs */ public abstract boolean getAllowUniversalAccessFromFileURLs(); /** - * Return true if scripting access {see @setAllowFileAccessFromFileURLs} from file - * URLs to file origin is enabled. The default value is false for API level - * {@link android.os.Build.VERSION_CODES#JELLY_BEAN} and higher, and true otherwise. + * Gets whether JavaScript running in the context of a file scheme URL can + * access content from other file scheme URLs. * - * @return True if the WebView allows scripting access from file scheme requests - * to file origin + * @return whether JavaScript running in the context of a file scheme URL + * can access content from other file scheme URLs + * @see #setAllowFileAccessFromFileURLs */ public abstract boolean getAllowFileAccessFromFileURLs(); /** - * Return true if plugins are enabled. - * @return True if plugins are enabled. + * Gets whether plugins are enabled. + * + * @return true if plugins are enabled * @deprecated This method has been replaced by {@link #getPluginState} */ @Deprecated @@ -958,17 +1072,19 @@ public abstract class WebSettings { } /** - * Return the current plugin state. - * @return A value corresponding to the enum PluginState. + * Gets the current plugin state. + * + * @return a value corresponding to the enum PluginState */ public synchronized PluginState getPluginState() { throw new MustOverrideException(); } /** - * Returns the directory that contains the plugin libraries. This method is + * Gets the directory that contains the plugin libraries. This method is * obsolete since each plugin is now loaded from its own package. - * @return An empty string. + * + * @return an empty string * @deprecated This method is no longer used as plugins are loaded from * their own APK via the system's package manager. */ @@ -979,41 +1095,47 @@ public abstract class WebSettings { } /** - * Tell javascript to open windows automatically. This applies to the - * javascript function window.open(). - * @param flag True if javascript can open windows automatically. + * Tells JavaScript to open windows automatically. This applies to the + * JavaScript function window.open(). The default is false. + * + * @param flag true if JavaScript can open windows automatically */ public synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag) { throw new MustOverrideException(); } /** - * Return true if javascript can open windows automatically. The default - * is false. - * @return True if javascript can open windows automatically during - * window.open(). + * Gets whether JavaScript can open windows automatically. + * + * @return true if JavaScript can open windows automatically during + * window.open() + * @see #setJavaScriptCanOpenWindowsAutomatically */ public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() { throw new MustOverrideException(); } /** - * Set the default text encoding name to use when decoding html pages. - * @param encoding The text encoding name. + * Sets the default text encoding name to use when decoding html pages. + * The default is "Latin-1". + * + * @param encoding the text encoding name */ public synchronized void setDefaultTextEncodingName(String encoding) { throw new MustOverrideException(); } /** - * Get the default text encoding name. The default is "Latin-1". - * @return The default text encoding name as a string. + * Gets the default text encoding name. + * + * @return the default text encoding name as a string + * @see #setDefaultTextEncodingName */ public synchronized String getDefaultTextEncodingName() { throw new MustOverrideException(); } /** - * Set the WebView's user-agent string. If the string "ua" is null or empty, + * Sets the WebView's user-agent string. If the string "ua" is null or empty, * it will use the system default user-agent string. */ public synchronized void setUserAgentString(String ua) { @@ -1021,46 +1143,47 @@ public abstract class WebSettings { } /** - * Return the WebView's user-agent string. + * Gets the WebView's user-agent string. */ public synchronized String getUserAgentString() { throw new MustOverrideException(); } /** - * Tell the WebView whether it needs to set a node to have focus when + * Tells the WebView whether it needs to set a node to have focus when * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. * - * @param flag + * @param flag whether the WebView needs to set a node */ public void setNeedInitialFocus(boolean flag) { throw new MustOverrideException(); } /** - * Set the priority of the Render thread. Unlike the other settings, this + * Sets the priority of the Render thread. Unlike the other settings, this * one only needs to be called once per process. The default is NORMAL. * - * @param priority RenderPriority, can be normal, high or low. + * @param priority a RenderPriority */ public synchronized void setRenderPriority(RenderPriority priority) { throw new MustOverrideException(); } /** - * Override the way the cache is used. The way the cache is used is based + * Overrides the way the cache is used. The way the cache is used is based * on the navigation option. For a normal page load, the cache is checked * and content is re-validated as needed. When navigating back, content is * not revalidated, instead the content is just pulled from the cache. * This function allows the client to override this behavior. - * @param mode One of the LOAD_ values. + * + * @param mode one of the LOAD_ values */ public void setCacheMode(int mode) { throw new MustOverrideException(); } /** - * Return the current setting for overriding the cache mode. For a full + * Gets the current setting for overriding the cache mode. For a full * description, see the {@link #setCacheMode(int)} function. */ public int getCacheMode() { diff --git a/core/java/android/webkit/WebStorage.java b/core/java/android/webkit/WebStorage.java index c46d16122bfd..76674f42194b 100644 --- a/core/java/android/webkit/WebStorage.java +++ b/core/java/android/webkit/WebStorage.java @@ -44,8 +44,9 @@ public class WebStorage { // otherwise the WebCore thread will remain asleep. public interface QuotaUpdater { /** - * Provide a new quota, specified in bytes. - * @param newQuota The new quota, in bytes + * Provides a new quota, specified in bytes. + * + * @param newQuota the new quota, in bytes */ public void updateQuota(long newQuota); }; @@ -79,8 +80,9 @@ public class WebStorage { } /** - * Get the string representation of this origin. - * @return The string representation of this origin + * Gets the string representation of this origin. + * + * @return the string representation of this origin */ // An origin string is created using WebCore::SecurityOrigin::toString(). // Note that WebCore::SecurityOrigin uses 0 (which is not printed) for @@ -92,19 +94,21 @@ public class WebStorage { } /** - * Get the quota for this origin, for the Web SQL Database API, in + * Gets the quota for this origin, for the Web SQL Database API, in * bytes. If this origin does not use the Web SQL Database API, this * quota will be set to zero. - * @return The quota, in bytes. + * + * @return the quota, in bytes */ public long getQuota() { return mQuota; } /** - * Get the total amount of storage currently being used by this origin, + * Gets the total amount of storage currently being used by this origin, * for all JavaScript storage APIs, in bytes. - * @return The total amount of storage, in bytes. + * + * @return the total amount of storage, in bytes */ public long getUsage() { return mUsage; @@ -124,7 +128,7 @@ public class WebStorage { */ /** - * Get the origins currently using either the Application Cache or Web SQL + * Gets the origins currently using either the Application Cache or Web SQL * Database APIs. This method operates asynchronously, with the result * being provided via a {@link ValueCallback}. The origins are provided as * a map, of type {@code Map<String, WebStorage.Origin>}, from the string @@ -135,7 +139,7 @@ public class WebStorage { } /** - * Get the amount of storage currently being used by both the Application + * Gets the amount of storage currently being used by both the Application * Cache and Web SQL Database APIs by the given origin. The amount is given * in bytes and the origin is specified using its string representation. * This method operates asynchronously, with the result being provided via @@ -146,7 +150,7 @@ public class WebStorage { } /** - * Get the storage quota for the Web SQL Database API for the given origin. + * Gets the storage quota for the Web SQL Database API for the given origin. * The quota is given in bytes and the origin is specified using its string * representation. This method operates asynchronously, with the result * being provided via a {@link ValueCallback}. Note that a quota is not @@ -157,7 +161,7 @@ public class WebStorage { } /** - * Set the storage quota for the Web SQL Database API for the given origin. + * Sets the storage quota for the Web SQL Database API for the given origin. * The quota is specified in bytes and the origin is specified using its string * representation. Note that a quota is not enforced on a per-origin basis * for the Application Cache API. @@ -167,7 +171,7 @@ public class WebStorage { } /** - * Clear the storage currently being used by both the Application Cache and + * Clears the storage currently being used by both the Application Cache and * Web SQL Database APIs by the given origin. The origin is specified using * its string representation. */ @@ -176,7 +180,7 @@ public class WebStorage { } /** - * Clear all storage currently being used by the JavaScript storage APIs. + * Clears all storage currently being used by the JavaScript storage APIs. * This includes the Application Cache, Web SQL Database and the HTML5 Web * Storage APIs. */ @@ -185,8 +189,9 @@ public class WebStorage { } /** - * Get the singleton instance of this class. - * @return The singleton {@link WebStorage} instance. + * Gets the singleton instance of this class. + * + * @return the singleton {@link WebStorage} instance */ public static WebStorage getInstance() { return WebViewFactory.getProvider().getWebStorage(); diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 74605e2d2a94..ba5a417529d1 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -274,16 +274,18 @@ public class WebView extends AbsoluteLayout private WebView mWebview; /** - * Set the WebView to the transportation object. - * @param webview The WebView to transport. + * Sets the WebView to the transportation object. + * + * @param webview the WebView to transport */ public synchronized void setWebView(WebView webview) { mWebview = webview; } /** - * Return the WebView object. - * @return WebView The transported WebView object. + * Gets the WebView object. + * + * @return the transported WebView object */ public synchronized WebView getWebView() { return mWebview; @@ -291,15 +293,15 @@ public class WebView extends AbsoluteLayout } /** - * URI scheme for telephone number + * URI scheme for telephone number. */ public static final String SCHEME_TEL = "tel:"; /** - * URI scheme for email address + * URI scheme for email address. */ public static final String SCHEME_MAILTO = "mailto:"; /** - * URI scheme for map address + * URI scheme for map address. */ public static final String SCHEME_GEO = "geo:0,0?q="; @@ -308,13 +310,15 @@ public class WebView extends AbsoluteLayout */ public interface FindListener { /** - * Notify the listener about progress made by a find operation. + * Notifies the listener about progress made by a find operation. * - * @param numberOfMatches How many matches have been found. - * @param activeMatchOrdinal The zero-based ordinal of the currently selected match. - * @param isDoneCounting Whether the find operation has actually completed. The listener - * may be notified multiple times while the operation is underway, and the numberOfMatches - * value should not be considered final unless isDoneCounting is true. + * @param numberOfMatches how many matches have been found + * @param activeMatchOrdinal the zero-based ordinal of the currently selected match + * @param isDoneCounting whether the find operation has actually completed. The listener + * may be notified multiple times while the + * operation is underway, and the numberOfMatches + * value should not be considered final unless + * isDoneCounting is true. */ public void onFindResultReceived(int numberOfMatches, int activeMatchOrdinal, boolean isDoneCounting); @@ -322,19 +326,22 @@ public class WebView extends AbsoluteLayout /** * Interface to listen for new pictures as they change. + * * @deprecated This interface is now obsolete. */ @Deprecated public interface PictureListener { /** - * Notify the listener that the picture has changed. - * @param view The WebView that owns the picture. - * @param picture The new picture. + * Notifies the listener that the picture has changed. + * + * @param view the WebView that owns the picture + * @param picture the new picture * @deprecated Due to internal changes, the picture does not include - * composited layers such as fixed position elements or scrollable divs. - * While the PictureListener API can still be used to detect changes in - * the WebView content, you are advised against its usage until a replacement - * is provided in a future Android release + * composited layers such as fixed position elements or + * scrollable divs. While the PictureListener API can still + * be used to detect changes in the WebView content, you + * are advised against its usage until a replacement is + * provided in a future Android release. */ @Deprecated public void onNewPicture(WebView view, Picture picture); @@ -342,7 +349,7 @@ public class WebView extends AbsoluteLayout public static class HitTestResult { /** - * Default HitTestResult, where the target is unknown + * Default HitTestResult, where the target is unknown. */ public static final int UNKNOWN_TYPE = 0; /** @@ -351,19 +358,19 @@ public class WebView extends AbsoluteLayout @Deprecated public static final int ANCHOR_TYPE = 1; /** - * HitTestResult for hitting a phone number + * HitTestResult for hitting a phone number. */ public static final int PHONE_TYPE = 2; /** - * HitTestResult for hitting a map address + * HitTestResult for hitting a map address. */ public static final int GEO_TYPE = 3; /** - * HitTestResult for hitting an email address + * HitTestResult for hitting an email address. */ public static final int EMAIL_TYPE = 4; /** - * HitTestResult for hitting an HTML::img tag + * HitTestResult for hitting an HTML::img tag. */ public static final int IMAGE_TYPE = 5; /** @@ -372,15 +379,15 @@ public class WebView extends AbsoluteLayout @Deprecated public static final int IMAGE_ANCHOR_TYPE = 6; /** - * HitTestResult for hitting a HTML::a tag with src=http + * HitTestResult for hitting a HTML::a tag with src=http. */ public static final int SRC_ANCHOR_TYPE = 7; /** - * HitTestResult for hitting a HTML::a tag with src=http + HTML::img + * HitTestResult for hitting a HTML::a tag with src=http + HTML::img. */ public static final int SRC_IMAGE_ANCHOR_TYPE = 8; /** - * HitTestResult for hitting an edit text area + * HitTestResult for hitting an edit text area. */ public static final int EDIT_TEXT_TYPE = 9; @@ -409,17 +416,21 @@ public class WebView extends AbsoluteLayout } /** - * Gets the type of the hit test result. - * @return See the XXX_TYPE constants defined in this class. + * Gets the type of the hit test result. See the XXX_TYPE constants + * defined in this class. + * + * @return the type of the hit test result */ public int getType() { return mType; } /** - * Gets additional type-dependant information about the result, see - * {@link WebView#getHitTestResult()} for details. - * @return may either be null or contain extra information about this result. + * Gets additional type-dependant information about the result. See + * {@link WebView#getHitTestResult()} for details. May either be null + * or contain extra information about this result. + * + * @return additional type-dependant information about the result */ public String getExtra() { return mExtra; @@ -427,38 +438,43 @@ public class WebView extends AbsoluteLayout } /** - * Construct a new WebView with a Context object. - * @param context A Context object used to access application assets. + * Constructs a new WebView with a Context object. + * + * @param context a Context object used to access application assets */ public WebView(Context context) { this(context, null); } /** - * Construct a new WebView with layout parameters. - * @param context A Context object used to access application assets. - * @param attrs An AttributeSet passed to our parent. + * Constructs a new WebView with layout parameters. + * + * @param context a Context object used to access application assets + * @param attrs an AttributeSet passed to our parent */ public WebView(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.webViewStyle); } /** - * Construct a new WebView with layout parameters and a default style. - * @param context A Context object used to access application assets. - * @param attrs An AttributeSet passed to our parent. - * @param defStyle The default style resource ID. + * Constructs a new WebView with layout parameters and a default style. + * + * @param context a Context object used to access application assets + * @param attrs an AttributeSet passed to our parent + * @param defStyle the default style resource ID */ public WebView(Context context, AttributeSet attrs, int defStyle) { this(context, attrs, defStyle, false); } /** - * Construct a new WebView with layout parameters and a default style. - * @param context A Context object used to access application assets. - * @param attrs An AttributeSet passed to our parent. - * @param defStyle The default style resource ID. - * @param privateBrowsing If true the web view will be initialized in private mode. + * Constructs a new WebView with layout parameters and a default style. + * + * @param context a Context object used to access application assets + * @param attrs an AttributeSet passed to our parent + * @param defStyle the default style resource ID + * @param privateBrowsing whether this WebView will be initialized in + * private mode */ public WebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { @@ -466,18 +482,21 @@ public class WebView extends AbsoluteLayout } /** - * Construct a new WebView with layout parameters, a default style and a set - * of custom Javscript interfaces to be added to the WebView at initialization + * Constructs a new WebView with layout parameters, a default style and a set + * of custom Javscript interfaces to be added to this WebView at initialization * time. This guarantees that these interfaces will be available when the JS * context is initialized. - * @param context A Context object used to access application assets. - * @param attrs An AttributeSet passed to our parent. - * @param defStyle The default style resource ID. - * @param javaScriptInterfaces is a Map of interface names, as keys, and - * object implementing those interfaces, as values. - * @param privateBrowsing If true the web view will be initialized in private mode. + * + * @param context a Context object used to access application assets + * @param attrs an AttributeSet passed to our parent + * @param defStyle the default style resource ID + * @param javaScriptInterfaces a Map of interface names, as keys, and + * object implementing those interfaces, as + * values + * @param privateBrowsing whether this WebView will be initialized in + * private mode * @hide This is used internally by dumprendertree, as it requires the javaScript interfaces to - * be added synchronously, before a subsequent loadUrl call takes effect. + * be added synchronously, before a subsequent loadUrl call takes effect. */ @SuppressWarnings("deprecation") // for super() call into deprecated base class constructor. protected WebView(Context context, AttributeSet attrs, int defStyle, @@ -493,8 +512,9 @@ public class WebView extends AbsoluteLayout } /** - * Specify whether the horizontal scrollbar has overlay style. - * @param overlay TRUE if horizontal scrollbar should have overlay style. + * Specifies whether the horizontal scrollbar has overlay style. + * + * @param overlay true if horizontal scrollbar should have overlay style */ public void setHorizontalScrollbarOverlay(boolean overlay) { checkThread(); @@ -502,8 +522,9 @@ public class WebView extends AbsoluteLayout } /** - * Specify whether the vertical scrollbar has overlay style. - * @param overlay TRUE if vertical scrollbar should have overlay style. + * Specifies whether the vertical scrollbar has overlay style. + * + * @param overlay true if vertical scrollbar should have overlay style */ public void setVerticalScrollbarOverlay(boolean overlay) { checkThread(); @@ -511,8 +532,9 @@ public class WebView extends AbsoluteLayout } /** - * Return whether horizontal scrollbar has overlay style - * @return TRUE if horizontal scrollbar has overlay style. + * Gets whether horizontal scrollbar has overlay style. + * + * @return true if horizontal scrollbar has overlay style */ public boolean overlayHorizontalScrollbar() { checkThread(); @@ -520,8 +542,9 @@ public class WebView extends AbsoluteLayout } /** - * Return whether vertical scrollbar has overlay style - * @return TRUE if vertical scrollbar has overlay style. + * Gets whether vertical scrollbar has overlay style. + * + * @return true if vertical scrollbar has overlay style */ public boolean overlayVerticalScrollbar() { checkThread(); @@ -529,7 +552,7 @@ public class WebView extends AbsoluteLayout } /** - * Return the visible height (in pixels) of the embedded title bar (if any). + * Gets the visible height (in pixels) of the embedded title bar (if any). * * @deprecated This method is now obsolete. */ @@ -539,8 +562,10 @@ public class WebView extends AbsoluteLayout } /** - * @return The SSL certificate for the main top-level page or null if - * there is no certificate (the site is not secure). + * Gets the SSL certificate for the main top-level page or null if there is + * no certificate (the site is not secure). + * + * @return the SSL certificate for the main top-level page */ public SslCertificate getCertificate() { checkThread(); @@ -560,11 +585,12 @@ public class WebView extends AbsoluteLayout //------------------------------------------------------------------------- /** - * Save the username and password for a particular host in the WebView's + * Saves the username and password for a particular host in this WebView's * internal database. - * @param host The host that required the credentials. - * @param username The username for the given host. - * @param password The password for the given host. + * + * @param host the host that required the credentials + * @param username the username for the given host + * @param password the password for the given host */ public void savePassword(String host, String username, String password) { checkThread(); @@ -572,13 +598,13 @@ public class WebView extends AbsoluteLayout } /** - * Set the HTTP authentication credentials for a given host and realm. + * Sets the HTTP authentication credentials for a given host and realm. * - * @param host The host for the credentials. - * @param realm The realm for the credentials. - * @param username The username for the password. If it is null, it means + * @param host the host for the credentials + * @param realm the realm for the credentials + * @param username the username for the password. If it is null, it means * password can't be saved. - * @param password The password + * @param password the password */ public void setHttpAuthUsernamePassword(String host, String realm, String username, String password) { @@ -587,12 +613,12 @@ public class WebView extends AbsoluteLayout } /** - * Retrieve the HTTP authentication username and password for a given - * host & realm pair + * Retrieves the HTTP authentication username and password for a given + * host and realm pair * - * @param host The host for which the credentials apply. - * @param realm The realm for which the credentials apply. - * @return String[] if found, String[0] is username, which can be null and + * @param host the host for which the credentials apply + * @param realm the realm for which the credentials apply + * @return String[] if found. String[0] is username, which can be null and * String[1] is password. Return null if it can't find anything. */ public String[] getHttpAuthUsernamePassword(String host, String realm) { @@ -601,9 +627,9 @@ public class WebView extends AbsoluteLayout } /** - * Destroy the internal state of the WebView. This method should be called - * after the WebView has been removed from the view system. No other - * methods may be called on a WebView after destroy. + * Destroys the internal state of this WebView. This method should be called + * after this WebView has been removed from the view system. No other + * methods may be called on this WebView after destroy. */ public void destroy() { checkThread(); @@ -635,10 +661,11 @@ public class WebView extends AbsoluteLayout } /** - * Inform WebView of the network state. This is used to set + * Informs WebView of the network state. This is used to set * the JavaScript property window.navigator.isOnline and * generates the online/offline event as specified in HTML5, sec. 5.7.7 - * @param networkUp boolean indicating if network is available + * + * @param networkUp a boolean indicating if network is available */ public void setNetworkAvailable(boolean networkUp) { checkThread(); @@ -646,14 +673,15 @@ public class WebView extends AbsoluteLayout } /** - * Save the state of this WebView used in + * Saves the state of this WebView used in * {@link android.app.Activity#onSaveInstanceState}. Please note that this * method no longer stores the display data for this WebView. The previous * behavior could potentially leak files if {@link #restoreState} was never * called. See {@link #savePicture} and {@link #restorePicture} for saving * and restoring the display data. - * @param outState The Bundle to store the WebView state. - * @return The same copy of the back/forward list used to save the state. If + * + * @param outState the Bundle to store this WebView's state + * @return the same copy of the back/forward list used to save the state. If * saveState fails, the returned list will be null. * @see #savePicture * @see #restorePicture @@ -664,12 +692,12 @@ public class WebView extends AbsoluteLayout } /** - * Save the current display data to the Bundle given. Used in conjunction + * Saves the current display data to the Bundle given. Used in conjunction * with {@link #saveState}. - * @param b A Bundle to store the display data. - * @param dest The file to store the serialized picture data. Will be + * @param b a Bundle to store the display data + * @param dest the file to store the serialized picture data. Will be * overwritten with this WebView's picture data. - * @return True if the picture was successfully saved. + * @return true if the picture was successfully saved * @deprecated This method is now obsolete. */ @Deprecated @@ -679,13 +707,13 @@ public class WebView extends AbsoluteLayout } /** - * Restore the display data that was save in {@link #savePicture}. Used in - * conjunction with {@link #restoreState}. + * Restores the display data that was saved in {@link #savePicture}. Used in + * conjunction with {@link #restoreState}. Note that this will not work if + * this WebView is hardware accelerated. * - * Note that this will not work if the WebView is hardware accelerated. - * @param b A Bundle containing the saved display data. - * @param src The file where the picture data was stored. - * @return True if the picture was successfully restored. + * @param b a Bundle containing the saved display data + * @param src the file where the picture data was stored + * @return true if the picture was successfully restored * @deprecated This method is now obsolete. */ @Deprecated @@ -695,16 +723,17 @@ public class WebView extends AbsoluteLayout } /** - * Restore the state of this WebView from the given map used in + * Restores the state of this WebView from the given map used in * {@link android.app.Activity#onRestoreInstanceState}. This method should - * be called to restore the state of the WebView before using the object. If - * it is called after the WebView has had a chance to build state (load + * be called to restore the state of this WebView before using the object. If + * it is called after this WebView has had a chance to build state (load * pages, create a back/forward list, etc.) there may be undesirable * side-effects. Please note that this method no longer restores the * display data for this WebView. See {@link #savePicture} and {@link * #restorePicture} for saving and restoring the display data. - * @param inState The incoming Bundle of state. - * @return The restored back/forward list or null if restoreState failed. + * + * @param inState the incoming Bundle of state + * @return the restored back/forward list or null if restoreState failed * @see #savePicture * @see #restorePicture */ @@ -714,14 +743,15 @@ public class WebView extends AbsoluteLayout } /** - * Load the given URL with the specified additional HTTP headers. - * @param url The URL of the resource to load. - * @param additionalHttpHeaders The additional headers to be used in the + * Loads the given URL with the specified additional HTTP headers. + * + * @param url the URL of the resource to load + * @param additionalHttpHeaders the additional headers to be used in the * HTTP request for this URL, specified as a map from name to * value. Note that if this map contains any of the headers - * that are set by default by the WebView, such as those + * that are set by default by this WebView, such as those * controlling caching, accept types or the User-Agent, their - * values may be overriden by the WebView's defaults. + * values may be overriden by this WebView's defaults. */ public void loadUrl(String url, Map<String, String> additionalHttpHeaders) { checkThread(); @@ -729,8 +759,9 @@ public class WebView extends AbsoluteLayout } /** - * Load the given URL. - * @param url The URL of the resource to load. + * Loads the given URL. + * + * @param url the URL of the resource to load */ public void loadUrl(String url) { checkThread(); @@ -738,12 +769,12 @@ public class WebView extends AbsoluteLayout } /** - * Load the url with postData using "POST" method into the WebView. If url - * is not a network url, it will be loaded with {link + * Loads the URL with postData using "POST" method into this WebView. If url + * is not a network URL, it will be loaded with {link * {@link #loadUrl(String)} instead. * - * @param url The url of the resource to load. - * @param postData The data will be passed to "POST" request. + * @param url the URL of the resource to load + * @param postData the data will be passed to "POST" request */ public void postUrl(String url, byte[] postData) { checkThread(); @@ -751,7 +782,7 @@ public class WebView extends AbsoluteLayout } /** - * Load the given data into the WebView using a 'data' scheme URL. + * Loads the given data into this WebView using a 'data' scheme URL. * <p> * Note that JavaScript's same origin policy means that script running in a * page loaded using this method will be unable to access content loaded @@ -772,9 +803,10 @@ public class WebView extends AbsoluteLayout * mediatype portion of the URL and call {@link #loadUrl(String)} instead. * Note that the charset obtained from the mediatype portion of a data URL * always overrides that specified in the HTML or XML document itself. - * @param data A String of data in the given encoding. - * @param mimeType The MIME type of the data, e.g. 'text/html'. - * @param encoding The encoding of the data. + * + * @param data a String of data in the given encoding + * @param mimeType the MIME type of the data, e.g. 'text/html' + * @param encoding the encoding of the data */ public void loadData(String data, String mimeType, String encoding) { checkThread(); @@ -782,7 +814,7 @@ public class WebView extends AbsoluteLayout } /** - * Load the given data into the WebView, using baseUrl as the base URL for + * Loads the given data into this WebView, using baseUrl as the base URL for * the content. The base URL is used both to resolve relative URLs and when * applying JavaScript's same origin policy. The historyUrl is used for the * history entry. @@ -794,14 +826,15 @@ public class WebView extends AbsoluteLayout * If the base URL uses the data scheme, this method is equivalent to * calling {@link #loadData(String,String,String) loadData()} and the * historyUrl is ignored. - * @param baseUrl URL to use as the page's base URL. If null defaults to - * 'about:blank' - * @param data A String of data in the given encoding. - * @param mimeType The MIMEType of the data, e.g. 'text/html'. If null, - * defaults to 'text/html'. - * @param encoding The encoding of the data. - * @param historyUrl URL to use as the history entry, if null defaults to - * 'about:blank'. + * + * @param baseUrl the URL to use as the page's base URL. If null defaults to + * 'about:blank'. + * @param data a String of data in the given encoding + * @param mimeType the MIMEType of the data, e.g. 'text/html'. If null, + * defaults to 'text/html'. + * @param encoding the encoding of the data + * @param historyUrl the URL to use as the history entry. If null defaults + * to 'about:blank'. */ public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) { @@ -812,7 +845,7 @@ public class WebView extends AbsoluteLayout /** * Saves the current view as a web archive. * - * @param filename The filename where the archive should be placed. + * @param filename the filename where the archive should be placed */ public void saveWebArchive(String filename) { checkThread(); @@ -822,11 +855,11 @@ public class WebView extends AbsoluteLayout /** * Saves the current view as a web archive. * - * @param basename The filename where the archive should be placed. - * @param autoname If false, takes basename to be a file. If true, basename + * @param basename the filename where the archive should be placed + * @param autoname if false, takes basename to be a file. If true, basename * is assumed to be a directory in which a filename will be - * chosen according to the url of the current page. - * @param callback Called after the web archive has been saved. The + * chosen according to the URL of the current page. + * @param callback called after the web archive has been saved. The * parameter for onReceiveValue will either be the filename * under which the file was saved, or null if saving the * file failed. @@ -837,7 +870,7 @@ public class WebView extends AbsoluteLayout } /** - * Stop the current load. + * Stops the current load. */ public void stopLoading() { checkThread(); @@ -845,7 +878,7 @@ public class WebView extends AbsoluteLayout } /** - * Reload the current url. + * Reloads the current URL. */ public void reload() { checkThread(); @@ -853,8 +886,9 @@ public class WebView extends AbsoluteLayout } /** - * Return true if this WebView has a back history item. - * @return True iff this WebView has a back history item. + * Gets whether this WebView has a back history item. + * + * @return true iff this WebView has a back history item */ public boolean canGoBack() { checkThread(); @@ -862,7 +896,7 @@ public class WebView extends AbsoluteLayout } /** - * Go back in the history of this WebView. + * Goes back in the history of this WebView. */ public void goBack() { checkThread(); @@ -870,8 +904,9 @@ public class WebView extends AbsoluteLayout } /** - * Return true if this WebView has a forward history item. - * @return True iff this Webview has a forward history item. + * Gets whether this WebView has a forward history item. + * + * @return true iff this Webview has a forward history item */ public boolean canGoForward() { checkThread(); @@ -879,7 +914,7 @@ public class WebView extends AbsoluteLayout } /** - * Go forward in the history of this WebView. + * Goes forward in the history of this WebView. */ public void goForward() { checkThread(); @@ -887,10 +922,11 @@ public class WebView extends AbsoluteLayout } /** - * Return true if the page can go back or forward the given + * Gets whether the page can go back or forward the given * number of steps. - * @param steps The negative or positive number of steps to move the - * history. + * + * @param steps the negative or positive number of steps to move the + * history */ public boolean canGoBackOrForward(int steps) { checkThread(); @@ -898,11 +934,12 @@ public class WebView extends AbsoluteLayout } /** - * Go to the history item that is the number of steps away from + * Goes to the history item that is the number of steps away from * the current item. Steps is negative if backward and positive * if forward. - * @param steps The number of steps to take back or forward in the back - * forward list. + * + * @param steps the number of steps to take back or forward in the back + * forward list */ public void goBackOrForward(int steps) { checkThread(); @@ -910,7 +947,7 @@ public class WebView extends AbsoluteLayout } /** - * Returns true if private browsing is enabled in this WebView. + * Gets whether private browsing is enabled in this WebView. */ public boolean isPrivateBrowsingEnabled() { checkThread(); @@ -918,7 +955,8 @@ public class WebView extends AbsoluteLayout } /** - * Scroll the contents of the view up by half the view size + * Scrolls the contents of this WebView up by half the view size. + * * @param top true to jump to the top of the page * @return true if the page was scrolled */ @@ -928,7 +966,8 @@ public class WebView extends AbsoluteLayout } /** - * Scroll the contents of the view down by half the page size + * Scrolls the contents of this WebView down by half the page size. + * * @param bottom true to jump to bottom of page * @return true if the page was scrolled */ @@ -938,8 +977,8 @@ public class WebView extends AbsoluteLayout } /** - * Clear the view so that onDraw() will draw nothing but white background, - * and onMeasure() will return 0 if MeasureSpec is not MeasureSpec.EXACTLY + * Clears this WebView so that onDraw() will draw nothing but white background, + * and onMeasure() will return 0 if MeasureSpec is not MeasureSpec.EXACTLY. */ public void clearView() { checkThread(); @@ -947,13 +986,13 @@ public class WebView extends AbsoluteLayout } /** - * Return a new picture that captures the current display of the webview. - * This is a copy of the display, and will be unaffected if the webview + * Gets a new picture that captures the current display of this WebView. + * This is a copy of the display, and will be unaffected if this WebView * later loads a different URL. * - * @return a picture containing the current contents of the view. Note this - * picture is of the entire document, and is not restricted to the - * bounds of the view. + * @return a picture containing the current contents of this WebView. Note + * this picture is of the entire document, and is not restricted to + * the bounds of the view. */ public Picture capturePicture() { checkThread(); @@ -961,8 +1000,9 @@ public class WebView extends AbsoluteLayout } /** - * Return the current scale of the WebView - * @return The current scale. + * Gets the current scale of this WebView. + * + * @return the current scale */ public float getScale() { checkThread(); @@ -970,14 +1010,14 @@ public class WebView extends AbsoluteLayout } /** - * Set the initial scale for the WebView. 0 means default. If + * Sets the initial scale for this WebView. 0 means default. If * {@link WebSettings#getUseWideViewPort()} is true, it zooms out all the * way. Otherwise it starts with 100%. If initial scale is greater than 0, * WebView starts with this value as initial scale. * Please note that unlike the scale properties in the viewport meta tag, * this method doesn't take the screen density into account. * - * @param scaleInPercent The initial scale in percent. + * @param scaleInPercent the initial scale in percent */ public void setInitialScale(int scaleInPercent) { checkThread(); @@ -985,7 +1025,7 @@ public class WebView extends AbsoluteLayout } /** - * Invoke the graphical zoom picker widget for this WebView. This will + * Invokes the graphical zoom picker widget for this WebView. This will * result in the zoom widget appearing on the screen to control the zoom * level of this WebView. */ @@ -995,15 +1035,15 @@ public class WebView extends AbsoluteLayout } /** - * Return a HitTestResult based on the current cursor node. If a HTML::a tag - * is found and the anchor has a non-JavaScript url, the HitTestResult type - * is set to SRC_ANCHOR_TYPE and the url is set in the "extra" field. If the - * anchor does not have a url or if it is a JavaScript url, the type will - * be UNKNOWN_TYPE and the url has to be retrieved through + * Gets a HitTestResult based on the current cursor node. If a HTML::a + * tag is found and the anchor has a non-JavaScript URL, the HitTestResult + * type is set to SRC_ANCHOR_TYPE and the URL is set in the "extra" field. + * If the anchor does not have a URL or if it is a JavaScript URL, the type + * will be UNKNOWN_TYPE and the URL has to be retrieved through * {@link #requestFocusNodeHref} asynchronously. If a HTML::img tag is - * found, the HitTestResult type is set to IMAGE_TYPE and the url is set in + * found, the HitTestResult type is set to IMAGE_TYPE and the URL is set in * the "extra" field. A type of - * SRC_IMAGE_ANCHOR_TYPE indicates an anchor with a url that has an image as + * SRC_IMAGE_ANCHOR_TYPE indicates an anchor with a URL that has an image as * a child node. If a phone number is found, the HitTestResult type is set * to PHONE_TYPE and the phone number is set in the "extra" field of * HitTestResult. If a map address is found, the HitTestResult type is set @@ -1018,18 +1058,17 @@ public class WebView extends AbsoluteLayout } /** - * Request the anchor or image element URL at the last tapped point. + * Requests the anchor or image element URL at the last tapped point. * If hrefMsg is null, this method returns immediately and does not * dispatch hrefMsg to its target. If the tapped point hits an image, * an anchor, or an image in an anchor, the message associates * strings in named keys in its data. The value paired with the key * may be an empty string. * - * @param hrefMsg This message will be dispatched with the result of the - * request. The message data contains three keys: - * - "url" returns the anchor's href attribute. - * - "title" returns the anchor's text. - * - "src" returns the image's src attribute. + * @param hrefMsg the message to be dispatched with the result of the + * request. The message data contains three keys. "url" + * returns the anchor's href attribute. "title" returns the + * anchor's text. "src" returns the image's src attribute. */ public void requestFocusNodeHref(Message hrefMsg) { checkThread(); @@ -1037,10 +1076,10 @@ public class WebView extends AbsoluteLayout } /** - * Request the url of the image last touched by the user. msg will be sent - * to its target with a String representing the url as its object. + * Requests the URL of the image last touched by the user. msg will be sent + * to its target with a String representing the URL as its object. * - * @param msg This message will be dispatched with the result of the request + * @param msg the message to be dispatched with the result of the request * as the data member with "url" as key. The result can be null. */ public void requestImageRef(Message msg) { @@ -1049,10 +1088,11 @@ public class WebView extends AbsoluteLayout } /** - * Get the url for the current page. This is not always the same as the url + * Gets the URL for the current page. This is not always the same as the URL * passed to WebViewClient.onPageStarted because although the load for - * that url has begun, the current page may not have changed. - * @return The url for the current page. + * that URL has begun, the current page may not have changed. + * + * @return the URL for the current page */ public String getUrl() { checkThread(); @@ -1060,12 +1100,13 @@ public class WebView extends AbsoluteLayout } /** - * Get the original url for the current page. This is not always the same - * as the url passed to WebViewClient.onPageStarted because although the - * load for that url has begun, the current page may not have changed. - * Also, there may have been redirects resulting in a different url to that + * Gets the original URL for the current page. This is not always the same + * as the URL passed to WebViewClient.onPageStarted because although the + * load for that URL has begun, the current page may not have changed. + * Also, there may have been redirects resulting in a different URL to that * originally requested. - * @return The url that was originally requested for the current page. + * + * @return the URL that was originally requested for the current page */ public String getOriginalUrl() { checkThread(); @@ -1073,9 +1114,10 @@ public class WebView extends AbsoluteLayout } /** - * Get the title for the current page. This is the title of the current page + * Gets the title for the current page. This is the title of the current page * until WebViewClient.onReceivedTitle is called. - * @return The title for the current page. + * + * @return the title for the current page */ public String getTitle() { checkThread(); @@ -1083,9 +1125,10 @@ public class WebView extends AbsoluteLayout } /** - * Get the favicon for the current page. This is the favicon of the current + * Gets the favicon for the current page. This is the favicon of the current * page until WebViewClient.onReceivedIcon is called. - * @return The favicon for the current page. + * + * @return the favicon for the current page */ public Bitmap getFavicon() { checkThread(); @@ -1093,9 +1136,10 @@ public class WebView extends AbsoluteLayout } /** - * Get the touch icon url for the apple-touch-icon <link> element, or + * Gets the touch icon URL for the apple-touch-icon <link> element, or * a URL on this site's server pointing to the standard location of a * touch icon. + * * @hide */ public String getTouchIconUrl() { @@ -1103,8 +1147,9 @@ public class WebView extends AbsoluteLayout } /** - * Get the progress for the current page. - * @return The progress for the current page between 0 and 100. + * Gets the progress for the current page. + * + * @return the progress for the current page between 0 and 100 */ public int getProgress() { checkThread(); @@ -1112,7 +1157,9 @@ public class WebView extends AbsoluteLayout } /** - * @return the height of the HTML content. + * Gets the height of the HTML content. + * + * @return the height of the HTML content */ public int getContentHeight() { checkThread(); @@ -1120,7 +1167,9 @@ public class WebView extends AbsoluteLayout } /** - * @return the width of the HTML content. + * Gets the width of the HTML content. + * + * @return the width of the HTML content * @hide */ public int getContentWidth() { @@ -1128,8 +1177,8 @@ public class WebView extends AbsoluteLayout } /** - * Pause all layout, parsing, and JavaScript timers for all webviews. This - * is a global requests, not restricted to just this webview. This can be + * Pauses all layout, parsing, and JavaScript timers for all WebViews. This + * is a global requests, not restricted to just this WebView. This can be * useful if the application has been paused. */ public void pauseTimers() { @@ -1138,7 +1187,7 @@ public class WebView extends AbsoluteLayout } /** - * Resume all layout, parsing, and JavaScript timers for all webviews. + * Resumes all layout, parsing, and JavaScript timers for all WebViews. * This will resume dispatching all timers. */ public void resumeTimers() { @@ -1147,11 +1196,10 @@ public class WebView extends AbsoluteLayout } /** - * Call this to pause any extra processing associated with this WebView and - * its associated DOM, plugins, JavaScript etc. For example, if the WebView - * is taken offscreen, this could be called to reduce unnecessary CPU or - * network traffic. When the WebView is again "active", call onResume(). - * + * Pauses any extra processing associated with this WebView and its + * associated DOM, plugins, JavaScript etc. For example, if this WebView is + * taken offscreen, this could be called to reduce unnecessary CPU or + * network traffic. When this WebView is again "active", call onResume(). * Note that this differs from pauseTimers(), which affects all WebViews. */ public void onPause() { @@ -1160,7 +1208,7 @@ public class WebView extends AbsoluteLayout } /** - * Call this to resume a WebView after a previous call to onPause(). + * Resumes a WebView after a previous call to onPause(). */ public void onResume() { checkThread(); @@ -1168,8 +1216,9 @@ public class WebView extends AbsoluteLayout } /** - * Returns true if the view is paused, meaning onPause() was called. Calling - * onResume() sets the paused state back to false. + * Gets whether this WebView is paused, meaning onPause() was called. + * Calling onResume() sets the paused state back to false. + * * @hide */ public boolean isPaused() { @@ -1177,8 +1226,8 @@ public class WebView extends AbsoluteLayout } /** - * Call this to inform the view that memory is low so that it can - * free any available memory. + * Informs this WebView that memory is low so that it can free any available + * memory. */ public void freeMemory() { checkThread(); @@ -1186,10 +1235,10 @@ public class WebView extends AbsoluteLayout } /** - * Clear the resource cache. Note that the cache is per-application, so + * Clears the resource cache. Note that the cache is per-application, so * this will clear the cache for all WebViews used. * - * @param includeDiskFiles If false, only the RAM cache is cleared. + * @param includeDiskFiles if false, only the RAM cache is cleared */ public void clearCache(boolean includeDiskFiles) { checkThread(); @@ -1197,7 +1246,7 @@ public class WebView extends AbsoluteLayout } /** - * Make sure that clearing the form data removes the adapter from the + * Makes sure that clearing the form data removes the adapter from the * currently focused textfield if there is one. */ public void clearFormData() { @@ -1206,7 +1255,7 @@ public class WebView extends AbsoluteLayout } /** - * Tell the WebView to clear its internal back/forward list. + * Tells this WebView to clear its internal back/forward list. */ public void clearHistory() { checkThread(); @@ -1214,8 +1263,8 @@ public class WebView extends AbsoluteLayout } /** - * Clear the SSL preferences table stored in response to proceeding with SSL - * certificate errors. + * Clears the SSL preferences table stored in response to proceeding with + * SSL certificate errors. */ public void clearSslPreferences() { checkThread(); @@ -1223,7 +1272,7 @@ public class WebView extends AbsoluteLayout } /** - * Return the WebBackForwardList for this WebView. This contains the + * Gets the WebBackForwardList for this WebView. This contains the * back/forward list for use in querying each item in the history stack. * This is a copy of the private WebBackForwardList so it contains only a * snapshot of the current state. Multiple calls to this method may return @@ -1237,10 +1286,10 @@ public class WebView extends AbsoluteLayout } /** - * Register the listener to be notified as find-on-page operations progress. - * This will replace the current listener. + * Registers the listener to be notified as find-on-page operations + * progress. This will replace the current listener. * - * @param listener An implementation of {@link FindListener}. + * @param listener an implementation of {@link FindListener} */ public void setFindListener(FindListener listener) { checkThread(); @@ -1248,14 +1297,14 @@ public class WebView extends AbsoluteLayout } /** - * Highlight and scroll to the next match found by {@link #findAll} or + * Highlights and scrolls to the next match found by {@link #findAll} or * {@link #findAllAsync}, wrapping around page boundaries as necessary. * Notifies any registered {@link FindListener}. If neither * {@link #findAll} nor {@link #findAllAsync(String)} has been called yet, * or if {@link #clearMatches} has been called since the last find * operation, this function does nothing. * - * @param forward Direction to search. + * @param forward the direction to search * @see #setFindListener */ public void findNext(boolean forward) { @@ -1264,12 +1313,11 @@ public class WebView extends AbsoluteLayout } /** - * Find all instances of find on the page and highlight them. + * Finds all instances of find on the page and highlights them. * Notifies any registered {@link FindListener}. * - * @param find String to find. - * @return int The number of occurances of the String "find" - * that were found. + * @param find the string to find + * @return the number of occurances of the String "find" that were found * @deprecated {@link #findAllAsync} is preferred. * @see #setFindListener */ @@ -1281,12 +1329,12 @@ public class WebView extends AbsoluteLayout } /** - * Find all instances of find on the page and highlight them, + * Finds all instances of find on the page and highlights them, * asynchronously. Notifies any registered {@link FindListener}. * Successive calls to this or {@link #findAll} will cancel any * pending searches. * - * @param find String to find. + * @param find the string to find. * @see #setFindListener */ public void findAllAsync(String find) { @@ -1295,14 +1343,15 @@ public class WebView extends AbsoluteLayout } /** - * Start an ActionMode for finding text in this WebView. Only works if this - * WebView is attached to the view system. - * @param text If non-null, will be the initial text to search for. + * Starts an ActionMode for finding text in this WebView. Only works if this + * WebView is attached to the view system. + * + * @param text if non-null, will be the initial text to search for. * Otherwise, the last String searched for in this WebView will * be used to start. - * @param showIme If true, show the IME, assuming the user will begin typing. - * If false and text is non-null, perform a find all. - * @return boolean True if the find dialog is shown, false otherwise. + * @param showIme if true, show the IME, assuming the user will begin typing. + * If false and text is non-null, perform a find all. + * @return true if the find dialog is shown, false otherwise */ public boolean showFindDialog(String text, boolean showIme) { checkThread(); @@ -1310,24 +1359,26 @@ public class WebView extends AbsoluteLayout } /** - * Return the first substring consisting of the address of a physical + * Gets the first substring consisting of the address of a physical * location. Currently, only addresses in the United States are detected, * and consist of: - * - a house number - * - a street name - * - a street type (Road, Circle, etc), either spelled out or abbreviated - * - a city name - * - a state or territory, either spelled out or two-letter abbr. - * - an optional 5 digit or 9 digit zip code. - * + * <ul> + * <li>a house number</li> + * <li>a street name</li> + * <li>a street type (Road, Circle, etc), either spelled out or + * abbreviated</li> + * <li>a city name</li> + * <li>a state or territory, either spelled out or two-letter abbr</li> + * <li>an optional 5 digit or 9 digit zip code</li> + * </ul> * All names must be correctly capitalized, and the zip code, if present, * must be valid for the state. The street type must be a standard USPS * spelling or abbreviation. The state or territory must also be spelled * or abbreviated using USPS standards. The house number may not exceed * five digits. - * @param addr The string to search for addresses. * - * @return the address, or if no address is found, return null. + * @param addr the string to search for addresses + * @return the address, or if no address is found, null */ public static String findAddress(String addr) { checkThread(); @@ -1335,7 +1386,7 @@ public class WebView extends AbsoluteLayout } /** - * Clear the highlighting surrounding text matches created by + * Clears the highlighting surrounding text matches created by * {@link #findAll} or {@link #findAllAsync}. */ public void clearMatches() { @@ -1344,10 +1395,11 @@ public class WebView extends AbsoluteLayout } /** - * Query the document to see if it contains any image references. The + * Queries the document to see if it contains any image references. The * message object will be dispatched with arg1 being set to 1 if images * were found and 0 if the document does not reference any images. - * @param response The message that will be dispatched with the result. + * + * @param response the message that will be dispatched with the result */ public void documentHasImages(Message response) { checkThread(); @@ -1355,9 +1407,10 @@ public class WebView extends AbsoluteLayout } /** - * Set the WebViewClient that will receive various notifications and + * Sets the WebViewClient that will receive various notifications and * requests. This will replace the current handler. - * @param client An implementation of WebViewClient. + * + * @param client an implementation of WebViewClient */ public void setWebViewClient(WebViewClient client) { checkThread(); @@ -1365,10 +1418,11 @@ public class WebView extends AbsoluteLayout } /** - * Register the interface to be used when content can not be handled by + * Registers the interface to be used when content can not be handled by * the rendering engine, and should be downloaded instead. This will replace * the current handler. - * @param listener An implementation of DownloadListener. + * + * @param listener an implementation of DownloadListener */ public void setDownloadListener(DownloadListener listener) { checkThread(); @@ -1376,10 +1430,11 @@ public class WebView extends AbsoluteLayout } /** - * Set the chrome handler. This is an implementation of WebChromeClient for + * Sets the chrome handler. This is an implementation of WebChromeClient for * use in handling JavaScript dialogs, favicons, titles, and the progress. * This will replace the current handler. - * @param client An implementation of WebChromeClient. + * + * @param client an implementation of WebChromeClient */ public void setWebChromeClient(WebChromeClient client) { checkThread(); @@ -1387,9 +1442,10 @@ public class WebView extends AbsoluteLayout } /** - * Set the Picture listener. This is an interface used to receive + * Sets the Picture listener. This is an interface used to receive * notifications of a new Picture. - * @param listener An implementation of WebView.PictureListener. + * + * @param listener an implementation of WebView.PictureListener * @deprecated This method is now obsolete. */ @Deprecated @@ -1419,7 +1475,7 @@ public class WebView extends AbsoluteLayout * permissions of the host application. Use extreme care when using this * method in a WebView which could contain untrusted content.</li> * <li> JavaScript interacts with Java object on a private, background - * thread of the WebView. Care is therefore required to maintain thread + * thread of this WebView. Care is therefore required to maintain thread * safety.</li> * </ul> * @@ -1445,10 +1501,11 @@ public class WebView extends AbsoluteLayout } /** - * Return the WebSettings object used to control the settings for this + * Gets the WebSettings object used to control the settings for this * WebView. - * @return A WebSettings object that can be used to control this WebView's - * settings. + * + * @return a WebSettings object that can be used to control this WebView's + * settings */ public WebSettings getSettings() { checkThread(); @@ -1456,11 +1513,11 @@ public class WebView extends AbsoluteLayout } /** - * Return the list of currently loaded plugins. - * @return The list of currently loaded plugins. + * Gets the list of currently loaded plugins. * - * @hide + * @return the list of currently loaded plugins * @deprecated This was used for Gears, which has been deprecated. + * @hide */ @Deprecated public static synchronized PluginList getPluginList() { @@ -1469,8 +1526,8 @@ public class WebView extends AbsoluteLayout } /** - * @hide * @deprecated This was used for Gears, which has been deprecated. + * @hide */ @Deprecated public void refreshPlugins(boolean reloadOpenPages) { @@ -1478,8 +1535,9 @@ public class WebView extends AbsoluteLayout } /** - * Use this method to put the WebView into text selection mode. - * Do not rely on this functionality; it will be deprecated in the future. + * Puts this WebView into text selection mode. Do not rely on this + * functionality; it will be deprecated in the future. + * * @deprecated This method is now obsolete. */ @Deprecated @@ -1528,15 +1586,15 @@ public class WebView extends AbsoluteLayout } /** - * Gets the zoom controls for the WebView, as a separate View. The caller is - * responsible for inserting this View into the layout hierarchy. + * Gets the zoom controls for this WebView, as a separate View. The caller + * is responsible for inserting this View into the layout hierarchy. * <p/> * API level {@link android.os.Build.VERSION_CODES#CUPCAKE} introduced * built-in zoom mechanisms for the WebView, as opposed to these separate * zoom controls. The built-in mechanisms are preferred and can be enabled * using {@link WebSettings#setBuiltInZoomControls}. * - * @deprecated The built-in zoom mechanisms are preferred. + * @deprecated the built-in zoom mechanisms are preferred * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} */ @Deprecated @@ -1546,7 +1604,9 @@ public class WebView extends AbsoluteLayout } /** - * @return TRUE if the WebView can be zoomed in. + * Gets whether this WebView can be zoomed in. + * + * @return true if this WebView can be zoomed in */ public boolean canZoomIn() { checkThread(); @@ -1554,7 +1614,9 @@ public class WebView extends AbsoluteLayout } /** - * @return TRUE if the WebView can be zoomed out. + * Gets whether this WebView can be zoomed out. + * + * @return true if this WebView can be zoomed out */ public boolean canZoomOut() { checkThread(); @@ -1562,8 +1624,9 @@ public class WebView extends AbsoluteLayout } /** - * Perform zoom in in the webview - * @return TRUE if zoom in succeeds. FALSE if no zoom changes. + * Performs zoom in in this WebView. + * + * @return true if zoom in succeeds, false if no zoom changes */ public boolean zoomIn() { checkThread(); @@ -1571,8 +1634,9 @@ public class WebView extends AbsoluteLayout } /** - * Perform zoom out in the webview - * @return TRUE if zoom out succeeds. FALSE if no zoom changes. + * Performs zoom out in this WebView. + * + * @return true if zoom out succeeds, false if no zoom changes */ public boolean zoomOut() { checkThread(); @@ -1593,8 +1657,9 @@ public class WebView extends AbsoluteLayout //------------------------------------------------------------------------- /** - * Used by providers to obtain the underlying implementation, e.g. when the appliction - * responds to WebViewClient.onCreateWindow() request. + * Gets the WebViewProvider. Used by providers to obtain the underlying + * implementation, e.g. when the appliction responds to + * WebViewClient.onCreateWindow() request. * * @hide WebViewProvider is not public API. */ diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java index 05b3e643cca4..dcc99d849259 100644 --- a/core/java/android/webkit/WebViewClassic.java +++ b/core/java/android/webkit/WebViewClassic.java @@ -87,6 +87,7 @@ import android.view.View.MeasureSpec; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewParent; +import android.view.ViewRootImpl; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; @@ -101,6 +102,7 @@ import android.webkit.WebView.PictureListener; import android.webkit.WebViewCore.DrawData; import android.webkit.WebViewCore.EventHub; import android.webkit.WebViewCore.TextFieldInitData; +import android.webkit.WebViewCore.TextSelectionData; import android.webkit.WebViewCore.TouchHighlightData; import android.webkit.WebViewCore.WebKitHitTest; import android.widget.AbsoluteLayout; @@ -151,7 +153,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc @Override public void onGlobalLayout() { if (mWebView.isShown()) { - setGLRectViewport(); + setInvScreenRect(); } } } @@ -160,7 +162,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc @Override public void onScrollChanged() { if (mWebView.isShown()) { - setGLRectViewport(); + setInvScreenRect(); } } } @@ -642,8 +644,8 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private ZoomManager mZoomManager; - private final Rect mGLRectViewport = new Rect(); - private final Rect mViewRectViewport = new Rect(); + private final Rect mInvScreenRect = new Rect(); + private final Rect mScreenRect = new Rect(); private final RectF mVisibleContentRect = new RectF(); private boolean mGLViewportEmpty = false; WebViewInputConnection mInputConnection = null; @@ -701,7 +703,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc // A final CallbackProxy shared by WebViewCore and BrowserFrame. private CallbackProxy mCallbackProxy; - private WebViewDatabase mDatabase; + private WebViewDatabaseClassic mDatabase; // SSL certificate for the main top-level page (if secure) private SslCertificate mCertificate; @@ -933,7 +935,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private Paint mTouchCrossHairColor; private int mTouchHighlightX; private int mTouchHighlightY; - private long mTouchHighlightRequested; + private boolean mShowTapHighlight; // Basically this proxy is used to tell the Video to update layer tree at // SetBaseLayer time and to pause when WebView paused. @@ -983,7 +985,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc static final int REQUEST_KEYBOARD = 118; static final int SHOW_FULLSCREEN = 120; static final int HIDE_FULLSCREEN = 121; - static final int REPLACE_BASE_CONTENT = 123; static final int UPDATE_MATCH_COUNT = 126; static final int CENTER_FIT_RECT = 127; static final int SET_SCROLLBAR_MODES = 129; @@ -1230,7 +1231,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc mViewManager = new ViewManager(this); L10nUtils.setApplicationContext(context.getApplicationContext()); mWebViewCore = new WebViewCore(context, this, mCallbackProxy, javaScriptInterfaces); - mDatabase = WebViewDatabase.getInstance(context); + mDatabase = WebViewDatabaseClassic.getInstance(context); mScroller = new OverScroller(context, null, 0, 0, false); //TODO Use OverScroller's flywheel mZoomManager = new ZoomManager(this, mCallbackProxy); @@ -1294,6 +1295,11 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc public WebStorage getWebStorage() { return WebStorageClassic.getInstance(); } + + @Override + public WebViewDatabase getWebViewDatabase(Context context) { + return WebViewDatabaseClassic.getInstance(context); + } } private void onHandleUiEvent(MotionEvent event, int eventType, int flags) { @@ -1310,6 +1316,12 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc case WebViewInputDispatcher.EVENT_TYPE_TOUCH: onHandleUiTouchEvent(event); break; + case WebViewInputDispatcher.EVENT_TYPE_CLICK: + if (mFocusedNode != null && mFocusedNode.mIntentUrl != null) { + mWebView.playSoundEffect(SoundEffectConstants.CLICK); + overrideLoading(mFocusedNode.mIntentUrl); + } + break; } } @@ -2012,6 +2024,11 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } private void destroyImpl() { + int drawGLFunction = nativeGetDrawGLFunction(mNativeClass); + ViewRootImpl viewRoot = mWebView.getViewRootImpl(); + Log.d(LOGTAG, String.format("destroyImpl, drawGLFunction %x, viewroot == null %b, isHWAccel %b", + drawGLFunction, (viewRoot == null), mWebView.isHardwareAccelerated())); + mCallbackProxy.blockMessages(); clearHelpers(); if (mListBoxDialog != null) { @@ -2598,7 +2615,8 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc */ @Override public boolean isPrivateBrowsingEnabled() { - return getSettings().isPrivateBrowsingEnabled(); + WebSettingsClassic settings = getSettings(); + return (settings != null) ? settings.isPrivateBrowsingEnabled() : false; } private void startPrivateBrowsing() { @@ -2668,7 +2686,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc public void clearView() { mContentWidth = 0; mContentHeight = 0; - setBaseLayer(0, null, false, false); + setBaseLayer(0, false, false); mWebViewCore.sendMessage(EventHub.CLEAR_CONTENT); } @@ -3039,14 +3057,14 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc // the scale factor is not 1) private void calcOurContentVisibleRectF(RectF r) { calcOurVisibleRect(mContentVisibleRect); - r.left = viewToContentXf(mContentVisibleRect.left); + r.left = viewToContentXf(mContentVisibleRect.left) / mWebView.getScaleX(); // viewToContentY will remove the total height of the title bar. Add // the visible height back in to account for the fact that if the title // bar is partially visible, the part of the visible rect which is // displaying our content is displaced by that amount. - r.top = viewToContentYf(mContentVisibleRect.top + getVisibleTitleHeightImpl()); - r.right = viewToContentXf(mContentVisibleRect.right); - r.bottom = viewToContentYf(mContentVisibleRect.bottom); + r.top = viewToContentYf(mContentVisibleRect.top + getVisibleTitleHeightImpl()) / mWebView.getScaleY(); + r.right = viewToContentXf(mContentVisibleRect.right) / mWebView.getScaleX(); + r.bottom = viewToContentYf(mContentVisibleRect.bottom) / mWebView.getScaleY(); } static class ViewSizeData { @@ -3728,7 +3746,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private void scrollLayerTo(int x, int y) { int dx = mScrollingLayerRect.left - x; int dy = mScrollingLayerRect.top - y; - if (dx == 0 && dy == 0) { + if ((dx == 0 && dy == 0) || mNativeClass == 0) { return; } if (mSelectingText) { @@ -3749,7 +3767,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc mEditTextContentBounds.offset(dx, dy); mAutoCompletePopup.resetRect(); } - nativeScrollLayer(mCurrentScrollingLayerId, x, y); + nativeScrollLayer(mNativeClass, mCurrentScrollingLayerId, x, y); mScrollingLayerRect.left = x; mScrollingLayerRect.top = y; mWebViewCore.sendMessage(WebViewCore.EventHub.SCROLL_LAYER, mCurrentScrollingLayerId, @@ -4200,17 +4218,17 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc // decide which adornments to draw int extras = DRAW_EXTRAS_NONE; - if (!mFindIsUp && mSelectingText) { + if (!mFindIsUp && mShowTextSelectionExtra) { extras = DRAW_EXTRAS_SELECTION; } calcOurContentVisibleRectF(mVisibleContentRect); if (canvas.isHardwareAccelerated()) { - Rect glRectViewport = mGLViewportEmpty ? null : mGLRectViewport; - Rect viewRectViewport = mGLViewportEmpty ? null : mViewRectViewport; + Rect invScreenRect = mGLViewportEmpty ? null : mInvScreenRect; + Rect screenRect = mGLViewportEmpty ? null : mScreenRect; - int functor = nativeCreateDrawGLFunction(mNativeClass, glRectViewport, - viewRectViewport, mVisibleContentRect, getScale(), extras); + int functor = nativeCreateDrawGLFunction(mNativeClass, invScreenRect, + screenRect, mVisibleContentRect, getScale(), extras); ((HardwareCanvas) canvas).callDrawGLFunction(functor); if (mHardwareAccelSkia != getSettings().getHardwareAccelSkiaEnabled()) { mHardwareAccelSkia = getSettings().getHardwareAccelSkiaEnabled(); @@ -4225,14 +4243,8 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc df = mScrollFilter; } canvas.setDrawFilter(df); - // XXX: Revisit splitting content. Right now it causes a - // synchronization problem with layers. - int content = nativeDraw(canvas, mVisibleContentRect, mBackgroundColor, - extras, false); + nativeDraw(canvas, mVisibleContentRect, mBackgroundColor, extras); canvas.setDrawFilter(null); - if (!mBlockWebkitViewMessages && content != 0) { - mWebViewCore.sendMessage(EventHub.SPLIT_PICTURE_SET, content, 0); - } } canvas.restoreToCount(saveCount); @@ -4355,7 +4367,9 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } private void removeTouchHighlight() { - mWebViewCore.removeMessages(EventHub.HIT_TEST); + if (mWebViewCore != null) { + mWebViewCore.removeMessages(EventHub.HIT_TEST); + } mPrivateHandler.removeMessages(HIT_TEST_RESULT); setTouchHighlightRects(null); } @@ -4447,12 +4461,12 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc */ private SelectActionModeCallback mSelectCallback; - void setBaseLayer(int layer, Region invalRegion, boolean showVisualIndicator, + void setBaseLayer(int layer, boolean showVisualIndicator, boolean isPictureAfterFirstLayout) { if (mNativeClass == 0) return; boolean queueFull; - queueFull = nativeSetBaseLayer(mNativeClass, layer, invalRegion, + queueFull = nativeSetBaseLayer(mNativeClass, layer, showVisualIndicator, isPictureAfterFirstLayout); if (queueFull) { @@ -4528,11 +4542,13 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private void startSelectingText() { mSelectingText = true; + mShowTextSelectionExtra = true; mHandleAlphaAnimator.setIntValues(255); mHandleAlphaAnimator.start(); } private void endSelectingText() { mSelectingText = false; + mShowTextSelectionExtra = false; mHandleAlphaAnimator.setIntValues(0); mHandleAlphaAnimator.start(); } @@ -4680,8 +4696,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc public InputConnection onCreateInputConnection(EditorInfo outAttrs) { if (mInputConnection == null) { mInputConnection = new WebViewInputConnection(); - mAutoCompletePopup = new AutoCompletePopup(mContext, this, - mInputConnection); + mAutoCompletePopup = new AutoCompletePopup(this, mInputConnection); } mInputConnection.setupEditorInfo(outAttrs); return mInputConnection; @@ -5305,9 +5320,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc mSelectCallback.finish(); mSelectCallback = null; } - if (!mIsCaretSelection) { - updateWebkitSelection(); - } invalidate(); // redraw without selection mAutoScrollX = 0; mAutoScrollY = 0; @@ -5427,10 +5439,13 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc removeAccessibilityApisFromJavaScript(); updateHwAccelerated(); + int drawGLFunction = nativeGetDrawGLFunction(mNativeClass); + ViewRootImpl viewRoot = mWebView.getViewRootImpl(); + Log.d(LOGTAG, String.format("onDetachedFromWindow, drawGLFunction %x, viewroot == null %b, isHWAccel %b", + drawGLFunction, (viewRoot == null), mWebView.isHardwareAccelerated())); if (mWebView.isHardwareAccelerated()) { - int drawGLFunction = nativeGetDrawGLFunction(mNativeClass); - if (drawGLFunction != 0) { - mWebView.getViewRootImpl().detachFunctor(drawGLFunction); + if (drawGLFunction != 0 && viewRoot != null) { + viewRoot.detachFunctor(drawGLFunction); } } } @@ -5532,26 +5547,26 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } } - void setGLRectViewport() { + void setInvScreenRect() { // Use the getGlobalVisibleRect() to get the intersection among the parents // visible == false means we're clipped - send a null rect down to indicate that // we should not draw - boolean visible = mWebView.getGlobalVisibleRect(mGLRectViewport); + boolean visible = mWebView.getGlobalVisibleRect(mInvScreenRect); if (visible) { // Then need to invert the Y axis, just for GL View rootView = mWebView.getRootView(); int rootViewHeight = rootView.getHeight(); - mViewRectViewport.set(mGLRectViewport); - int savedWebViewBottom = mGLRectViewport.bottom; - mGLRectViewport.bottom = rootViewHeight - mGLRectViewport.top - getVisibleTitleHeightImpl(); - mGLRectViewport.top = rootViewHeight - savedWebViewBottom; + mScreenRect.set(mInvScreenRect); + int savedWebViewBottom = mInvScreenRect.bottom; + mInvScreenRect.bottom = rootViewHeight - mInvScreenRect.top - getVisibleTitleHeightImpl(); + mInvScreenRect.top = rootViewHeight - savedWebViewBottom; mGLViewportEmpty = false; } else { mGLViewportEmpty = true; } calcOurContentVisibleRectF(mVisibleContentRect); - nativeUpdateDrawGLFunction(mNativeClass, mGLViewportEmpty ? null : mGLRectViewport, - mGLViewportEmpty ? null : mViewRectViewport, + nativeUpdateDrawGLFunction(mNativeClass, mGLViewportEmpty ? null : mInvScreenRect, + mGLViewportEmpty ? null : mScreenRect, mVisibleContentRect, getScale()); } @@ -5567,7 +5582,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc // notify the WebKit about the new dimensions. sendViewSizeZoom(false); } - setGLRectViewport(); + setInvScreenRect(); return changed; } @@ -5691,10 +5706,13 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc // See if there is a layer at x, y and switch to TOUCH_DRAG_LAYER_MODE if a // layer is found. private void startScrollingLayer(float x, float y) { + if (mNativeClass == 0) + return; + int contentX = viewToContentX((int) x + getScrollX()); int contentY = viewToContentY((int) y + getScrollY()); - mCurrentScrollingLayerId = nativeScrollableLayer(contentX, contentY, - mScrollingLayerRect, mScrollingLayerBounds); + mCurrentScrollingLayerId = nativeScrollableLayer(mNativeClass, + contentX, contentY, mScrollingLayerRect, mScrollingLayerBounds); if (mCurrentScrollingLayerId != 0) { mTouchMode = TOUCH_DRAG_LAYER_MODE; } @@ -5800,12 +5818,15 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc data.mX = contentX; data.mY = contentY; data.mNativeLayerRect = new Rect(); - data.mNativeLayer = nativeScrollableLayer( - contentX, contentY, data.mNativeLayerRect, null); + if (mNativeClass != 0) { + data.mNativeLayer = nativeScrollableLayer(mNativeClass, + contentX, contentY, data.mNativeLayerRect, null); + } else { + data.mNativeLayer = 0; + } data.mSlop = viewToContentDimension(mNavSlop); removeTouchHighlight(); - if (!mBlockWebkitViewMessages) { - mTouchHighlightRequested = SystemClock.uptimeMillis(); + if (!mBlockWebkitViewMessages && mWebViewCore != null) { mWebViewCore.sendMessageAtFrontOfQueue( EventHub.HIT_TEST, data); } @@ -6373,10 +6394,14 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc mSelectDraggingTextQuad.p4.x, mSelectDraggingTextQuad.p3.x); float newY = scaleCoordinate(scale, mSelectDraggingTextQuad.p4.y, mSelectDraggingTextQuad.p3.y); - int x = Math.max(mEditTextContentBounds.left, - Math.min(mEditTextContentBounds.right, Math.round(newX))); - int y = Math.max(mEditTextContentBounds.top, - Math.min(mEditTextContentBounds.bottom, Math.round(newY))); + int x = Math.round(newX); + int y = Math.round(newY); + if (mIsEditingText) { + x = Math.max(mEditTextContentBounds.left, + Math.min(mEditTextContentBounds.right, x)); + y = Math.max(mEditTextContentBounds.top, + Math.min(mEditTextContentBounds.bottom, y)); + } mSelectDraggingCursor.set(x, y); } @@ -6421,6 +6446,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private int mTrackballXMove = 0; private int mTrackballYMove = 0; private boolean mSelectingText = false; + private boolean mShowTextSelectionExtra = false; private boolean mSelectionStarted = false; private static final int TRACKBALL_KEY_TIMEOUT = 1000; private static final int TRACKBALL_TIMEOUT = 200; @@ -7191,8 +7217,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc break; } case NEVER_REMEMBER_PASSWORD: { - mDatabase.setUsernamePassword( - msg.getData().getString("host"), null, null); + mDatabase.setUsernamePassword(msg.getData().getString("host"), null, null); ((Message) msg.obj).sendToTarget(); break; } @@ -7238,10 +7263,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc mZoomManager.updateDefaultZoomDensity(density); break; } - case REPLACE_BASE_CONTENT: { - nativeReplaceBaseContent(msg.arg1); - break; - } case NEW_PICTURE_MSG_ID: { // called for new content final WebViewCore.DrawData draw = (WebViewCore.DrawData) msg.obj; @@ -7576,6 +7597,8 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc case UPDATE_CONTENT_BOUNDS: mEditTextContentBounds.set((Rect) msg.obj); + nativeMapLayerRect(mNativeClass, mEditTextLayerId, + mEditTextContentBounds); break; case SCROLL_EDIT_TEXT: @@ -7602,6 +7625,34 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc public Context getContext() { return WebViewClassic.this.getContext(); } + + @Override + public boolean shouldInterceptTouchEvent(MotionEvent event) { + if (!mSelectingText) { + return false; + } + ensureSelectionHandles(); + int y = Math.round(event.getY() - getTitleHeight() + getScrollY()); + int x = Math.round(event.getX() + getScrollX()); + boolean isPressingHandle; + if (mIsCaretSelection) { + isPressingHandle = mSelectHandleCenter.getBounds() + .contains(x, y); + } else { + isPressingHandle = + mSelectHandleLeft.getBounds().contains(x, y) + || mSelectHandleRight.getBounds().contains(x, y); + } + return isPressingHandle; + } + + @Override + public void showTapHighlight(boolean show) { + if (mShowTapHighlight != show) { + mShowTapHighlight = show; + invalidate(); + } + } } private void setHitTestTypeFromUrl(String url) { @@ -7664,16 +7715,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc if (mFocusedNode.mHasFocus && mFocusedNode.mEditable) { return false; } - long delay = SystemClock.uptimeMillis() - mTouchHighlightRequested; - if (delay < ViewConfiguration.getTapTimeout()) { - Rect r = mTouchHighlightRegion.getBounds(); - mWebView.postInvalidateDelayed(delay, r.left, r.top, r.right, r.bottom); - return false; - } - if (mInputDispatcher == null) { - return false; - } - return mInputDispatcher.shouldShowTapHighlight(); + return mShowTapHighlight; } @@ -7847,7 +7889,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc boolean isPictureAfterFirstLayout = viewState != null; if (updateBaseLayer) { - setBaseLayer(draw.mBaseLayer, draw.mInvalRegion, + setBaseLayer(draw.mBaseLayer, getSettings().getShowVisualIndicator(), isPictureAfterFirstLayout); } @@ -7879,15 +7921,19 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } mSendScrollEvent = true; - if (DebugFlags.WEB_VIEW) { - Rect b = draw.mInvalRegion.getBounds(); - Log.v(LOGTAG, "NEW_PICTURE_MSG_ID {" + - b.left+","+b.top+","+b.right+","+b.bottom+"}"); + int functor = 0; + ViewRootImpl viewRoot = mWebView.getViewRootImpl(); + if (mWebView.isHardwareAccelerated() && viewRoot != null) { + functor = nativeGetDrawGLFunction(mNativeClass); + if (functor != 0) { + viewRoot.attachFunctor(functor); + } } - Rect invalBounds = draw.mInvalRegion.getBounds(); - if (!invalBounds.isEmpty()) { - invalidateContentRect(invalBounds); - } else { + + if (functor == 0 + || mWebView.getLayerType() != View.LAYER_TYPE_NONE) { + // invalidate the screen so that the next repaint will show new content + // TODO: partial invalidate mWebView.invalidate(); } @@ -7922,6 +7968,13 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } nativeSetTextSelection(mNativeClass, data.mSelectTextPtr); + if (data.mSelectionReason == TextSelectionData.REASON_ACCESSIBILITY_INJECTOR) { + selectionDone(); + mShowTextSelectionExtra = true; + invalidate(); + return; + } + if (data.mSelectTextPtr != 0 && (data.mStart != data.mEnd || (mFieldPointer == nodePointer && mFieldPointer != 0))) { @@ -8189,6 +8242,12 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc @Override public void run() { + if (mWebViewCore == null + || getWebView().getWindowToken() == null + || getWebView().getViewRootImpl() == null) { + // We've been detached and/or destroyed since this was posted + return; + } final ListView listView = (ListView) LayoutInflater.from(mContext) .inflate(com.android.internal.R.layout.select_dialog, null); final MyArrayListAdapter adapter = new MyArrayListAdapter(); @@ -8412,18 +8471,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } /** - * Draw the HTML page into the specified canvas. This call ignores any - * view-specific zoom, scroll offset, or other changes. It does not draw - * any view-specific chrome, such as progress or URL bars. - * - * only needs to be accessible to Browser and testing - */ - public void drawPage(Canvas canvas) { - calcOurContentVisibleRectF(mVisibleContentRect); - nativeDraw(canvas, mVisibleContentRect, 0, 0, false); - } - - /** * Enable the communication b/t the webView and VideoViewProxy * * only used by the Browser @@ -8556,29 +8603,21 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private native void nativeDebugDump(); private native void nativeDestroy(); - /** - * Draw the picture set with a background color and extra. If - * "splitIfNeeded" is true and the return value is not 0, the return value - * MUST be passed to WebViewCore with SPLIT_PICTURE_SET message so that the - * native allocation can be freed. - */ - private native int nativeDraw(Canvas canvas, RectF visibleRect, - int color, int extra, boolean splitIfNeeded); + private native void nativeDraw(Canvas canvas, RectF visibleRect, + int color, int extra); private native void nativeDumpDisplayTree(String urlOrNull); private native boolean nativeEvaluateLayersAnimations(int nativeInstance); - private native int nativeCreateDrawGLFunction(int nativeInstance, Rect rect, - Rect viewRect, RectF visibleRect, float scale, int extras); + private native int nativeCreateDrawGLFunction(int nativeInstance, Rect invScreenRect, + Rect screenRect, RectF visibleContentRect, float scale, int extras); private native int nativeGetDrawGLFunction(int nativeInstance); - private native void nativeUpdateDrawGLFunction(int nativeInstance, Rect rect, Rect viewRect, - RectF visibleRect, float scale); + private native void nativeUpdateDrawGLFunction(int nativeInstance, Rect invScreenRect, + Rect screenRect, RectF visibleContentRect, float scale); private native String nativeGetSelection(); private native Rect nativeLayerBounds(int layer); private native void nativeSetHeightCanMeasure(boolean measure); private native boolean nativeSetBaseLayer(int nativeInstance, - int layer, Region invalRegion, - boolean showVisualIndicator, boolean isPictureAfterFirstLayout); + int layer, boolean showVisualIndicator, boolean isPictureAfterFirstLayout); private native int nativeGetBaseLayer(); - private native void nativeReplaceBaseContent(int content); private native void nativeCopyBaseContentToPicture(Picture pict); private native boolean nativeHasContent(); private native void nativeStopGL(); @@ -8594,16 +8633,17 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc private native void nativeUseHardwareAccelSkia(boolean enabled); // Returns a pointer to the scrollable LayerAndroid at the given point. - private native int nativeScrollableLayer(int x, int y, Rect scrollRect, + private native int nativeScrollableLayer(int nativeInstance, int x, int y, Rect scrollRect, Rect scrollBounds); /** * Scroll the specified layer. + * @param nativeInstance Native WebView instance * @param layer Id of the layer to scroll, as determined by nativeScrollableLayer. * @param newX Destination x position to which to scroll. * @param newY Destination y position to which to scroll. * @return True if the layer is successfully scrolled. */ - private native boolean nativeScrollLayer(int layer, int newX, int newY); + private native boolean nativeScrollLayer(int nativeInstance, int layer, int newX, int newY); private native void nativeSetIsScrolling(boolean isScrolling); private native int nativeGetBackgroundColor(); native boolean nativeSetProperty(String key, String value); diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 75141fd37575..661bbf8eff38 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -143,6 +143,7 @@ public final class WebViewCore { private int mHighUsageDeltaMb; private int mChromeCanFocusDirection; + private int mTextSelectionChangeReason = TextSelectionData.REASON_UNKNOWN; // The thread name used to identify the WebCore thread and for use in // debugging other classes that require operation within the WebCore thread. @@ -601,8 +602,7 @@ public final class WebViewCore { * Redraw a portion of the picture set. The Point wh returns the * width and height of the overall picture. */ - private native int nativeRecordContent(int nativeClass, Region invalRegion, - Point wh); + private native int nativeRecordContent(int nativeClass, Point wh); /** * Notify webkit that animations have begun (on the hardware accelerated content) @@ -611,12 +611,6 @@ public final class WebViewCore { private native boolean nativeFocusBoundsChanged(int nativeClass); - /** - * Splits slow parts of the picture set. Called from the webkit thread after - * WebView.nativeDraw() returns content to be split. - */ - private native void nativeSplitContent(int nativeClass, int content); - private native boolean nativeKey(int nativeClass, int keyCode, int unichar, int repeatCount, boolean isShift, boolean isAlt, boolean isSym, boolean isDown); @@ -868,6 +862,8 @@ public final class WebViewCore { } static class TextSelectionData { + static final int REASON_UNKNOWN = 0; + static final int REASON_ACCESSIBILITY_INJECTOR = 1; public TextSelectionData(int start, int end, int selectTextPtr) { mStart = start; mEnd = end; @@ -876,6 +872,7 @@ public final class WebViewCore { int mStart; int mEnd; int mSelectTextPtr; + int mSelectionReason = TextSelectionData.REASON_UNKNOWN; } static class TouchUpData { @@ -1019,7 +1016,7 @@ public final class WebViewCore { "WEBKIT_DRAW", // = 130; "131", // = 131; "POST_URL", // = 132; - "SPLIT_PICTURE_SET", // = 133; + "", // = 133; "CLEAR_CONTENT", // = 134; "", // = 135; "", // = 136; @@ -1095,7 +1092,6 @@ public final class WebViewCore { static final int WEBKIT_DRAW = 130; static final int POST_URL = 132; - static final int SPLIT_PICTURE_SET = 133; static final int CLEAR_CONTENT = 134; // UI nav messages @@ -1552,12 +1548,16 @@ public final class WebViewCore { break; case MODIFY_SELECTION: + mTextSelectionChangeReason + = TextSelectionData.REASON_ACCESSIBILITY_INJECTOR; String modifiedSelectionString = nativeModifySelection(mNativeClass, msg.arg1, msg.arg2); mWebViewClassic.mPrivateHandler.obtainMessage( WebViewClassic.SELECTION_STRING_CHANGED, modifiedSelectionString).sendToTarget(); + mTextSelectionChangeReason + = TextSelectionData.REASON_UNKNOWN; break; case LISTBOX_CHOICES: @@ -1612,13 +1612,6 @@ public final class WebViewCore { data.mOrigin, data.mAllow, data.mRemember); break; - case SPLIT_PICTURE_SET: - nativeSplitContent(mNativeClass, msg.arg1); - mWebViewClassic.mPrivateHandler.obtainMessage( - WebViewClassic.REPLACE_BASE_CONTENT, msg.arg1, 0); - mSplitPictureIsScheduled = false; - break; - case CLEAR_CONTENT: // Clear the view so that onDraw() will draw nothing // but white background @@ -1880,7 +1873,6 @@ public final class WebViewCore { private synchronized void removeMessages() { // reset mDrawIsScheduled flag as WEBKIT_DRAW may be removed mDrawIsScheduled = false; - mSplitPictureIsScheduled = false; if (mMessages != null) { mMessages.clear(); } else { @@ -2142,20 +2134,9 @@ public final class WebViewCore { return usedQuota; } - // called from UI thread - void splitContent(int content) { - if (!mSplitPictureIsScheduled) { - mSplitPictureIsScheduled = true; - sendMessage(EventHub.SPLIT_PICTURE_SET, content, 0); - } - } - // Used to avoid posting more than one draw message. private boolean mDrawIsScheduled; - // Used to avoid posting more than one split picture message. - private boolean mSplitPictureIsScheduled; - // Used to suspend drawing. private boolean mDrawIsPaused; @@ -2180,11 +2161,9 @@ public final class WebViewCore { static class DrawData { DrawData() { mBaseLayer = 0; - mInvalRegion = new Region(); mContentSize = new Point(); } int mBaseLayer; - Region mInvalRegion; // view size that was used by webkit during the most recent layout Point mViewSize; Point mContentSize; @@ -2230,8 +2209,7 @@ public final class WebViewCore { mDrawIsScheduled = false; DrawData draw = new DrawData(); if (DebugFlags.WEB_VIEW_CORE) Log.v(LOGTAG, "webkitDraw start"); - draw.mBaseLayer = nativeRecordContent(mNativeClass, draw.mInvalRegion, - draw.mContentSize); + draw.mBaseLayer = nativeRecordContent(mNativeClass, draw.mContentSize); if (draw.mBaseLayer == 0) { if (mWebViewClassic != null && !mWebViewClassic.isPaused()) { if (DebugFlags.WEB_VIEW_CORE) Log.v(LOGTAG, "webkitDraw abort, resending draw message"); @@ -2277,8 +2255,7 @@ public final class WebViewCore { // the draw path (and fix saving <canvas>) DrawData draw = new DrawData(); if (DebugFlags.WEB_VIEW_CORE) Log.v(LOGTAG, "saveViewState start"); - draw.mBaseLayer = nativeRecordContent(mNativeClass, draw.mInvalRegion, - draw.mContentSize); + draw.mBaseLayer = nativeRecordContent(mNativeClass, draw.mContentSize); boolean result = false; try { result = ViewStateSerializer.serializeViewState(stream, draw); @@ -2794,13 +2771,19 @@ public final class WebViewCore { } } + private TextSelectionData createTextSelection(int start, int end, int selPtr) { + TextSelectionData data = new TextSelectionData(start, end, selPtr); + data.mSelectionReason = mTextSelectionChangeReason; + return data; + } + // called by JNI private void updateTextSelection(int pointer, int start, int end, int textGeneration, int selectionPtr) { if (mWebViewClassic != null) { Message.obtain(mWebViewClassic.mPrivateHandler, WebViewClassic.UPDATE_TEXT_SELECTION_MSG_ID, pointer, textGeneration, - new TextSelectionData(start, end, selectionPtr)).sendToTarget(); + createTextSelection(start, end, selectionPtr)).sendToTarget(); } } @@ -2834,7 +2817,7 @@ public final class WebViewCore { Message.obtain(mWebViewClassic.mPrivateHandler, WebViewClassic.UPDATE_TEXT_SELECTION_MSG_ID, initData.mFieldPointer, 0, - new TextSelectionData(start, end, selectionPtr)) + createTextSelection(start, end, selectionPtr)) .sendToTarget(); } diff --git a/core/java/android/webkit/WebViewDatabase.java b/core/java/android/webkit/WebViewDatabase.java index 6c35f199bb5d..9d10d67be0f7 100644 --- a/core/java/android/webkit/WebViewDatabase.java +++ b/core/java/android/webkit/WebViewDatabase.java @@ -16,611 +16,79 @@ package android.webkit; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.Map.Entry; - -import android.content.ContentValues; import android.content.Context; -import android.database.Cursor; -import android.database.DatabaseUtils; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteException; -import android.database.sqlite.SQLiteStatement; -import android.util.Log; +/** + * This class allows developers to determine whether any WebView used in the + * application has stored any of the following types of browsing data and + * to clear any such stored data for all WebViews in the application. + * <ul> + * <li>Username/password pairs entered into web forms</li> + * <li>HTTP authentication username/password pairs</li> + * <li>Data entered into text fields (e.g. for autocomplete suggestions)</li> + * </ul> + */ public class WebViewDatabase { - private static final String DATABASE_FILE = "webview.db"; - private static final String CACHE_DATABASE_FILE = "webviewCache.db"; - - // log tag + // TODO: deprecate/hide this. protected static final String LOGTAG = "webviewdatabase"; - private static final int DATABASE_VERSION = 11; - // 2 -> 3 Modified Cache table to allow cache of redirects - // 3 -> 4 Added Oma-Downloads table - // 4 -> 5 Modified Cache table to support persistent contentLength - // 5 -> 4 Removed Oma-Downoads table - // 5 -> 6 Add INDEX for cache table - // 6 -> 7 Change cache localPath from int to String - // 7 -> 8 Move cache to its own db - // 8 -> 9 Store both scheme and host when storing passwords - // 9 -> 10 Update httpauth table UNIQUE - // 10 -> 11 Drop cookies and cache now managed by the chromium stack, - // and update the form data table to use the new format - // implemented for b/5265606. - - private static WebViewDatabase mInstance = null; - - private static SQLiteDatabase mDatabase = null; - - // synchronize locks - private final Object mPasswordLock = new Object(); - private final Object mFormLock = new Object(); - private final Object mHttpAuthLock = new Object(); - - private static final String mTableNames[] = { - "password", "formurl", "formdata", "httpauth" - }; - - // Table ids (they are index to mTableNames) - private static final int TABLE_PASSWORD_ID = 0; - private static final int TABLE_FORMURL_ID = 1; - private static final int TABLE_FORMDATA_ID = 2; - private static final int TABLE_HTTPAUTH_ID = 3; - - // column id strings for "_id" which can be used by any table - private static final String ID_COL = "_id"; - - private static final String[] ID_PROJECTION = new String[] { - "_id" - }; - - // column id strings for "password" table - private static final String PASSWORD_HOST_COL = "host"; - private static final String PASSWORD_USERNAME_COL = "username"; - private static final String PASSWORD_PASSWORD_COL = "password"; - - // column id strings for "formurl" table - private static final String FORMURL_URL_COL = "url"; - - // column id strings for "formdata" table - private static final String FORMDATA_URLID_COL = "urlid"; - private static final String FORMDATA_NAME_COL = "name"; - private static final String FORMDATA_VALUE_COL = "value"; - - // column id strings for "httpauth" table - private static final String HTTPAUTH_HOST_COL = "host"; - private static final String HTTPAUTH_REALM_COL = "realm"; - private static final String HTTPAUTH_USERNAME_COL = "username"; - private static final String HTTPAUTH_PASSWORD_COL = "password"; - - // Initially true until the background thread completes. - private boolean mInitialized = false; - - private WebViewDatabase(final Context context) { - new Thread() { - @Override - public void run() { - init(context); - } - }.start(); - - // Singleton only, use getInstance() - } - - public static synchronized WebViewDatabase getInstance(Context context) { - if (mInstance == null) { - mInstance = new WebViewDatabase(context); - } - return mInstance; - } - - private synchronized void init(Context context) { - if (mInitialized) { - return; - } - - initDatabase(context); - // Before using the Chromium HTTP stack, we stored the WebKit cache in - // our own DB. Clean up the DB file if it's still around. - context.deleteDatabase(CACHE_DATABASE_FILE); - - // Thread done, notify. - mInitialized = true; - notify(); - } - - private void initDatabase(Context context) { - try { - mDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, null); - } catch (SQLiteException e) { - // try again by deleting the old db and create a new one - if (context.deleteDatabase(DATABASE_FILE)) { - mDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, - null); - } - } - - // mDatabase should not be null, - // the only case is RequestAPI test has problem to create db - if (mDatabase == null) { - mInitialized = true; - notify(); - return; - } - - if (mDatabase.getVersion() != DATABASE_VERSION) { - mDatabase.beginTransactionNonExclusive(); - try { - upgradeDatabase(); - mDatabase.setTransactionSuccessful(); - } finally { - mDatabase.endTransaction(); - } - } - } - - private static void upgradeDatabase() { - upgradeDatabaseToV10(); - upgradeDatabaseFromV10ToV11(); - // Add future database upgrade functions here, one version at a - // time. - mDatabase.setVersion(DATABASE_VERSION); - } - - private static void upgradeDatabaseFromV10ToV11() { - int oldVersion = mDatabase.getVersion(); - - if (oldVersion >= 11) { - // Nothing to do. - return; - } - - // Clear out old java stack cookies - this data is now stored in - // a separate database managed by the Chrome stack. - mDatabase.execSQL("DROP TABLE IF EXISTS cookies"); - - // Likewise for the old cache table. - mDatabase.execSQL("DROP TABLE IF EXISTS cache"); - - // Update form autocomplete URLs to match new ICS formatting. - Cursor c = mDatabase.query(mTableNames[TABLE_FORMURL_ID], null, null, - null, null, null, null); - while (c.moveToNext()) { - String urlId = Long.toString(c.getLong(c.getColumnIndex(ID_COL))); - String url = c.getString(c.getColumnIndex(FORMURL_URL_COL)); - ContentValues cv = new ContentValues(1); - cv.put(FORMURL_URL_COL, WebTextView.urlForAutoCompleteData(url)); - mDatabase.update(mTableNames[TABLE_FORMURL_ID], cv, ID_COL + "=?", - new String[] { urlId }); - } - c.close(); - } - - private static void upgradeDatabaseToV10() { - int oldVersion = mDatabase.getVersion(); - - if (oldVersion >= 10) { - // Nothing to do. - return; - } - - if (oldVersion != 0) { - Log.i(LOGTAG, "Upgrading database from version " - + oldVersion + " to " - + DATABASE_VERSION + ", which will destroy old data"); - } - - if (9 == oldVersion) { - mDatabase.execSQL("DROP TABLE IF EXISTS " - + mTableNames[TABLE_HTTPAUTH_ID]); - mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID] - + " (" + ID_COL + " INTEGER PRIMARY KEY, " - + HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL - + " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, " - + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE (" - + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL - + ") ON CONFLICT REPLACE);"); - return; - } - - mDatabase.execSQL("DROP TABLE IF EXISTS cookies"); - mDatabase.execSQL("DROP TABLE IF EXISTS cache"); - mDatabase.execSQL("DROP TABLE IF EXISTS " - + mTableNames[TABLE_FORMURL_ID]); - mDatabase.execSQL("DROP TABLE IF EXISTS " - + mTableNames[TABLE_FORMDATA_ID]); - mDatabase.execSQL("DROP TABLE IF EXISTS " - + mTableNames[TABLE_HTTPAUTH_ID]); - mDatabase.execSQL("DROP TABLE IF EXISTS " - + mTableNames[TABLE_PASSWORD_ID]); - - // formurl - mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMURL_ID] - + " (" + ID_COL + " INTEGER PRIMARY KEY, " + FORMURL_URL_COL - + " TEXT" + ");"); - - // formdata - mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMDATA_ID] - + " (" + ID_COL + " INTEGER PRIMARY KEY, " - + FORMDATA_URLID_COL + " INTEGER, " + FORMDATA_NAME_COL - + " TEXT, " + FORMDATA_VALUE_COL + " TEXT," + " UNIQUE (" - + FORMDATA_URLID_COL + ", " + FORMDATA_NAME_COL + ", " - + FORMDATA_VALUE_COL + ") ON CONFLICT IGNORE);"); - - // httpauth - mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID] - + " (" + ID_COL + " INTEGER PRIMARY KEY, " - + HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL - + " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, " - + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE (" - + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL - + ") ON CONFLICT REPLACE);"); - // passwords - mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_PASSWORD_ID] - + " (" + ID_COL + " INTEGER PRIMARY KEY, " - + PASSWORD_HOST_COL + " TEXT, " + PASSWORD_USERNAME_COL - + " TEXT, " + PASSWORD_PASSWORD_COL + " TEXT," + " UNIQUE (" - + PASSWORD_HOST_COL + ", " + PASSWORD_USERNAME_COL - + ") ON CONFLICT REPLACE);"); - } - - // Wait for the background initialization thread to complete and check the - // database creation status. - private boolean checkInitialized() { - synchronized (this) { - while (!mInitialized) { - try { - wait(); - } catch (InterruptedException e) { - Log.e(LOGTAG, "Caught exception while checking " + - "initialization"); - Log.e(LOGTAG, Log.getStackTraceString(e)); - } - } - } - return mDatabase != null; - } - - private boolean hasEntries(int tableId) { - if (!checkInitialized()) { - return false; - } - - Cursor cursor = null; - boolean ret = false; - try { - cursor = mDatabase.query(mTableNames[tableId], ID_PROJECTION, - null, null, null, null, null); - ret = cursor.moveToFirst() == true; - } catch (IllegalStateException e) { - Log.e(LOGTAG, "hasEntries", e); - } finally { - if (cursor != null) cursor.close(); - } - return ret; - } - - // - // password functions - // - /** - * Set password. Tuple (PASSWORD_HOST_COL, PASSWORD_USERNAME_COL) is unique. - * - * @param schemePlusHost The scheme and host for the password - * @param username The username for the password. If it is null, it means - * password can't be saved. - * @param password The password + * @hide Only for use by WebViewProvider implementations. */ - void setUsernamePassword(String schemePlusHost, String username, - String password) { - if (schemePlusHost == null || !checkInitialized()) { - return; - } - - synchronized (mPasswordLock) { - final ContentValues c = new ContentValues(); - c.put(PASSWORD_HOST_COL, schemePlusHost); - c.put(PASSWORD_USERNAME_COL, username); - c.put(PASSWORD_PASSWORD_COL, password); - mDatabase.insert(mTableNames[TABLE_PASSWORD_ID], PASSWORD_HOST_COL, - c); - } + protected WebViewDatabase() { } - /** - * Retrieve the username and password for a given host - * - * @param schemePlusHost The scheme and host which passwords applies to - * @return String[] if found, String[0] is username, which can be null and - * String[1] is password. Return null if it can't find anything. - */ - String[] getUsernamePassword(String schemePlusHost) { - if (schemePlusHost == null || !checkInitialized()) { - return null; - } - - final String[] columns = new String[] { - PASSWORD_USERNAME_COL, PASSWORD_PASSWORD_COL - }; - final String selection = "(" + PASSWORD_HOST_COL + " == ?)"; - synchronized (mPasswordLock) { - String[] ret = null; - Cursor cursor = null; - try { - cursor = mDatabase.query(mTableNames[TABLE_PASSWORD_ID], - columns, selection, new String[] { schemePlusHost }, null, - null, null); - if (cursor.moveToFirst()) { - ret = new String[2]; - ret[0] = cursor.getString( - cursor.getColumnIndex(PASSWORD_USERNAME_COL)); - ret[1] = cursor.getString( - cursor.getColumnIndex(PASSWORD_PASSWORD_COL)); - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "getUsernamePassword", e); - } finally { - if (cursor != null) cursor.close(); - } - return ret; - } + public static synchronized WebViewDatabase getInstance(Context context) { + return WebViewFactory.getProvider().getWebViewDatabase(context); } /** - * Find out if there are any passwords saved. + * Gets whether there are any username/password combinations + * from web pages saved. * - * @return TRUE if there is passwords saved + * @return true if there are any username/passwords used in web + * forms saved */ public boolean hasUsernamePassword() { - synchronized (mPasswordLock) { - return hasEntries(TABLE_PASSWORD_ID); - } + throw new MustOverrideException(); } /** - * Clear password database + * Clears any username/password combinations saved from web forms. */ public void clearUsernamePassword() { - if (!checkInitialized()) { - return; - } - - synchronized (mPasswordLock) { - mDatabase.delete(mTableNames[TABLE_PASSWORD_ID], null, null); - } - } - - // - // http authentication password functions - // - - /** - * Set HTTP authentication password. Tuple (HTTPAUTH_HOST_COL, - * HTTPAUTH_REALM_COL, HTTPAUTH_USERNAME_COL) is unique. - * - * @param host The host for the password - * @param realm The realm for the password - * @param username The username for the password. If it is null, it means - * password can't be saved. - * @param password The password - */ - void setHttpAuthUsernamePassword(String host, String realm, String username, - String password) { - if (host == null || realm == null || !checkInitialized()) { - return; - } - - synchronized (mHttpAuthLock) { - final ContentValues c = new ContentValues(); - c.put(HTTPAUTH_HOST_COL, host); - c.put(HTTPAUTH_REALM_COL, realm); - c.put(HTTPAUTH_USERNAME_COL, username); - c.put(HTTPAUTH_PASSWORD_COL, password); - mDatabase.insert(mTableNames[TABLE_HTTPAUTH_ID], HTTPAUTH_HOST_COL, - c); - } + throw new MustOverrideException(); } /** - * Retrieve the HTTP authentication username and password for a given - * host+realm pair + * Gets whether there are any HTTP authentication username/password combinations saved. * - * @param host The host the password applies to - * @param realm The realm the password applies to - * @return String[] if found, String[0] is username, which can be null and - * String[1] is password. Return null if it can't find anything. - */ - String[] getHttpAuthUsernamePassword(String host, String realm) { - if (host == null || realm == null || !checkInitialized()){ - return null; - } - - final String[] columns = new String[] { - HTTPAUTH_USERNAME_COL, HTTPAUTH_PASSWORD_COL - }; - final String selection = "(" + HTTPAUTH_HOST_COL + " == ?) AND (" - + HTTPAUTH_REALM_COL + " == ?)"; - synchronized (mHttpAuthLock) { - String[] ret = null; - Cursor cursor = null; - try { - cursor = mDatabase.query(mTableNames[TABLE_HTTPAUTH_ID], - columns, selection, new String[] { host, realm }, null, - null, null); - if (cursor.moveToFirst()) { - ret = new String[2]; - ret[0] = cursor.getString( - cursor.getColumnIndex(HTTPAUTH_USERNAME_COL)); - ret[1] = cursor.getString( - cursor.getColumnIndex(HTTPAUTH_PASSWORD_COL)); - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "getHttpAuthUsernamePassword", e); - } finally { - if (cursor != null) cursor.close(); - } - return ret; - } - } - - /** - * Find out if there are any HTTP authentication passwords saved. - * - * @return TRUE if there are passwords saved + * @return true if there are any HTTP authentication username/passwords saved */ public boolean hasHttpAuthUsernamePassword() { - synchronized (mHttpAuthLock) { - return hasEntries(TABLE_HTTPAUTH_ID); - } + throw new MustOverrideException(); } /** - * Clear HTTP authentication password database + * Clears any HTTP authentication username/passwords that are saved. */ public void clearHttpAuthUsernamePassword() { - if (!checkInitialized()) { - return; - } - - synchronized (mHttpAuthLock) { - mDatabase.delete(mTableNames[TABLE_HTTPAUTH_ID], null, null); - } - } - - // - // form data functions - // - - /** - * Set form data for a site. Tuple (FORMDATA_URLID_COL, FORMDATA_NAME_COL, - * FORMDATA_VALUE_COL) is unique - * - * @param url The url of the site - * @param formdata The form data in HashMap - */ - void setFormData(String url, HashMap<String, String> formdata) { - if (url == null || formdata == null || !checkInitialized()) { - return; - } - - final String selection = "(" + FORMURL_URL_COL + " == ?)"; - synchronized (mFormLock) { - long urlid = -1; - Cursor cursor = null; - try { - cursor = mDatabase.query(mTableNames[TABLE_FORMURL_ID], - ID_PROJECTION, selection, new String[] { url }, null, null, - null); - if (cursor.moveToFirst()) { - urlid = cursor.getLong(cursor.getColumnIndex(ID_COL)); - } else { - ContentValues c = new ContentValues(); - c.put(FORMURL_URL_COL, url); - urlid = mDatabase.insert( - mTableNames[TABLE_FORMURL_ID], null, c); - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "setFormData", e); - } finally { - if (cursor != null) cursor.close(); - } - if (urlid >= 0) { - Set<Entry<String, String>> set = formdata.entrySet(); - Iterator<Entry<String, String>> iter = set.iterator(); - ContentValues map = new ContentValues(); - map.put(FORMDATA_URLID_COL, urlid); - while (iter.hasNext()) { - Entry<String, String> entry = iter.next(); - map.put(FORMDATA_NAME_COL, entry.getKey()); - map.put(FORMDATA_VALUE_COL, entry.getValue()); - mDatabase.insert(mTableNames[TABLE_FORMDATA_ID], null, map); - } - } - } + throw new MustOverrideException(); } /** - * Get all the values for a form entry with "name" in a given site + * Gets whether there is any previously-entered form data saved. * - * @param url The url of the site - * @param name The name of the form entry - * @return A list of values. Return empty list if nothing is found. - */ - ArrayList<String> getFormData(String url, String name) { - ArrayList<String> values = new ArrayList<String>(); - if (url == null || name == null || !checkInitialized()) { - return values; - } - - final String urlSelection = "(" + FORMURL_URL_COL + " == ?)"; - final String dataSelection = "(" + FORMDATA_URLID_COL + " == ?) AND (" - + FORMDATA_NAME_COL + " == ?)"; - synchronized (mFormLock) { - Cursor cursor = null; - try { - cursor = mDatabase.query(mTableNames[TABLE_FORMURL_ID], - ID_PROJECTION, urlSelection, new String[] { url }, null, - null, null); - while (cursor.moveToNext()) { - long urlid = cursor.getLong(cursor.getColumnIndex(ID_COL)); - Cursor dataCursor = null; - try { - dataCursor = mDatabase.query( - mTableNames[TABLE_FORMDATA_ID], - new String[] { ID_COL, FORMDATA_VALUE_COL }, - dataSelection, - new String[] { Long.toString(urlid), name }, - null, null, null); - if (dataCursor.moveToFirst()) { - int valueCol = dataCursor.getColumnIndex( - FORMDATA_VALUE_COL); - do { - values.add(dataCursor.getString(valueCol)); - } while (dataCursor.moveToNext()); - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "getFormData dataCursor", e); - } finally { - if (dataCursor != null) dataCursor.close(); - } - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "getFormData cursor", e); - } finally { - if (cursor != null) cursor.close(); - } - return values; - } - } - - /** - * Find out if there is form data saved. - * - * @return TRUE if there is form data in the database + * @return true if there is form data saved */ public boolean hasFormData() { - synchronized (mFormLock) { - return hasEntries(TABLE_FORMURL_ID); - } + throw new MustOverrideException(); } /** - * Clear form database + * Clears any stored previously-entered form data. */ public void clearFormData() { - if (!checkInitialized()) { - return; - } - - synchronized (mFormLock) { - mDatabase.delete(mTableNames[TABLE_FORMURL_ID], null, null); - mDatabase.delete(mTableNames[TABLE_FORMDATA_ID], null, null); - } + throw new MustOverrideException(); } } diff --git a/core/java/android/webkit/WebViewDatabaseClassic.java b/core/java/android/webkit/WebViewDatabaseClassic.java new file mode 100644 index 000000000000..9b1d4cb92986 --- /dev/null +++ b/core/java/android/webkit/WebViewDatabaseClassic.java @@ -0,0 +1,624 @@ +/* + * Copyright (C) 2012 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 android.webkit; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.Map.Entry; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.DatabaseUtils; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteException; +import android.database.sqlite.SQLiteStatement; +import android.util.Log; + +final class WebViewDatabaseClassic extends WebViewDatabase { + private static final String LOGTAG = "WebViewDatabaseClassic"; + private static final String DATABASE_FILE = "webview.db"; + private static final String CACHE_DATABASE_FILE = "webviewCache.db"; + + private static final int DATABASE_VERSION = 11; + // 2 -> 3 Modified Cache table to allow cache of redirects + // 3 -> 4 Added Oma-Downloads table + // 4 -> 5 Modified Cache table to support persistent contentLength + // 5 -> 4 Removed Oma-Downoads table + // 5 -> 6 Add INDEX for cache table + // 6 -> 7 Change cache localPath from int to String + // 7 -> 8 Move cache to its own db + // 8 -> 9 Store both scheme and host when storing passwords + // 9 -> 10 Update httpauth table UNIQUE + // 10 -> 11 Drop cookies and cache now managed by the chromium stack, + // and update the form data table to use the new format + // implemented for b/5265606. + + private static WebViewDatabaseClassic sInstance = null; + + private static SQLiteDatabase sDatabase = null; + + // synchronize locks + private final Object mPasswordLock = new Object(); + private final Object mFormLock = new Object(); + private final Object mHttpAuthLock = new Object(); + + private static final String mTableNames[] = { + "password", "formurl", "formdata", "httpauth" + }; + + // Table ids (they are index to mTableNames) + private static final int TABLE_PASSWORD_ID = 0; + private static final int TABLE_FORMURL_ID = 1; + private static final int TABLE_FORMDATA_ID = 2; + private static final int TABLE_HTTPAUTH_ID = 3; + + // column id strings for "_id" which can be used by any table + private static final String ID_COL = "_id"; + + private static final String[] ID_PROJECTION = new String[] { + "_id" + }; + + // column id strings for "password" table + private static final String PASSWORD_HOST_COL = "host"; + private static final String PASSWORD_USERNAME_COL = "username"; + private static final String PASSWORD_PASSWORD_COL = "password"; + + // column id strings for "formurl" table + private static final String FORMURL_URL_COL = "url"; + + // column id strings for "formdata" table + private static final String FORMDATA_URLID_COL = "urlid"; + private static final String FORMDATA_NAME_COL = "name"; + private static final String FORMDATA_VALUE_COL = "value"; + + // column id strings for "httpauth" table + private static final String HTTPAUTH_HOST_COL = "host"; + private static final String HTTPAUTH_REALM_COL = "realm"; + private static final String HTTPAUTH_USERNAME_COL = "username"; + private static final String HTTPAUTH_PASSWORD_COL = "password"; + + // Initially true until the background thread completes. + private boolean mInitialized = false; + + WebViewDatabaseClassic(final Context context) { + new Thread() { + @Override + public void run() { + init(context); + } + }.start(); + + // Singleton only, use getInstance() + } + + public static synchronized WebViewDatabaseClassic getInstance(Context context) { + if (sInstance == null) { + sInstance = new WebViewDatabaseClassic(context); + } + return sInstance; + } + + private synchronized void init(Context context) { + if (mInitialized) { + return; + } + + initDatabase(context); + // Before using the Chromium HTTP stack, we stored the WebKit cache in + // our own DB. Clean up the DB file if it's still around. + context.deleteDatabase(CACHE_DATABASE_FILE); + + // Thread done, notify. + mInitialized = true; + notify(); + } + + private void initDatabase(Context context) { + try { + sDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, null); + } catch (SQLiteException e) { + // try again by deleting the old db and create a new one + if (context.deleteDatabase(DATABASE_FILE)) { + sDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, + null); + } + } + + // sDatabase should not be null, + // the only case is RequestAPI test has problem to create db + if (sDatabase == null) { + mInitialized = true; + notify(); + return; + } + + if (sDatabase.getVersion() != DATABASE_VERSION) { + sDatabase.beginTransactionNonExclusive(); + try { + upgradeDatabase(); + sDatabase.setTransactionSuccessful(); + } finally { + sDatabase.endTransaction(); + } + } + } + + private static void upgradeDatabase() { + upgradeDatabaseToV10(); + upgradeDatabaseFromV10ToV11(); + // Add future database upgrade functions here, one version at a + // time. + sDatabase.setVersion(DATABASE_VERSION); + } + + private static void upgradeDatabaseFromV10ToV11() { + int oldVersion = sDatabase.getVersion(); + + if (oldVersion >= 11) { + // Nothing to do. + return; + } + + // Clear out old java stack cookies - this data is now stored in + // a separate database managed by the Chrome stack. + sDatabase.execSQL("DROP TABLE IF EXISTS cookies"); + + // Likewise for the old cache table. + sDatabase.execSQL("DROP TABLE IF EXISTS cache"); + + // Update form autocomplete URLs to match new ICS formatting. + Cursor c = sDatabase.query(mTableNames[TABLE_FORMURL_ID], null, null, + null, null, null, null); + while (c.moveToNext()) { + String urlId = Long.toString(c.getLong(c.getColumnIndex(ID_COL))); + String url = c.getString(c.getColumnIndex(FORMURL_URL_COL)); + ContentValues cv = new ContentValues(1); + cv.put(FORMURL_URL_COL, WebTextView.urlForAutoCompleteData(url)); + sDatabase.update(mTableNames[TABLE_FORMURL_ID], cv, ID_COL + "=?", + new String[] { urlId }); + } + c.close(); + } + + private static void upgradeDatabaseToV10() { + int oldVersion = sDatabase.getVersion(); + + if (oldVersion >= 10) { + // Nothing to do. + return; + } + + if (oldVersion != 0) { + Log.i(LOGTAG, "Upgrading database from version " + + oldVersion + " to " + + DATABASE_VERSION + ", which will destroy old data"); + } + + if (9 == oldVersion) { + sDatabase.execSQL("DROP TABLE IF EXISTS " + + mTableNames[TABLE_HTTPAUTH_ID]); + sDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID] + + " (" + ID_COL + " INTEGER PRIMARY KEY, " + + HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL + + " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, " + + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE (" + + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL + + ") ON CONFLICT REPLACE);"); + return; + } + + sDatabase.execSQL("DROP TABLE IF EXISTS cookies"); + sDatabase.execSQL("DROP TABLE IF EXISTS cache"); + sDatabase.execSQL("DROP TABLE IF EXISTS " + + mTableNames[TABLE_FORMURL_ID]); + sDatabase.execSQL("DROP TABLE IF EXISTS " + + mTableNames[TABLE_FORMDATA_ID]); + sDatabase.execSQL("DROP TABLE IF EXISTS " + + mTableNames[TABLE_HTTPAUTH_ID]); + sDatabase.execSQL("DROP TABLE IF EXISTS " + + mTableNames[TABLE_PASSWORD_ID]); + + // formurl + sDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMURL_ID] + + " (" + ID_COL + " INTEGER PRIMARY KEY, " + FORMURL_URL_COL + + " TEXT" + ");"); + + // formdata + sDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMDATA_ID] + + " (" + ID_COL + " INTEGER PRIMARY KEY, " + + FORMDATA_URLID_COL + " INTEGER, " + FORMDATA_NAME_COL + + " TEXT, " + FORMDATA_VALUE_COL + " TEXT," + " UNIQUE (" + + FORMDATA_URLID_COL + ", " + FORMDATA_NAME_COL + ", " + + FORMDATA_VALUE_COL + ") ON CONFLICT IGNORE);"); + + // httpauth + sDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID] + + " (" + ID_COL + " INTEGER PRIMARY KEY, " + + HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL + + " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, " + + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE (" + + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL + + ") ON CONFLICT REPLACE);"); + // passwords + sDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_PASSWORD_ID] + + " (" + ID_COL + " INTEGER PRIMARY KEY, " + + PASSWORD_HOST_COL + " TEXT, " + PASSWORD_USERNAME_COL + + " TEXT, " + PASSWORD_PASSWORD_COL + " TEXT," + " UNIQUE (" + + PASSWORD_HOST_COL + ", " + PASSWORD_USERNAME_COL + + ") ON CONFLICT REPLACE);"); + } + + // Wait for the background initialization thread to complete and check the + // database creation status. + private boolean checkInitialized() { + synchronized (this) { + while (!mInitialized) { + try { + wait(); + } catch (InterruptedException e) { + Log.e(LOGTAG, "Caught exception while checking " + + "initialization"); + Log.e(LOGTAG, Log.getStackTraceString(e)); + } + } + } + return sDatabase != null; + } + + private boolean hasEntries(int tableId) { + if (!checkInitialized()) { + return false; + } + + Cursor cursor = null; + boolean ret = false; + try { + cursor = sDatabase.query(mTableNames[tableId], ID_PROJECTION, + null, null, null, null, null); + ret = cursor.moveToFirst() == true; + } catch (IllegalStateException e) { + Log.e(LOGTAG, "hasEntries", e); + } finally { + if (cursor != null) cursor.close(); + } + return ret; + } + + // + // password functions + // + + /** + * Set password. Tuple (PASSWORD_HOST_COL, PASSWORD_USERNAME_COL) is unique. + * + * @param schemePlusHost The scheme and host for the password + * @param username The username for the password. If it is null, it means + * password can't be saved. + * @param password The password + */ + void setUsernamePassword(String schemePlusHost, String username, + String password) { + if (schemePlusHost == null || !checkInitialized()) { + return; + } + + synchronized (mPasswordLock) { + final ContentValues c = new ContentValues(); + c.put(PASSWORD_HOST_COL, schemePlusHost); + c.put(PASSWORD_USERNAME_COL, username); + c.put(PASSWORD_PASSWORD_COL, password); + sDatabase.insert(mTableNames[TABLE_PASSWORD_ID], PASSWORD_HOST_COL, + c); + } + } + + /** + * Retrieve the username and password for a given host + * + * @param schemePlusHost The scheme and host which passwords applies to + * @return String[] if found, String[0] is username, which can be null and + * String[1] is password. Return null if it can't find anything. + */ + String[] getUsernamePassword(String schemePlusHost) { + if (schemePlusHost == null || !checkInitialized()) { + return null; + } + + final String[] columns = new String[] { + PASSWORD_USERNAME_COL, PASSWORD_PASSWORD_COL + }; + final String selection = "(" + PASSWORD_HOST_COL + " == ?)"; + synchronized (mPasswordLock) { + String[] ret = null; + Cursor cursor = null; + try { + cursor = sDatabase.query(mTableNames[TABLE_PASSWORD_ID], + columns, selection, new String[] { schemePlusHost }, null, + null, null); + if (cursor.moveToFirst()) { + ret = new String[2]; + ret[0] = cursor.getString( + cursor.getColumnIndex(PASSWORD_USERNAME_COL)); + ret[1] = cursor.getString( + cursor.getColumnIndex(PASSWORD_PASSWORD_COL)); + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "getUsernamePassword", e); + } finally { + if (cursor != null) cursor.close(); + } + return ret; + } + } + + /** + * @see WebViewDatabase#hasUsernamePassword + */ + @Override + public boolean hasUsernamePassword() { + synchronized (mPasswordLock) { + return hasEntries(TABLE_PASSWORD_ID); + } + } + + /** + * @see WebViewDatabase#clearUsernamePassword + */ + @Override + public void clearUsernamePassword() { + if (!checkInitialized()) { + return; + } + + synchronized (mPasswordLock) { + sDatabase.delete(mTableNames[TABLE_PASSWORD_ID], null, null); + } + } + + // + // http authentication password functions + // + + /** + * Set HTTP authentication password. Tuple (HTTPAUTH_HOST_COL, + * HTTPAUTH_REALM_COL, HTTPAUTH_USERNAME_COL) is unique. + * + * @param host The host for the password + * @param realm The realm for the password + * @param username The username for the password. If it is null, it means + * password can't be saved. + * @param password The password + */ + void setHttpAuthUsernamePassword(String host, String realm, String username, + String password) { + if (host == null || realm == null || !checkInitialized()) { + return; + } + + synchronized (mHttpAuthLock) { + final ContentValues c = new ContentValues(); + c.put(HTTPAUTH_HOST_COL, host); + c.put(HTTPAUTH_REALM_COL, realm); + c.put(HTTPAUTH_USERNAME_COL, username); + c.put(HTTPAUTH_PASSWORD_COL, password); + sDatabase.insert(mTableNames[TABLE_HTTPAUTH_ID], HTTPAUTH_HOST_COL, + c); + } + } + + /** + * Retrieve the HTTP authentication username and password for a given + * host+realm pair + * + * @param host The host the password applies to + * @param realm The realm the password applies to + * @return String[] if found, String[0] is username, which can be null and + * String[1] is password. Return null if it can't find anything. + */ + String[] getHttpAuthUsernamePassword(String host, String realm) { + if (host == null || realm == null || !checkInitialized()){ + return null; + } + + final String[] columns = new String[] { + HTTPAUTH_USERNAME_COL, HTTPAUTH_PASSWORD_COL + }; + final String selection = "(" + HTTPAUTH_HOST_COL + " == ?) AND (" + + HTTPAUTH_REALM_COL + " == ?)"; + synchronized (mHttpAuthLock) { + String[] ret = null; + Cursor cursor = null; + try { + cursor = sDatabase.query(mTableNames[TABLE_HTTPAUTH_ID], + columns, selection, new String[] { host, realm }, null, + null, null); + if (cursor.moveToFirst()) { + ret = new String[2]; + ret[0] = cursor.getString( + cursor.getColumnIndex(HTTPAUTH_USERNAME_COL)); + ret[1] = cursor.getString( + cursor.getColumnIndex(HTTPAUTH_PASSWORD_COL)); + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "getHttpAuthUsernamePassword", e); + } finally { + if (cursor != null) cursor.close(); + } + return ret; + } + } + + /** + * @see WebViewDatabase#hasHttpAuthUsernamePassword + */ + @Override + public boolean hasHttpAuthUsernamePassword() { + synchronized (mHttpAuthLock) { + return hasEntries(TABLE_HTTPAUTH_ID); + } + } + + /** + * @see WebViewDatabase#clearHttpAuthUsernamePassword + */ + @Override + public void clearHttpAuthUsernamePassword() { + if (!checkInitialized()) { + return; + } + + synchronized (mHttpAuthLock) { + sDatabase.delete(mTableNames[TABLE_HTTPAUTH_ID], null, null); + } + } + + // + // form data functions + // + + /** + * Set form data for a site. Tuple (FORMDATA_URLID_COL, FORMDATA_NAME_COL, + * FORMDATA_VALUE_COL) is unique + * + * @param url The url of the site + * @param formdata The form data in HashMap + */ + void setFormData(String url, HashMap<String, String> formdata) { + if (url == null || formdata == null || !checkInitialized()) { + return; + } + + final String selection = "(" + FORMURL_URL_COL + " == ?)"; + synchronized (mFormLock) { + long urlid = -1; + Cursor cursor = null; + try { + cursor = sDatabase.query(mTableNames[TABLE_FORMURL_ID], + ID_PROJECTION, selection, new String[] { url }, null, null, + null); + if (cursor.moveToFirst()) { + urlid = cursor.getLong(cursor.getColumnIndex(ID_COL)); + } else { + ContentValues c = new ContentValues(); + c.put(FORMURL_URL_COL, url); + urlid = sDatabase.insert( + mTableNames[TABLE_FORMURL_ID], null, c); + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "setFormData", e); + } finally { + if (cursor != null) cursor.close(); + } + if (urlid >= 0) { + Set<Entry<String, String>> set = formdata.entrySet(); + Iterator<Entry<String, String>> iter = set.iterator(); + ContentValues map = new ContentValues(); + map.put(FORMDATA_URLID_COL, urlid); + while (iter.hasNext()) { + Entry<String, String> entry = iter.next(); + map.put(FORMDATA_NAME_COL, entry.getKey()); + map.put(FORMDATA_VALUE_COL, entry.getValue()); + sDatabase.insert(mTableNames[TABLE_FORMDATA_ID], null, map); + } + } + } + } + + /** + * Get all the values for a form entry with "name" in a given site + * + * @param url The url of the site + * @param name The name of the form entry + * @return A list of values. Return empty list if nothing is found. + */ + ArrayList<String> getFormData(String url, String name) { + ArrayList<String> values = new ArrayList<String>(); + if (url == null || name == null || !checkInitialized()) { + return values; + } + + final String urlSelection = "(" + FORMURL_URL_COL + " == ?)"; + final String dataSelection = "(" + FORMDATA_URLID_COL + " == ?) AND (" + + FORMDATA_NAME_COL + " == ?)"; + synchronized (mFormLock) { + Cursor cursor = null; + try { + cursor = sDatabase.query(mTableNames[TABLE_FORMURL_ID], + ID_PROJECTION, urlSelection, new String[] { url }, null, + null, null); + while (cursor.moveToNext()) { + long urlid = cursor.getLong(cursor.getColumnIndex(ID_COL)); + Cursor dataCursor = null; + try { + dataCursor = sDatabase.query( + mTableNames[TABLE_FORMDATA_ID], + new String[] { ID_COL, FORMDATA_VALUE_COL }, + dataSelection, + new String[] { Long.toString(urlid), name }, + null, null, null); + if (dataCursor.moveToFirst()) { + int valueCol = dataCursor.getColumnIndex( + FORMDATA_VALUE_COL); + do { + values.add(dataCursor.getString(valueCol)); + } while (dataCursor.moveToNext()); + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "getFormData dataCursor", e); + } finally { + if (dataCursor != null) dataCursor.close(); + } + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "getFormData cursor", e); + } finally { + if (cursor != null) cursor.close(); + } + return values; + } + } + + /** + * @see WebViewDatabase#hasFormData + */ + @Override + public boolean hasFormData() { + synchronized (mFormLock) { + return hasEntries(TABLE_FORMURL_ID); + } + } + + /** + * @see WebViewDatabase#clearFormData + */ + @Override + public void clearFormData() { + if (!checkInitialized()) { + return; + } + + synchronized (mFormLock) { + sDatabase.delete(mTableNames[TABLE_FORMURL_ID], null, null); + sDatabase.delete(mTableNames[TABLE_FORMDATA_ID], null, null); + } + } +} diff --git a/core/java/android/webkit/WebViewFactoryProvider.java b/core/java/android/webkit/WebViewFactoryProvider.java index a832b0ae8075..1d302f1983a0 100644 --- a/core/java/android/webkit/WebViewFactoryProvider.java +++ b/core/java/android/webkit/WebViewFactoryProvider.java @@ -16,6 +16,8 @@ package android.webkit; +import android.content.Context; + /** * This is the main entry-point into the WebView back end implementations, which the WebView * proxy class uses to instantiate all the other objects as needed. The backend must provide an @@ -63,21 +65,32 @@ public interface WebViewFactoryProvider { /** * Gets the singleton CookieManager instance for this WebView implementation. The * implementation must return the same instance on subsequent calls. - * @return the singleton CookieManager instance. + * + * @return the singleton CookieManager instance */ CookieManager getCookieManager(); /** * Gets the singleton WebIconDatabase instance for this WebView implementation. The * implementation must return the same instance on subsequent calls. - * @return the singleton WebIconDatabase instance. + * + * @return the singleton WebIconDatabase instance */ WebIconDatabase getWebIconDatabase(); /** * Gets the singleton WebStorage instance for this WebView implementation. The * implementation must return the same instance on subsequent calls. - * @return the singleton WebStorage instance. + * + * @return the singleton WebStorage instance */ WebStorage getWebStorage(); + + /** + * Gets the singleton WebViewDatabase instance for this WebView implementation. The + * implementation must return the same instance on subsequent calls. + * + * @return the singleton WebViewDatabase instance + */ + WebViewDatabase getWebViewDatabase(Context context); } diff --git a/core/java/android/webkit/WebViewInputDispatcher.java b/core/java/android/webkit/WebViewInputDispatcher.java index b612a3b4fb54..95414359f372 100644 --- a/core/java/android/webkit/WebViewInputDispatcher.java +++ b/core/java/android/webkit/WebViewInputDispatcher.java @@ -22,7 +22,6 @@ import android.os.Looper; import android.os.Message; import android.os.SystemClock; import android.util.Log; -import android.view.InputDevice; import android.view.MotionEvent; import android.view.ViewConfiguration; @@ -100,6 +99,8 @@ final class WebViewInputDispatcher { private boolean mPostDoNotSendTouchEventsToWebKitUntilNextGesture; private boolean mPostLongPressScheduled; private boolean mPostClickScheduled; + private boolean mPostShowTapHighlightScheduled; + private boolean mPostHideTapHighlightScheduled; private int mPostLastWebKitXOffset; private int mPostLastWebKitYOffset; private float mPostLastWebKitScale; @@ -134,6 +135,7 @@ final class WebViewInputDispatcher { private static final int LONG_PRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout() + TAP_TIMEOUT; private static final int DOUBLE_TAP_TIMEOUT = ViewConfiguration.getDoubleTapTimeout(); + private static final int PRESSED_STATE_DURATION = ViewConfiguration.getPressedStateDuration(); /** * Event type: Indicates a touch event type. @@ -311,14 +313,17 @@ final class WebViewInputDispatcher { } unscheduleLongPressLocked(); unscheduleClickLocked(); + hideTapCandidateLocked(); return false; } - if (mPostSendTouchEventsToWebKit - && mPostDoNotSendTouchEventsToWebKitUntilNextGesture - && action == MotionEvent.ACTION_DOWN) { - // Recover from a previous web kit timeout. - mPostDoNotSendTouchEventsToWebKitUntilNextGesture = false; + if (action == MotionEvent.ACTION_DOWN && mPostSendTouchEventsToWebKit) { + if (mUiCallbacks.shouldInterceptTouchEvent(eventToEnqueue)) { + mPostDoNotSendTouchEventsToWebKitUntilNextGesture = true; + } else if (mPostDoNotSendTouchEventsToWebKitUntilNextGesture) { + // Recover from a previous web kit timeout. + mPostDoNotSendTouchEventsToWebKitUntilNextGesture = false; + } } } @@ -348,12 +353,6 @@ final class WebViewInputDispatcher { } } - public boolean shouldShowTapHighlight() { - synchronized (mLock) { - return mPostLongPressScheduled || mPostClickScheduled; - } - } - private void postLongPress() { synchronized (mLock) { if (!mPostLongPressScheduled) { @@ -384,6 +383,64 @@ final class WebViewInputDispatcher { } } + private void hideTapCandidateLocked() { + unscheduleHideTapHighlightLocked(); + unscheduleShowTapHighlightLocked(); + mUiCallbacks.showTapHighlight(false); + } + + private void showTapCandidateLocked() { + unscheduleHideTapHighlightLocked(); + unscheduleShowTapHighlightLocked(); + mUiCallbacks.showTapHighlight(true); + scheduleHideTapHighlightLocked(); + } + + private void scheduleShowTapHighlightLocked() { + unscheduleShowTapHighlightLocked(); + mPostShowTapHighlightScheduled = true; + mUiHandler.sendEmptyMessageDelayed(UiHandler.MSG_SHOW_TAP_HIGHLIGHT, + TAP_TIMEOUT); + } + + private void unscheduleShowTapHighlightLocked() { + if (mPostShowTapHighlightScheduled) { + mPostShowTapHighlightScheduled = false; + mUiHandler.removeMessages(UiHandler.MSG_SHOW_TAP_HIGHLIGHT); + } + } + + private void scheduleHideTapHighlightLocked() { + unscheduleHideTapHighlightLocked(); + mPostHideTapHighlightScheduled = true; + mUiHandler.sendEmptyMessageDelayed(UiHandler.MSG_HIDE_TAP_HIGHLIGHT, + PRESSED_STATE_DURATION); + } + + private void unscheduleHideTapHighlightLocked() { + if (mPostHideTapHighlightScheduled) { + mPostHideTapHighlightScheduled = false; + mUiHandler.removeMessages(UiHandler.MSG_HIDE_TAP_HIGHLIGHT); + } + } + + private void postShowTapHighlight(boolean show) { + synchronized (mLock) { + if (show) { + if (!mPostShowTapHighlightScheduled) { + return; + } + mPostShowTapHighlightScheduled = false; + } else { + if (!mPostHideTapHighlightScheduled) { + return; + } + mPostHideTapHighlightScheduled = false; + } + mUiCallbacks.showTapHighlight(show); + } + } + private void scheduleClickLocked() { unscheduleClickLocked(); mPostClickScheduled = true; @@ -403,6 +460,7 @@ final class WebViewInputDispatcher { return; } mPostClickScheduled = false; + showTapCandidateLocked(); MotionEvent event = mPostTouchStream.getLastEvent(); if (event == null || event.getAction() != MotionEvent.ACTION_UP) { @@ -441,6 +499,7 @@ final class WebViewInputDispatcher { private void enqueueDoubleTapLocked(MotionEvent event) { unscheduleClickLocked(); + hideTapCandidateLocked(); MotionEvent eventToEnqueue = MotionEvent.obtainNoHistory(event); DispatchEvent d = obtainDispatchEventLocked(eventToEnqueue, EVENT_TYPE_DOUBLE_TAP, 0, mPostLastWebKitXOffset, mPostLastWebKitYOffset, mPostLastWebKitScale); @@ -457,6 +516,7 @@ final class WebViewInputDispatcher { if ((deltaX * deltaX + deltaY * deltaY) > mTouchSlopSquared) { unscheduleLongPressLocked(); mIsTapCandidate = false; + hideTapCandidateLocked(); } } @@ -473,14 +533,17 @@ final class WebViewInputDispatcher { || event.getPointerCount() > 1) { unscheduleLongPressLocked(); unscheduleClickLocked(); + hideTapCandidateLocked(); mIsDoubleTapCandidate = false; mIsTapCandidate = false; + hideTapCandidateLocked(); } else if (action == MotionEvent.ACTION_DOWN) { checkForDoubleTapOnDownLocked(event); scheduleLongPressLocked(); mIsTapCandidate = true; mInitialDownX = event.getX(); mInitialDownY = event.getY(); + scheduleShowTapHighlightLocked(); } else if (action == MotionEvent.ACTION_UP) { unscheduleLongPressLocked(); if (isClickCandidateLocked(event)) { @@ -489,6 +552,8 @@ final class WebViewInputDispatcher { } else { scheduleClickLocked(); } + } else { + hideTapCandidateLocked(); } } else if (action == MotionEvent.ACTION_MOVE) { checkForSlopLocked(event); @@ -949,6 +1014,21 @@ final class WebViewInputDispatcher { * @param flags The event's dispatch flags. */ public void dispatchUiEvent(MotionEvent event, int eventType, int flags); + + /** + * Asks the UI thread whether this touch event stream should be + * intercepted based on the touch down event. + * @param event The touch down event. + * @return true if the UI stream wants the touch stream without going + * through webkit or false otherwise. + */ + public boolean shouldInterceptTouchEvent(MotionEvent event); + + /** + * Inform's the UI that it should show the tap highlight + * @param show True if it should show the highlight, false if it should hide it + */ + public void showTapHighlight(boolean show); } /* Implemented by {@link WebViewCore} to perform operations on the web kit thread. */ @@ -975,6 +1055,8 @@ final class WebViewInputDispatcher { public static final int MSG_WEBKIT_TIMEOUT = 2; public static final int MSG_LONG_PRESS = 3; public static final int MSG_CLICK = 4; + public static final int MSG_SHOW_TAP_HIGHLIGHT = 5; + public static final int MSG_HIDE_TAP_HIGHLIGHT = 6; public UiHandler(Looper looper) { super(looper); @@ -995,6 +1077,12 @@ final class WebViewInputDispatcher { case MSG_CLICK: postClick(); break; + case MSG_SHOW_TAP_HIGHLIGHT: + postShowTapHighlight(true); + break; + case MSG_HIDE_TAP_HIGHLIGHT: + postShowTapHighlight(false); + break; default: throw new IllegalStateException("Unknown message type: " + msg.what); } diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 53d5e0b4c497..449870ea9508 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -58,6 +58,8 @@ import android.view.ViewParent; import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; +import android.view.animation.Interpolator; +import android.view.animation.LinearInterpolator; import android.view.inputmethod.BaseInputConnection; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; @@ -660,6 +662,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private int mLastHandledItemCount; /** + * Used for smooth scrolling at a consistent rate + */ + static final Interpolator sLinearInterpolator = new LinearInterpolator(); + + /** * Interface definition for a callback to be invoked when the list or grid * has been scrolled. */ @@ -3172,6 +3179,13 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mActivePointerId = ev.getPointerId(pointerIndex); } final int y = (int) ev.getY(pointerIndex); + + if (mDataChanged) { + // Re-sync everything if data has been changed + // since the scroll operation can query the adapter. + layoutChildren(); + } + switch (mTouchMode) { case TOUCH_MODE_DOWN: case TOUCH_MODE_TAP: @@ -3753,6 +3767,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te void start(int initialVelocity) { int initialY = initialVelocity < 0 ? Integer.MAX_VALUE : 0; mLastFlingY = initialY; + mScroller.setInterpolator(null); mScroller.fling(0, initialY, 0, initialVelocity, 0, Integer.MAX_VALUE, 0, Integer.MAX_VALUE); mTouchMode = TOUCH_MODE_FLING; @@ -3782,6 +3797,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } void startOverfling(int initialVelocity) { + mScroller.setInterpolator(null); mScroller.fling(0, mScrollY, 0, initialVelocity, 0, 0, Integer.MIN_VALUE, Integer.MAX_VALUE, 0, getHeight()); mTouchMode = TOUCH_MODE_OVERFLING; @@ -3811,9 +3827,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te postOnAnimation(this); } - void startScroll(int distance, int duration) { + void startScroll(int distance, int duration, boolean linear) { int initialY = distance < 0 ? Integer.MAX_VALUE : 0; mLastFlingY = initialY; + mScroller.setInterpolator(linear ? sLinearInterpolator : null); mScroller.startScroll(0, initialY, 0, distance, duration); mTouchMode = TOUCH_MODE_FLING; postOnAnimation(this); @@ -4107,14 +4124,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } else { // On-screen, just scroll. final int targetTop = getChildAt(position - firstPos).getTop(); - smoothScrollBy(targetTop - offset, duration); + smoothScrollBy(targetTop - offset, duration, true); return; } // Estimate how many screens we should travel final float screenTravelCount = (float) viewTravelCount / childCount; - mScrollDuration = screenTravelCount < 1 ? (int) (screenTravelCount * duration) : - (int) (duration / screenTravelCount); + mScrollDuration = screenTravelCount < 1 ? + duration : (int) (duration / screenTravelCount); mLastSeenPos = INVALID_POSITION; postOnAnimation(this); @@ -4151,7 +4168,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te Math.max(mListPadding.bottom, mExtraScroll) : mListPadding.bottom; final int scrollBy = lastViewHeight - lastViewPixelsShowing + extraScroll; - smoothScrollBy(scrollBy, mScrollDuration); + smoothScrollBy(scrollBy, mScrollDuration, true); mLastSeenPos = lastPos; if (lastPos < mTargetPos) { @@ -4182,14 +4199,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final int extraScroll = Math.max(mListPadding.bottom, mExtraScroll); if (nextPos < mBoundPos) { smoothScrollBy(Math.max(0, nextViewHeight + nextViewTop - extraScroll), - mScrollDuration); + mScrollDuration, true); mLastSeenPos = nextPos; postOnAnimation(this); } else { if (nextViewTop > extraScroll) { - smoothScrollBy(nextViewTop - extraScroll, mScrollDuration); + smoothScrollBy(nextViewTop - extraScroll, mScrollDuration, true); } } break; @@ -4210,7 +4227,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final int extraScroll = firstPos > 0 ? Math.max(mExtraScroll, mListPadding.top) : mListPadding.top; - smoothScrollBy(firstViewTop - extraScroll, mScrollDuration); + smoothScrollBy(firstViewTop - extraScroll, mScrollDuration, true); mLastSeenPos = firstPos; @@ -4229,7 +4246,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te if (lastPos == mLastSeenPos) { // No new views, let things keep going. - post(this); + postOnAnimation(this); return; } @@ -4240,13 +4257,13 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final int extraScroll = Math.max(mListPadding.top, mExtraScroll); mLastSeenPos = lastPos; if (lastPos > mBoundPos) { - smoothScrollBy(-(lastViewPixelsShowing - extraScroll), mScrollDuration); + smoothScrollBy(-(lastViewPixelsShowing - extraScroll), mScrollDuration, true); postOnAnimation(this); } else { final int bottom = listHeight - extraScroll; final int lastViewBottom = lastViewTop + lastViewHeight; if (bottom > lastViewBottom) { - smoothScrollBy(-(bottom - lastViewBottom), mScrollDuration); + smoothScrollBy(-(bottom - lastViewBottom), mScrollDuration, true); } } break; @@ -4255,7 +4272,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te case MOVE_OFFSET: { if (mLastSeenPos == firstPos) { // No new views, let things keep going. - post(this); + postOnAnimation(this); return; } @@ -4277,17 +4294,22 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final float modifier = Math.min(Math.abs(screenTravelCount), 1.f); if (position < firstPos) { - smoothScrollBy((int) (-getHeight() * modifier), mScrollDuration); + final int distance = (int) (-getHeight() * modifier); + final int duration = (int) (mScrollDuration * modifier); + smoothScrollBy(distance, duration, true); postOnAnimation(this); } else if (position > lastPos) { - smoothScrollBy((int) (getHeight() * modifier), mScrollDuration); + final int distance = (int) (getHeight() * modifier); + final int duration = (int) (mScrollDuration * modifier); + smoothScrollBy(distance, duration, true); postOnAnimation(this); } else { // On-screen, just scroll. final int targetTop = getChildAt(position - firstPos).getTop(); final int distance = targetTop - mOffsetFromTop; - smoothScrollBy(distance, - (int) (mScrollDuration * ((float) distance / getHeight()))); + final int duration = (int) (mScrollDuration * + ((float) Math.abs(distance) / getHeight())); + smoothScrollBy(distance, duration, true); } break; } @@ -4393,6 +4415,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te * @param duration Duration of the scroll animation in milliseconds. */ public void smoothScrollBy(int distance, int duration) { + smoothScrollBy(distance, duration, false); + } + + void smoothScrollBy(int distance, int duration, boolean linear) { if (mFlingRunnable == null) { mFlingRunnable = new FlingRunnable(); } @@ -4414,7 +4440,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } else { reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); - mFlingRunnable.startScroll(distance, duration); + mFlingRunnable.startScroll(distance, duration, linear); } } diff --git a/core/java/android/widget/AppSecurityPermissions.java b/core/java/android/widget/AppSecurityPermissions.java index b409e26bddd5..5d8bdbbc15e4 100755 --- a/core/java/android/widget/AppSecurityPermissions.java +++ b/core/java/android/widget/AppSecurityPermissions.java @@ -18,7 +18,9 @@ package android.widget; import com.android.internal.R; +import android.app.AlertDialog; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; @@ -27,14 +29,13 @@ import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; import android.graphics.drawable.Drawable; import android.os.Parcel; -import android.text.Spannable; -import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.TextUtils; -import android.text.style.ForegroundColorSpan; +import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import java.text.Collator; import java.util.ArrayList; @@ -42,7 +43,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -58,16 +58,51 @@ import java.util.Set; * * {@hide} */ -public class AppSecurityPermissions implements View.OnClickListener { +public class AppSecurityPermissions { - private enum State { - NO_PERMS, - DANGEROUS_ONLY, - NORMAL_ONLY, - BOTH + 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; + + private final static String TAG = "AppSecurityPermissions"; + private boolean localLOGV = false; + private Context mContext; + private LayoutInflater mInflater; + private PackageManager mPm; + private PackageInfo mInstalledPackageInfo; + private final Map<String, MyPermissionGroupInfo> mPermGroups + = new HashMap<String, MyPermissionGroupInfo>(); + private final List<MyPermissionGroupInfo> mPermGroupsList + = new ArrayList<MyPermissionGroupInfo>(); + private final PermissionGroupInfoComparator mPermGroupComparator; + private final PermissionInfoComparator mPermComparator; + private List<MyPermissionInfo> mPermsList; + private CharSequence mNewPermPrefix; + private Drawable mNormalIcon; + private Drawable mDangerousIcon; + + static class MyPermissionGroupInfo extends PermissionGroupInfo { + 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) { + name = perm.packageName; + packageName = perm.packageName; + } + + MyPermissionGroupInfo(PermissionGroupInfo info) { + super(info); + } } static class MyPermissionInfo extends PermissionInfo { + CharSequence mLabel; + /** * PackageInfo.requestedPermissionsFlags for the new package being installed. */ @@ -99,46 +134,99 @@ public class AppSecurityPermissions implements View.OnClickListener { } } - private final static String TAG = "AppSecurityPermissions"; - private boolean localLOGV = false; - private Context mContext; - private LayoutInflater mInflater; - private PackageManager mPm; - private LinearLayout mPermsView; - private Map<String, CharSequence> mNewMap; - private Map<String, CharSequence> mDangerousMap; - private Map<String, CharSequence> mNormalMap; - private List<MyPermissionInfo> mPermsList; - private String mDefaultGrpLabel; - private String mDefaultGrpName="DefaultGrp"; - private String mPermFormat; - private CharSequence mNewPermPrefix; - private Drawable mNormalIcon; - private Drawable mDangerousIcon; - private boolean mExpanded; - private Drawable mShowMaxIcon; - private Drawable mShowMinIcon; - private View mShowMore; - private TextView mShowMoreText; - private ImageView mShowMoreIcon; - private State mCurrentState; - private LinearLayout mNonDangerousList; - private LinearLayout mDangerousList; - private LinearLayout mNewList; - private HashMap<String, CharSequence> mGroupLabelCache; - private View mNoPermsView; + public static class PermissionItemView extends LinearLayout implements View.OnClickListener { + MyPermissionGroupInfo mGroup; + MyPermissionInfo mPerm; + AlertDialog mDialog; + + public PermissionItemView(Context context, AttributeSet attrs) { + super(context, attrs); + setClickable(true); + } + + public void setPermission(MyPermissionGroupInfo grp, MyPermissionInfo perm, + boolean first, CharSequence newPermPrefix) { + mGroup = grp; + mPerm = perm; + + ImageView permGrpIcon = (ImageView) findViewById(R.id.perm_icon); + TextView permNameView = (TextView) findViewById(R.id.perm_name); + + PackageManager pm = getContext().getPackageManager(); + Drawable icon = null; + if (first) { + if (grp.icon != 0) { + icon = grp.loadIcon(pm); + } else { + ApplicationInfo appInfo; + try { + appInfo = pm.getApplicationInfo(grp.packageName, 0); + icon = appInfo.loadIcon(pm); + } catch (NameNotFoundException e) { + } + } + } + CharSequence label = perm.mLabel; + if (perm.mNew && newPermPrefix != null) { + // If this is a new permission, format it appropriately. + SpannableStringBuilder builder = new SpannableStringBuilder(); + Parcel parcel = Parcel.obtain(); + TextUtils.writeToParcel(newPermPrefix, parcel, 0); + parcel.setDataPosition(0); + CharSequence newStr = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + parcel.recycle(); + builder.append(newStr); + builder.append(label); + label = builder; + } + + permGrpIcon.setImageDrawable(icon); + permNameView.setText(label); + setOnClickListener(this); + } + + @Override + public void onClick(View v) { + if (mGroup != null && mPerm != null) { + if (mDialog != null) { + mDialog.dismiss(); + } + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(mGroup.mLabel); + builder.setMessage(mPerm.loadDescription(getContext().getPackageManager())); + builder.setCancelable(true); + mDialog = builder.show(); + mDialog.setCanceledOnTouchOutside(true); + } + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (mDialog != null) { + mDialog.dismiss(); + } + } + } public AppSecurityPermissions(Context context, List<PermissionInfo> permList) { mContext = context; mPm = mContext.getPackageManager(); + loadResources(); + mPermComparator = new PermissionInfoComparator(); + mPermGroupComparator = new PermissionGroupInfoComparator(); for (PermissionInfo pi : permList) { mPermsList.add(new MyPermissionInfo(pi)); } + setPermissions(mPermsList); } public AppSecurityPermissions(Context context, String packageName) { mContext = context; mPm = mContext.getPackageManager(); + loadResources(); + mPermComparator = new PermissionInfoComparator(); + mPermGroupComparator = new PermissionGroupInfoComparator(); mPermsList = new ArrayList<MyPermissionInfo>(); Set<MyPermissionInfo> permSet = new HashSet<MyPermissionInfo>(); PackageInfo pkgInfo; @@ -155,11 +243,15 @@ public class AppSecurityPermissions implements View.OnClickListener { for(MyPermissionInfo tmpInfo : permSet) { mPermsList.add(tmpInfo); } + setPermissions(mPermsList); } - + public AppSecurityPermissions(Context context, PackageParser.Package pkg) { mContext = context; mPm = mContext.getPackageManager(); + loadResources(); + mPermComparator = new PermissionInfoComparator(); + mPermGroupComparator = new PermissionGroupInfoComparator(); mPermsList = new ArrayList<MyPermissionInfo>(); Set<MyPermissionInfo> permSet = new HashSet<MyPermissionInfo>(); if(pkg == null) { @@ -193,10 +285,20 @@ public class AppSecurityPermissions implements View.OnClickListener { for (MyPermissionInfo tmpInfo : permSet) { mPermsList.add(tmpInfo); } + setPermissions(mPermsList); } - + + private void loadResources() { + // Pick up from framework resources instead. + mNewPermPrefix = mContext.getText(R.string.perms_new_perm_prefix); + mNormalIcon = mContext.getResources().getDrawable(R.drawable.ic_text_dot); + mDangerousIcon = mContext.getResources().getDrawable(R.drawable.ic_bullet_key_permission); + } + /** - * Utility to retrieve a view displaying a single permission. + * Utility to retrieve a view displaying a single permission. This provides + * the old UI layout for permissions; it is only here for the device admin + * settings to continue to use. */ public static View getPermissionItemView(Context context, CharSequence grpName, CharSequence description, boolean dangerous) { @@ -204,10 +306,14 @@ public class AppSecurityPermissions implements View.OnClickListener { Context.LAYOUT_INFLATER_SERVICE); Drawable icon = context.getResources().getDrawable(dangerous ? R.drawable.ic_bullet_key_permission : R.drawable.ic_text_dot); - return getPermissionItemView(context, inflater, grpName, + return getPermissionItemViewOld(context, inflater, grpName, description, dangerous, icon); } + public PackageInfo getInstalledPackageInfo() { + return mInstalledPackageInfo; + } + private void getAllUsedPermissions(int sharedUid, Set<MyPermissionInfo> permSet) { String sharedPkgList[] = mPm.getPackagesForUid(sharedUid); if(sharedPkgList == null || (sharedPkgList.length == 0)) { @@ -239,6 +345,7 @@ public class AppSecurityPermissions implements View.OnClickListener { if ((strList == null) || (strList.length == 0)) { return; } + mInstalledPackageInfo = installedPkgInfo; for (int i=0; i<strList.length; i++) { String permName = strList[i]; // If we are only looking at an existing app, then we only @@ -270,13 +377,42 @@ public class AppSecurityPermissions implements View.OnClickListener { // to see, so skip it. continue; } + final String origGroupName = tmpPermInfo.group; + String groupName = origGroupName; + if (groupName == null) { + groupName = tmpPermInfo.packageName; + tmpPermInfo.group = groupName; + } + MyPermissionGroupInfo group = mPermGroups.get(groupName); + if (group == null) { + PermissionGroupInfo grp = null; + if (origGroupName != null) { + grp = mPm.getPermissionGroupInfo(origGroupName, 0); + } + if (grp != null) { + group = new MyPermissionGroupInfo(grp); + } else { + // We could be here either because the permission + // didn't originally specify a group or the group it + // gave couldn't be found. In either case, we consider + // its group to be the permission's package name. + tmpPermInfo.group = tmpPermInfo.packageName; + group = mPermGroups.get(tmpPermInfo.group); + if (group == null) { + group = new MyPermissionGroupInfo(tmpPermInfo); + } + group = new MyPermissionGroupInfo(tmpPermInfo); + } + mPermGroups.put(tmpPermInfo.group, group); + } + final boolean newPerm = installedPkgInfo != null + && (existingFlags&PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0; MyPermissionInfo myPerm = new MyPermissionInfo(tmpPermInfo); myPerm.mNewReqFlags = flagsList[i]; myPerm.mExistingReqFlags = existingFlags; // This is a new permission if the app is already installed and // doesn't currently hold this permission. - myPerm.mNew = installedPkgInfo != null - && (existingFlags&PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0; + myPerm.mNew = newPerm; permSet.add(myPerm); } catch (NameNotFoundException e) { Log.i(TAG, "Ignoring unknown permission:"+permName); @@ -285,149 +421,99 @@ public class AppSecurityPermissions implements View.OnClickListener { } public int getPermissionCount() { - return mPermsList.size(); + return getPermissionCount(WHICH_ALL); } - public View getPermissionsView() { - - mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mPermsView = (LinearLayout) mInflater.inflate(R.layout.app_perms_summary, null); - mShowMore = mPermsView.findViewById(R.id.show_more); - mShowMoreIcon = (ImageView) mShowMore.findViewById(R.id.show_more_icon); - mShowMoreText = (TextView) mShowMore.findViewById(R.id.show_more_text); - mNewList = (LinearLayout) mPermsView.findViewById(R.id.new_perms_list); - mDangerousList = (LinearLayout) mPermsView.findViewById(R.id.dangerous_perms_list); - mNonDangerousList = (LinearLayout) mPermsView.findViewById(R.id.non_dangerous_perms_list); - mNoPermsView = mPermsView.findViewById(R.id.no_permissions); - - // Set up the LinearLayout that acts like a list item. - mShowMore.setClickable(true); - mShowMore.setOnClickListener(this); - mShowMore.setFocusable(true); - - // Pick up from framework resources instead. - mDefaultGrpLabel = mContext.getString(R.string.default_permission_group); - mPermFormat = mContext.getString(R.string.permissions_format); - mNewPermPrefix = mContext.getText(R.string.perms_new_perm_prefix); - mNormalIcon = mContext.getResources().getDrawable(R.drawable.ic_text_dot); - mDangerousIcon = mContext.getResources().getDrawable(R.drawable.ic_bullet_key_permission); - mShowMaxIcon = mContext.getResources().getDrawable(R.drawable.expander_close_holo_dark); - mShowMinIcon = mContext.getResources().getDrawable(R.drawable.expander_open_holo_dark); - - // Set permissions view - setPermissions(mPermsList); - return mPermsView; + 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; + } } - /** - * Utility method that concatenates two strings defined by mPermFormat. - * a null value is returned if both str1 and str2 are null, if one of the strings - * is null the other non null value is returned without formatting - * this is to placate initial error checks - */ - private CharSequence formatPermissions(CharSequence groupDesc, CharSequence permDesc, - boolean newPerms) { - if (permDesc == null) { - return groupDesc; - } - // Sometimes people write permission names with a trailing period; - // strip that if it appears. - int len = permDesc.length(); - if (len > 0 && permDesc.charAt(len-1) == '.') { - permDesc = (permDesc.toString()).substring(0, len-1); - } - if (newPerms) { - if (true) { - // If this is a new permission, format it appropriately. - SpannableStringBuilder builder = new SpannableStringBuilder(); - if (groupDesc != null) { - // The previous permissions go in front, with a newline - // separating them. - builder.append(groupDesc); - builder.append("\n"); - } - Parcel parcel = Parcel.obtain(); - TextUtils.writeToParcel(mNewPermPrefix, parcel, 0); - parcel.setDataPosition(0); - CharSequence newStr = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); - parcel.recycle(); - builder.append(newStr); - builder.append(permDesc); - return builder; - } else { - // If this is a new permission, format it appropriately. - SpannableStringBuilder builder = new SpannableStringBuilder(permDesc); - builder.insert(0, mNewPermPrefix); - if (groupDesc != null) { - // The previous permissions go in front, with a newline - // separating them. - builder.insert(0, "\n"); - builder.insert(0, groupDesc); - } - return builder; - } - } - if (groupDesc == null) { - return permDesc; + public int getPermissionCount(int which) { + int N = 0; + for (int i=0; i<mPermGroupsList.size(); i++) { + N += getPermissionList(mPermGroupsList.get(i), which).size(); } - // groupDesc and permDesc are non null - return String.format(mPermFormat, groupDesc, permDesc.toString()); + return N; } - private CharSequence getGroupLabel(String grpName) { - if (grpName == null) { - //return default label - return mDefaultGrpLabel; - } - CharSequence cachedLabel = mGroupLabelCache.get(grpName); - if (cachedLabel != null) { - return cachedLabel; - } - PermissionGroupInfo pgi; - try { - pgi = mPm.getPermissionGroupInfo(grpName, 0); - } catch (NameNotFoundException e) { - Log.i(TAG, "Invalid group name:" + grpName); - return null; + public View getPermissionsView() { + return getPermissionsView(WHICH_ALL); + } + + public View getPermissionsView(int which) { + mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + LinearLayout permsView = (LinearLayout) mInflater.inflate(R.layout.app_perms_summary, null); + LinearLayout displayList = (LinearLayout) permsView.findViewById(R.id.perms_list); + View noPermsView = permsView.findViewById(R.id.no_permissions); + + displayPermissions(mPermGroupsList, displayList, which); + if (displayList.getChildCount() <= 0) { + noPermsView.setVisibility(View.VISIBLE); } - CharSequence label = pgi.loadLabel(mPm).toString(); - mGroupLabelCache.put(grpName, label); - return label; + + return permsView; } /** * Utility method that displays permissions from a map containing group name and * list of permission descriptions. */ - private void displayPermissions(Map<String, CharSequence> permInfoMap, - LinearLayout permListView, boolean dangerous) { + private void displayPermissions(List<MyPermissionGroupInfo> groups, + LinearLayout permListView, int which) { permListView.removeAllViews(); - Set<String> permInfoStrSet = permInfoMap.keySet(); - for (String loopPermGrpInfoStr : permInfoStrSet) { - CharSequence grpLabel = getGroupLabel(loopPermGrpInfoStr); - //guaranteed that grpLabel wont be null since permissions without groups - //will belong to the default group - if(localLOGV) Log.i(TAG, "Adding view group:" + grpLabel + ", desc:" - + permInfoMap.get(loopPermGrpInfoStr)); - permListView.addView(getPermissionItemView(grpLabel, - permInfoMap.get(loopPermGrpInfoStr), dangerous)); + int spacing = (int)(8*mContext.getResources().getDisplayMetrics().density); + + for (int i=0; i<groups.size(); i++) { + MyPermissionGroupInfo grp = groups.get(i); + final List<MyPermissionInfo> perms = getPermissionList(grp, which); + for (int j=0; j<perms.size(); j++) { + MyPermissionInfo perm = perms.get(j); + View view = getPermissionItemView(grp, perm, j == 0, + which != WHICH_NEW ? mNewPermPrefix : null); + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + if (j == 0) { + lp.topMargin = spacing; + } + if (j == grp.mAllPermissions.size()-1) { + lp.bottomMargin = spacing; + } + if (permListView.getChildCount() == 0) { + lp.topMargin *= 2; + } + permListView.addView(view, lp); + } } } - private void displayNoPermissions() { - mNoPermsView.setVisibility(View.VISIBLE); + private PermissionItemView getPermissionItemView(MyPermissionGroupInfo grp, + MyPermissionInfo perm, boolean first, CharSequence newPermPrefix) { + return getPermissionItemView(mContext, mInflater, grp, perm, first, newPermPrefix); } - private View getPermissionItemView(CharSequence grpName, CharSequence permList, - boolean dangerous) { - return getPermissionItemView(mContext, mInflater, grpName, permList, - dangerous, dangerous ? mDangerousIcon : mNormalIcon); + private static PermissionItemView getPermissionItemView(Context context, LayoutInflater inflater, + MyPermissionGroupInfo grp, MyPermissionInfo perm, boolean first, + CharSequence newPermPrefix) { + PermissionItemView permView = (PermissionItemView)inflater.inflate( + R.layout.app_permission_item, null); + permView.setPermission(grp, perm, first, newPermPrefix); + return permView; } - private static View getPermissionItemView(Context context, LayoutInflater inflater, + private static View getPermissionItemViewOld(Context context, LayoutInflater inflater, CharSequence grpName, CharSequence permList, boolean dangerous, Drawable icon) { - View permView = inflater.inflate(R.layout.app_permission_item, null); + View permView = inflater.inflate(R.layout.app_permission_item_old, null); TextView permGrpView = (TextView) permView.findViewById(R.id.permission_group); TextView permDescView = (TextView) permView.findViewById(R.id.permission_list); @@ -444,41 +530,6 @@ public class AppSecurityPermissions implements View.OnClickListener { return permView; } - private void showPermissions() { - - switch(mCurrentState) { - case NO_PERMS: - displayNoPermissions(); - break; - - case DANGEROUS_ONLY: - displayPermissions(mNewMap, mNewList, true); - displayPermissions(mDangerousMap, mDangerousList, true); - break; - - case NORMAL_ONLY: - displayPermissions(mNewMap, mNewList, true); - displayPermissions(mNormalMap, mNonDangerousList, false); - break; - - case BOTH: - displayPermissions(mNewMap, mNewList, true); - displayPermissions(mDangerousMap, mDangerousList, true); - if (mExpanded) { - displayPermissions(mNormalMap, mNonDangerousList, false); - mShowMoreIcon.setImageDrawable(mShowMaxIcon); - mShowMoreText.setText(R.string.perms_hide); - mNonDangerousList.setVisibility(View.VISIBLE); - } else { - mShowMoreIcon.setImageDrawable(mShowMinIcon); - mShowMoreText.setText(R.string.perms_show_all); - mNonDangerousList.setVisibility(View.GONE); - } - mShowMore.setVisibility(View.VISIBLE); - break; - } - } - private boolean isDisplayablePermission(PermissionInfo pInfo, int newReqFlags, int existingReqFlags) { final int base = pInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE; @@ -496,79 +547,45 @@ public class AppSecurityPermissions implements View.OnClickListener { } return false; } - - /* - * Utility method that aggregates all permission descriptions categorized by group - * Say group1 has perm11, perm12, perm13, the group description will be - * perm11_Desc, perm12_Desc, perm13_Desc - */ - private void aggregateGroupDescs(Map<String, List<MyPermissionInfo> > map, - Map<String, CharSequence> retMap, boolean newPerms) { - if(map == null) { - return; + + private static class PermissionGroupInfoComparator implements Comparator<MyPermissionGroupInfo> { + private final Collator sCollator = Collator.getInstance(); + PermissionGroupInfoComparator() { } - if(retMap == null) { - return; - } - Set<String> grpNames = map.keySet(); - Iterator<String> grpNamesIter = grpNames.iterator(); - while(grpNamesIter.hasNext()) { - CharSequence grpDesc = null; - String grpNameKey = grpNamesIter.next(); - List<MyPermissionInfo> grpPermsList = map.get(grpNameKey); - if(grpPermsList == null) { - continue; - } - for(PermissionInfo permInfo: grpPermsList) { - CharSequence permDesc = permInfo.loadLabel(mPm); - grpDesc = formatPermissions(grpDesc, permDesc, newPerms); + 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; } - // Insert grpDesc into map - if(grpDesc != null) { - if(localLOGV) Log.i(TAG, "Group:"+grpNameKey+" description:"+grpDesc.toString()); - retMap.put(grpNameKey, grpDesc); + if (a.priority != b.priority) { + return a.priority > b.priority ? -1 : 1; } + return sCollator.compare(a.mLabel, b.mLabel); } } - private static class PermissionInfoComparator implements Comparator<PermissionInfo> { - private PackageManager mPm; + private static class PermissionInfoComparator implements Comparator<MyPermissionInfo> { private final Collator sCollator = Collator.getInstance(); - PermissionInfoComparator(PackageManager pm) { - mPm = pm; + PermissionInfoComparator() { } - public final int compare(PermissionInfo a, PermissionInfo b) { - CharSequence sa = a.loadLabel(mPm); - CharSequence sb = b.loadLabel(mPm); - return sCollator.compare(sa, sb); + public final int compare(MyPermissionInfo a, MyPermissionInfo b) { + return sCollator.compare(a.mLabel, b.mLabel); } } - + + private void addPermToList(List<MyPermissionInfo> permList, + MyPermissionInfo pInfo) { + if (pInfo.mLabel == null) { + pInfo.mLabel = pInfo.loadLabel(mPm); + } + int idx = Collections.binarySearch(permList, pInfo, mPermComparator); + if(localLOGV) Log.i(TAG, "idx="+idx+", list.size="+permList.size()); + if (idx < 0) { + idx = -idx-1; + permList.add(idx, pInfo); + } + } + private void setPermissions(List<MyPermissionInfo> permList) { - mGroupLabelCache = new HashMap<String, CharSequence>(); - //add the default label so that uncategorized permissions can go here - mGroupLabelCache.put(mDefaultGrpName, mDefaultGrpLabel); - - // Map containing group names and a list of permissions under that group - // that are new from the current install - mNewMap = new HashMap<String, CharSequence>(); - // Map containing group names and a list of permissions under that group - // categorized as dangerous - mDangerousMap = new HashMap<String, CharSequence>(); - // Map containing group names and a list of permissions under that group - // categorized as normal - mNormalMap = new HashMap<String, CharSequence>(); - - // Additional structures needed to ensure that permissions are unique under - // each group - Map<String, List<MyPermissionInfo>> newMap = - new HashMap<String, List<MyPermissionInfo>>(); - Map<String, List<MyPermissionInfo>> dangerousMap = - new HashMap<String, List<MyPermissionInfo>>(); - Map<String, List<MyPermissionInfo> > normalMap = - new HashMap<String, List<MyPermissionInfo>>(); - PermissionInfoComparator permComparator = new PermissionInfoComparator(mPm); - if (permList != null) { // First pass to group permissions for (MyPermissionInfo pInfo : permList) { @@ -577,51 +594,26 @@ public class AppSecurityPermissions implements View.OnClickListener { if(localLOGV) Log.i(TAG, "Permission:"+pInfo.name+" is not displayable"); continue; } - Map<String, List<MyPermissionInfo> > permInfoMap; - if (pInfo.mNew) { - permInfoMap = newMap; - } else if ((pInfo.protectionLevel&PermissionInfo.PROTECTION_MASK_BASE) - == PermissionInfo.PROTECTION_DANGEROUS) { - permInfoMap = dangerousMap; - } else { - permInfoMap = normalMap; - } - String grpName = (pInfo.group == null) ? mDefaultGrpName : pInfo.group; - if(localLOGV) Log.i(TAG, "Permission:"+pInfo.name+" belongs to group:"+grpName); - List<MyPermissionInfo> grpPermsList = permInfoMap.get(grpName); - if(grpPermsList == null) { - grpPermsList = new ArrayList<MyPermissionInfo>(); - permInfoMap.put(grpName, grpPermsList); - grpPermsList.add(pInfo); - } else { - int idx = Collections.binarySearch(grpPermsList, pInfo, permComparator); - if(localLOGV) Log.i(TAG, "idx="+idx+", list.size="+grpPermsList.size()); - if (idx < 0) { - idx = -idx-1; - grpPermsList.add(idx, pInfo); + MyPermissionGroupInfo group = mPermGroups.get(pInfo.group); + if (group != null) { + pInfo.mLabel = pInfo.loadLabel(mPm); + addPermToList(group.mAllPermissions, pInfo); + if (pInfo.mNew) { + addPermToList(group.mNewPermissions, pInfo); + } + if ((group.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { + addPermToList(group.mPersonalPermissions, pInfo); + } else { + addPermToList(group.mDevicePermissions, pInfo); } } } - // Second pass to actually form the descriptions - // Look at dangerous permissions first - aggregateGroupDescs(newMap, mNewMap, true); - aggregateGroupDescs(dangerousMap, mDangerousMap, false); - aggregateGroupDescs(normalMap, mNormalMap, false); } - mCurrentState = State.NO_PERMS; - if (mNewMap.size() > 0 || mDangerousMap.size() > 0) { - mCurrentState = (mNormalMap.size() > 0) ? State.BOTH : State.DANGEROUS_ONLY; - } else if(mNormalMap.size() > 0) { - mCurrentState = State.NORMAL_ONLY; + for (MyPermissionGroupInfo pgrp : mPermGroups.values()) { + pgrp.mLabel = pgrp.loadLabel(mPm); + mPermGroupsList.add(pgrp); } - if(localLOGV) Log.i(TAG, "mCurrentState=" + mCurrentState); - showPermissions(); - } - - public void onClick(View v) { - if(localLOGV) Log.i(TAG, "mExpanded="+mExpanded); - mExpanded = !mExpanded; - showPermissions(); + Collections.sort(mPermGroupsList, mPermGroupComparator); } } diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index de11fe957d3e..e5199f6fdf22 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -218,6 +218,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe * * @param hint the text to be displayed to the user * + * @see #getCompletionHint() + * * @attr ref android.R.styleable#AutoCompleteTextView_completionHint */ public void setCompletionHint(CharSequence hint) { @@ -237,7 +239,20 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mHintView = null; } } - + + /** + * Gets the optional hint text displayed at the bottom of the the matching list. + * + * @return The hint text, if any + * + * @see #setCompletionHint(CharSequence) + * + * @attr ref android.R.styleable#AutoCompleteTextView_completionHint + */ + public CharSequence getCompletionHint() { + return mHintText; + } + /** * <p>Returns the current width for the auto-complete drop down list. This can * be a fixed width, or {@link ViewGroup.LayoutParams#MATCH_PARENT} to fill the screen, or @@ -468,6 +483,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe * @return the minimum number of characters to type to show the drop down * * @see #setThreshold(int) + * + * @attr ref android.R.styleable#AutoCompleteTextView_completionThreshold */ public int getThreshold() { return mThreshold; diff --git a/core/java/android/widget/CalendarView.java b/core/java/android/widget/CalendarView.java index 2a74f6a5d797..b06da0672a16 100644 --- a/core/java/android/widget/CalendarView.java +++ b/core/java/android/widget/CalendarView.java @@ -421,6 +421,8 @@ public class CalendarView extends FrameLayout { * Sets the number of weeks to be shown. * * @param count The shown week count. + * + * @attr ref android.R.styleable#CalendarView_shownWeekCount */ public void setShownWeekCount(int count) { if (mShownWeekCount != count) { @@ -433,6 +435,8 @@ public class CalendarView extends FrameLayout { * Gets the number of weeks to be shown. * * @return The shown week count. + * + * @attr ref android.R.styleable#CalendarView_shownWeekCount */ public int getShownWeekCount() { return mShownWeekCount; @@ -442,6 +446,8 @@ public class CalendarView extends FrameLayout { * Sets the background color for the selected week. * * @param color The week background color. + * + * @attr ref android.R.styleable#CalendarView_selectedWeekBackgroundColor */ public void setSelectedWeekBackgroundColor(int color) { if (mSelectedWeekBackgroundColor != color) { @@ -460,6 +466,8 @@ public class CalendarView extends FrameLayout { * Gets the background color for the selected week. * * @return The week background color. + * + * @attr ref android.R.styleable#CalendarView_selectedWeekBackgroundColor */ public int getSelectedWeekBackgroundColor() { return mSelectedWeekBackgroundColor; @@ -469,6 +477,8 @@ public class CalendarView extends FrameLayout { * Sets the color for the dates of the focused month. * * @param color The focused month date color. + * + * @attr ref android.R.styleable#CalendarView_focusedMonthDateColor */ public void setFocusedMonthDateColor(int color) { if (mFocusedMonthDateColor != color) { @@ -487,6 +497,8 @@ public class CalendarView extends FrameLayout { * Gets the color for the dates in the focused month. * * @return The focused month date color. + * + * @attr ref android.R.styleable#CalendarView_focusedMonthDateColor */ public int getFocusedMonthDateColor() { return mFocusedMonthDateColor; @@ -496,6 +508,8 @@ public class CalendarView extends FrameLayout { * Sets the color for the dates of a not focused month. * * @param color A not focused month date color. + * + * @attr ref android.R.styleable#CalendarView_unfocusedMonthDateColor */ public void setUnfocusedMonthDateColor(int color) { if (mUnfocusedMonthDateColor != color) { @@ -514,6 +528,8 @@ public class CalendarView extends FrameLayout { * Gets the color for the dates in a not focused month. * * @return A not focused month date color. + * + * @attr ref android.R.styleable#CalendarView_unfocusedMonthDateColor */ public int getUnfocusedMonthDateColor() { return mFocusedMonthDateColor; @@ -523,6 +539,8 @@ public class CalendarView extends FrameLayout { * Sets the color for the week numbers. * * @param color The week number color. + * + * @attr ref android.R.styleable#CalendarView_weekNumberColor */ public void setWeekNumberColor(int color) { if (mWeekNumberColor != color) { @@ -537,6 +555,8 @@ public class CalendarView extends FrameLayout { * Gets the color for the week numbers. * * @return The week number color. + * + * @attr ref android.R.styleable#CalendarView_weekNumberColor */ public int getWeekNumberColor() { return mWeekNumberColor; @@ -546,6 +566,8 @@ public class CalendarView extends FrameLayout { * Sets the color for the separator line between weeks. * * @param color The week separator color. + * + * @attr ref android.R.styleable#CalendarView_weekSeparatorLineColor */ public void setWeekSeparatorLineColor(int color) { if (mWeekSeparatorLineColor != color) { @@ -558,6 +580,8 @@ public class CalendarView extends FrameLayout { * Gets the color for the separator line between weeks. * * @return The week separator color. + * + * @attr ref android.R.styleable#CalendarView_weekSeparatorLineColor */ public int getWeekSeparatorLineColor() { return mWeekSeparatorLineColor; @@ -568,6 +592,8 @@ public class CalendarView extends FrameLayout { * the end of the selected date. * * @param resourceId The vertical bar drawable resource id. + * + * @attr ref android.R.styleable#CalendarView_selectedDateVerticalBar */ public void setSelectedDateVerticalBar(int resourceId) { Drawable drawable = getResources().getDrawable(resourceId); @@ -579,6 +605,8 @@ public class CalendarView extends FrameLayout { * the end of the selected date. * * @param drawable The vertical bar drawable. + * + * @attr ref android.R.styleable#CalendarView_selectedDateVerticalBar */ public void setSelectedDateVerticalBar(Drawable drawable) { if (mSelectedDateVerticalBar != drawable) { @@ -607,6 +635,8 @@ public class CalendarView extends FrameLayout { * Sets the text appearance for the week day abbreviation of the calendar header. * * @param resourceId The text appearance resource id. + * + * @attr ref android.R.styleable#CalendarView_weekDayTextAppearance */ public void setWeekDayTextAppearance(int resourceId) { if (mWeekDayTextAppearanceResId != resourceId) { @@ -619,6 +649,8 @@ public class CalendarView extends FrameLayout { * Gets the text appearance for the week day abbreviation of the calendar header. * * @return The text appearance resource id. + * + * @attr ref android.R.styleable#CalendarView_weekDayTextAppearance */ public int getWeekDayTextAppearance() { return mWeekDayTextAppearanceResId; @@ -628,6 +660,8 @@ public class CalendarView extends FrameLayout { * Sets the text appearance for the calendar dates. * * @param resourceId The text appearance resource id. + * + * @attr ref android.R.styleable#CalendarView_dateTextAppearance */ public void setDateTextAppearance(int resourceId) { if (mDateTextAppearanceResId != resourceId) { @@ -641,6 +675,8 @@ public class CalendarView extends FrameLayout { * Gets the text appearance for the calendar dates. * * @return The text appearance resource id. + * + * @attr ref android.R.styleable#CalendarView_dateTextAppearance */ public int getDateTextAppearance() { return mDateTextAppearanceResId; @@ -683,6 +719,8 @@ public class CalendarView extends FrameLayout { * <p> * * @return The minimal supported date. + * + * @attr ref android.R.styleable#CalendarView_minDate */ public long getMinDate() { return mMinDate.getTimeInMillis(); @@ -694,6 +732,8 @@ public class CalendarView extends FrameLayout { * zone. * * @param minDate The minimal supported date. + * + * @attr ref android.R.styleable#CalendarView_minDate */ public void setMinDate(long minDate) { mTempDate.setTimeInMillis(minDate); @@ -731,6 +771,8 @@ public class CalendarView extends FrameLayout { * <p> * * @return The maximal supported date. + * + * @attr ref android.R.styleable#CalendarView_maxDate */ public long getMaxDate() { return mMaxDate.getTimeInMillis(); @@ -742,6 +784,8 @@ public class CalendarView extends FrameLayout { * zone. * * @param maxDate The maximal supported date. + * + * @attr ref android.R.styleable#CalendarView_maxDate */ public void setMaxDate(long maxDate) { mTempDate.setTimeInMillis(maxDate); @@ -767,6 +811,8 @@ public class CalendarView extends FrameLayout { * Sets whether to show the week number. * * @param showWeekNumber True to show the week number. + * + * @attr ref android.R.styleable#CalendarView_showWeekNumber */ public void setShowWeekNumber(boolean showWeekNumber) { if (mShowWeekNumber == showWeekNumber) { @@ -781,6 +827,8 @@ public class CalendarView extends FrameLayout { * Gets whether to show the week number. * * @return True if showing the week number. + * + * @attr ref android.R.styleable#CalendarView_showWeekNumber */ public boolean getShowWeekNumber() { return mShowWeekNumber; @@ -798,6 +846,8 @@ public class CalendarView extends FrameLayout { * @see Calendar#FRIDAY * @see Calendar#SATURDAY * @see Calendar#SUNDAY + * + * @attr ref android.R.styleable#CalendarView_firstDayOfWeek */ public int getFirstDayOfWeek() { return mFirstDayOfWeek; @@ -815,6 +865,8 @@ public class CalendarView extends FrameLayout { * @see Calendar#FRIDAY * @see Calendar#SATURDAY * @see Calendar#SUNDAY + * + * @attr ref android.R.styleable#CalendarView_firstDayOfWeek */ public void setFirstDayOfWeek(int firstDayOfWeek) { if (mFirstDayOfWeek == firstDayOfWeek) { diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index 233d892df5a6..278192cf0064 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -35,6 +35,8 @@ import android.view.accessibility.AccessibilityNodeInfo; * {@link android.widget.ListView#setChoiceMode(int) setChoiceMode} has been set to * something other than {@link android.widget.ListView#CHOICE_MODE_NONE CHOICE_MODE_NONE}. * + * @attr ref android.R.styleable#CheckedTextView_checked + * @attr ref android.R.styleable#CheckedTextView_checkMark */ public class CheckedTextView extends TextView implements Checkable { private boolean mChecked; @@ -100,6 +102,11 @@ public class CheckedTextView extends TextView implements Checkable { * when {@link #isChecked()} is true. * * @param resid The Drawable to use for the checkmark. + * + * @see #setCheckMarkDrawable(Drawable) + * @see #getCheckMarkDrawable() + * + * @attr ref android.R.styleable#CheckedTextView_checkMark */ public void setCheckMarkDrawable(int resid) { if (resid != 0 && resid == mCheckMarkResource) { @@ -119,6 +126,11 @@ public class CheckedTextView extends TextView implements Checkable { * Set the checkmark to a given Drawable. This will be drawn when {@link #isChecked()} is true. * * @param d The Drawable to use for the checkmark. + * + * @see #setCheckMarkDrawable(int) + * @see #getCheckMarkDrawable() + * + * @attr ref android.R.styleable#CheckedTextView_checkMark */ public void setCheckMarkDrawable(Drawable d) { if (mCheckMarkDrawable != null) { @@ -142,6 +154,20 @@ public class CheckedTextView extends TextView implements Checkable { resolvePadding(); } + /** + * Gets the checkmark drawable + * + * @return The drawable use to represent the checkmark, if any. + * + * @see #setCheckMarkDrawable(Drawable) + * @see #setCheckMarkDrawable(int) + * + * @attr ref android.R.styleable#CheckedTextView_checkMark + */ + public Drawable getCheckMarkDrawable() { + return mCheckMarkDrawable; + } + @Override public void onPaddingChanged(int layoutDirection) { int newPadding = (mCheckMarkDrawable != null) ? @@ -230,6 +256,7 @@ public class CheckedTextView extends TextView implements Checkable { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); info.setClassName(CheckedTextView.class.getName()); + info.setCheckable(true); info.setChecked(mChecked); } } diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index a18b64c41577..4b7ec9ab2c3e 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -1223,8 +1223,6 @@ public class Editor { private void drawHardwareAccelerated(Canvas canvas, Layout layout, Path highlight, Paint highlightPaint, int cursorOffsetVertical) { - final int width = mTextView.getWidth(); - final long lineRange = layout.getLineRangeForDraw(canvas); int firstLine = TextUtils.unpackRangeStartFromLong(lineRange); int lastLine = TextUtils.unpackRangeEndFromLong(lineRange); @@ -1243,10 +1241,6 @@ public class Editor { int[] blockIndices = dynamicLayout.getBlockIndices(); final int numberOfBlocks = dynamicLayout.getNumberOfBlocks(); - final int scrollX = mTextView.getScrollX(); - final int scrollY = mTextView.getScrollY(); - canvas.translate(scrollX, scrollY); - int endOfPreviousBlock = -1; int searchStartIndex = 0; for (int i = 0; i < numberOfBlocks; i++) { @@ -1274,34 +1268,43 @@ public class Editor { final int blockBeginLine = endOfPreviousBlock + 1; final int top = layout.getLineTop(blockBeginLine); final int bottom = layout.getLineBottom(blockEndLine); + int left = 0; + int right = mTextView.getWidth(); + if (mTextView.getHorizontallyScrolling()) { + float min = Float.MAX_VALUE; + float max = Float.MIN_VALUE; + for (int line = blockBeginLine; line <= blockEndLine; line++) { + min = Math.min(min, layout.getLineLeft(line)); + max = Math.max(max, layout.getLineRight(line)); + } + left = (int) min; + right = (int) (max + 0.5f); + } final HardwareCanvas hardwareCanvas = blockDisplayList.start(); try { - hardwareCanvas.setViewport(width, bottom - top); + // Tighten the bounds of the viewport to the actual text size + hardwareCanvas.setViewport(right - left, bottom - top); // The dirty rect should always be null for a display list hardwareCanvas.onPreDraw(null); // drawText is always relative to TextView's origin, this translation brings - // this range of text back to the top of the viewport - hardwareCanvas.translate(-scrollX, -top); + // this range of text back to the top left corner of the viewport + hardwareCanvas.translate(-left, -top); layout.drawText(hardwareCanvas, blockBeginLine, blockEndLine); - hardwareCanvas.translate(scrollX, top); + // No need to untranslate, previous context is popped after drawDisplayList } finally { hardwareCanvas.onPostDraw(); blockDisplayList.end(); - blockDisplayList.setLeftTopRightBottom(0, top, width, bottom); + blockDisplayList.setLeftTopRightBottom(left, top, right, bottom); // Same as drawDisplayList below, handled by our TextView's parent blockDisplayList.setClipChildren(false); } } - // TODO When View.USE_DISPLAY_LIST_PROPERTIES is the only code path, the - // width and height parameters should be removed and the bounds set above in - // setLeftTopRightBottom should be used instead for quick rejection. ((HardwareCanvas) canvas).drawDisplayList(blockDisplayList, null, 0 /* no child clipping, our TextView parent enforces it */); + endOfPreviousBlock = blockEndLine; - - canvas.translate(-scrollX, -scrollY); } } else { // Boring layout is used for empty and hint text diff --git a/core/java/android/widget/GridLayout.java b/core/java/android/widget/GridLayout.java index e17e0489ebe7..cb10d0a8fc28 100644 --- a/core/java/android/widget/GridLayout.java +++ b/core/java/android/widget/GridLayout.java @@ -581,10 +581,10 @@ public class GridLayout extends ViewGroup { } private int getDefaultMargin(View c, boolean isAtEdge, boolean horizontal, boolean leading) { - return isAtEdge ? DEFAULT_CONTAINER_MARGIN : getDefaultMargin(c, horizontal, leading); + return /*isAtEdge ? DEFAULT_CONTAINER_MARGIN :*/ getDefaultMargin(c, horizontal, leading); } - private int getDefaultMarginValue(View c, LayoutParams p, boolean horizontal, boolean leading) { + private int getDefaultMargin(View c, LayoutParams p, boolean horizontal, boolean leading) { if (!useDefaultMargins) { return 0; } @@ -602,7 +602,7 @@ public class GridLayout extends ViewGroup { int margin = horizontal ? (leading ? lp.leftMargin : lp.rightMargin) : (leading ? lp.topMargin : lp.bottomMargin); - return margin == UNDEFINED ? getDefaultMarginValue(view, lp, horizontal, leading) : margin; + return margin == UNDEFINED ? getDefaultMargin(view, lp, horizontal, leading) : margin; } private int getMargin(View view, boolean horizontal, boolean leading) { @@ -777,11 +777,12 @@ public class GridLayout extends ViewGroup { LayoutParams lp = new LayoutParams(); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); + Insets insets = getLayoutMode() == OPTICAL_BOUNDS ? c.getOpticalInsets() : Insets.NONE; lp.setMargins( - getMargin1(c, true, true), - getMargin1(c, false, true), - getMargin1(c, true, false), - getMargin1(c, false, false)); + getMargin1(c, true, true) - insets.left, + getMargin1(c, false, true) - insets.top, + getMargin1(c, true, false) - insets.right, + getMargin1(c, false, false) - insets.bottom); lp.onDebugDraw(c, canvas); } } @@ -946,7 +947,12 @@ public class GridLayout extends ViewGroup { } private int getMeasurement(View c, boolean horizontal) { - return horizontal ? c.getMeasuredWidth() : c.getMeasuredHeight(); + int result = horizontal ? c.getMeasuredWidth() : c.getMeasuredHeight(); + if (getLayoutMode() == OPTICAL_BOUNDS) { + Insets insets = c.getOpticalInsets(); + return result - (horizontal ? insets.left + insets.right : insets.top + insets.bottom); + } + return result; } final int getMeasurementIncludingMargin(View c, boolean horizontal) { @@ -1052,6 +1058,14 @@ public class GridLayout extends ViewGroup { targetWidth - width - paddingRight - rightMargin - dx; int cy = paddingTop + y1 + gravityOffsetY + alignmentOffsetY + topMargin; + boolean useLayoutBounds = getLayoutMode() == OPTICAL_BOUNDS; + if (useLayoutBounds) { + Insets insets = c.getOpticalInsets(); + cx -= insets.left; + cy -= insets.top; + width += (insets.left + insets.right); + height += (insets.top + insets.bottom); + } if (width != c.getMeasuredWidth() || height != c.getMeasuredHeight()) { c.measure(makeMeasureSpec(width, EXACTLY), makeMeasureSpec(height, EXACTLY)); } @@ -2135,21 +2149,8 @@ public class GridLayout extends ViewGroup { return before + after; } - private int getAlignmentValue(GridLayout gl, View c, int size, Alignment a, boolean horiz) { - boolean useLayoutBounds = gl.getLayoutMode() == LAYOUT_BOUNDS; - if (!useLayoutBounds) { - return a.getAlignmentValue(c, size); - } else { - Insets insets = c.getLayoutInsets(); - int leadingInset = horiz ? insets.left : insets.top; // RTL? - int trailingInset = horiz ? insets.right : insets.bottom; // RTL? - int totalInset = leadingInset + trailingInset; - return leadingInset + a.getAlignmentValue(c, size - totalInset); - } - } - protected int getOffset(GridLayout gl, View c, Alignment a, int size, boolean horizontal) { - return before - getAlignmentValue(gl, c, size, a, horizontal); + return before - a.getAlignmentValue(c, size, gl.getLayoutMode()); } protected final void include(GridLayout gl, View c, Spec spec, Axis axis) { @@ -2158,7 +2159,7 @@ public class GridLayout extends ViewGroup { int size = gl.getMeasurementIncludingMargin(c, horizontal); Alignment alignment = gl.getAlignment(spec.alignment, horizontal); // todo test this works correctly when the returned value is UNDEFINED - int before = getAlignmentValue(gl, c, size, alignment, horizontal); + int before = alignment.getAlignmentValue(c, size, gl.getLayoutMode()); include(before, size - before); } @@ -2441,9 +2442,10 @@ public class GridLayout extends ViewGroup { * * @param view the view to which this alignment should be applied * @param viewSize the measured size of the view + * @param mode the basis of alignment: CLIP or OPTICAL * @return the alignment value */ - abstract int getAlignmentValue(View view, int viewSize); + abstract int getAlignmentValue(View view, int viewSize, int mode); /** * Returns the size of the view specified by this alignment. @@ -2473,7 +2475,7 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { + public int getAlignmentValue(View view, int viewSize, int mode) { return UNDEFINED; } }; @@ -2489,7 +2491,7 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { + public int getAlignmentValue(View view, int viewSize, int mode) { return 0; } }; @@ -2505,7 +2507,7 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { + public int getAlignmentValue(View view, int viewSize, int mode) { return viewSize; } }; @@ -2542,8 +2544,8 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { - return (!view.isLayoutRtl() ? ltr : rtl).getAlignmentValue(view, viewSize); + public int getAlignmentValue(View view, int viewSize, int mode) { + return (!view.isLayoutRtl() ? ltr : rtl).getAlignmentValue(view, viewSize, mode); } }; } @@ -2572,7 +2574,7 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { + public int getAlignmentValue(View view, int viewSize, int mode) { return viewSize >> 1; } }; @@ -2591,9 +2593,16 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { + public int getAlignmentValue(View view, int viewSize, int mode) { int baseline = view.getBaseline(); - return (baseline == -1) ? UNDEFINED : baseline; + if (baseline == -1) { + return UNDEFINED; + } else { + if (mode == OPTICAL_BOUNDS) { + return baseline - view.getOpticalInsets().top; + } + return baseline; + } } @Override @@ -2644,7 +2653,7 @@ public class GridLayout extends ViewGroup { } @Override - public int getAlignmentValue(View view, int viewSize) { + public int getAlignmentValue(View view, int viewSize, int mode) { return UNDEFINED; } diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java index c2559a506c28..1986450d8958 100644 --- a/core/java/android/widget/HorizontalScrollView.java +++ b/core/java/android/widget/HorizontalScrollView.java @@ -536,10 +536,15 @@ public class HorizontalScrollView extends FrameLayout { switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { - mIsBeingDragged = getChildCount() != 0; - if (!mIsBeingDragged) { + if (getChildCount() == 0) { return false; } + if ((mIsBeingDragged = !mScroller.isFinished())) { + final ViewParent parent = getParent(); + if (parent != null) { + parent.requestDisallowInterceptTouchEvent(true); + } + } /* * If being flinged and user touches, stop the fling. isFinished @@ -555,11 +560,23 @@ public class HorizontalScrollView extends FrameLayout { break; } case MotionEvent.ACTION_MOVE: + final int activePointerIndex = ev.findPointerIndex(mActivePointerId); + final int x = (int) ev.getX(activePointerIndex); + int deltaX = mLastMotionX - x; + if (!mIsBeingDragged && Math.abs(deltaX) > mTouchSlop) { + final ViewParent parent = getParent(); + if (parent != null) { + parent.requestDisallowInterceptTouchEvent(true); + } + mIsBeingDragged = true; + if (deltaX > 0) { + deltaX -= mTouchSlop; + } else { + deltaX += mTouchSlop; + } + } if (mIsBeingDragged) { // Scroll to follow the motion event - final int activePointerIndex = ev.findPointerIndex(mActivePointerId); - final int x = (int) ev.getX(activePointerIndex); - final int deltaX = (int) (mLastMotionX - x); mLastMotionX = x; final int oldX = mScrollX; diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 7593bffc132a..cf28da4d0bdc 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -193,6 +193,9 @@ public class ImageView extends View { } } + /** + * @hide + */ @Override public int getResolvedLayoutDirection(Drawable dr) { return (dr == mDrawable) ? diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java index 5ed005f813bf..2391898dfa3d 100644 --- a/core/java/android/widget/LinearLayout.java +++ b/core/java/android/widget/LinearLayout.java @@ -867,7 +867,7 @@ public class LinearLayout extends ViewGroup { // We have no limit, so make all weighted views as tall as the largest child. // Children will have already been measured once. - if (useLargestChild && widthMode == MeasureSpec.UNSPECIFIED) { + if (useLargestChild && heightMode != MeasureSpec.EXACTLY) { for (int i = 0; i < count; i++) { final View child = getVirtualChildAt(i); @@ -1283,7 +1283,7 @@ public class LinearLayout extends ViewGroup { // We have no limit, so make all weighted views as wide as the largest child. // Children will have already been measured once. - if (useLargestChild && widthMode == MeasureSpec.UNSPECIFIED) { + if (useLargestChild && widthMode != MeasureSpec.EXACTLY) { for (int i = 0; i < count; i++) { final View child = getVirtualChildAt(i); diff --git a/core/java/android/widget/OverScroller.java b/core/java/android/widget/OverScroller.java index 6aee5a07e030..1c72a0d08a03 100644 --- a/core/java/android/widget/OverScroller.java +++ b/core/java/android/widget/OverScroller.java @@ -35,7 +35,7 @@ public class OverScroller { private final SplineOverScroller mScrollerX; private final SplineOverScroller mScrollerY; - private final Interpolator mInterpolator; + private Interpolator mInterpolator; private final boolean mFlywheel; @@ -113,6 +113,10 @@ public class OverScroller { this(context, interpolator, flywheel); } + void setInterpolator(Interpolator interpolator) { + mInterpolator = interpolator; + } + /** * The amount of friction applied to flings. The default value * is {@link ViewConfiguration#getScrollFriction}. diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index 0b49404d6e90..eb8d0ac50033 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -967,6 +967,9 @@ public class ProgressBar extends View { } } + /** + * @hide + */ @Override public int getResolvedLayoutDirection(Drawable who) { return (who == mProgressDrawable || who == mIndeterminateDrawable) ? diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 214775ac98f9..56c4bd85a27e 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -22,12 +22,16 @@ import android.appwidget.AppWidgetHostView; import android.content.Context; import android.content.Intent; import android.content.IntentSender; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -87,7 +91,32 @@ public class RemoteViews implements Parcelable, Filter { */ private MemoryUsageCounter mMemoryUsageCounter; - + /** + * Maps bitmaps to unique indicies to avoid Bitmap duplication. + */ + private BitmapCache mBitmapCache; + + /** + * Indicates whether or not this RemoteViews object is contained as a child of any other + * RemoteViews. + */ + private boolean mIsRoot = true; + + /** + * Constants to whether or not this RemoteViews is composed of a landscape and portrait + * RemoteViews. + */ + private static final int MODE_NORMAL = 0; + private static final int MODE_HAS_LANDSCAPE_AND_PORTRAIT = 1; + + /** + * Used in conjunction with the special constructor + * {@link #RemoteViews(RemoteViews, RemoteViews)} to keep track of the landscape and portrait + * RemoteViews. + */ + private RemoteViews mLandscape = null; + private RemoteViews mPortrait = null; + /** * This flag indicates whether this RemoteViews object is being created from a * RemoteViewsService for use as a child of a widget collection. This flag is used @@ -163,6 +192,10 @@ public class RemoteViews implements Parcelable, Filter { } return true; } + + public void setBitmapCache(BitmapCache bitmapCache) { + // Do nothing + } } private class SetEmptyView extends Action { @@ -460,7 +493,14 @@ public class RemoteViews implements Parcelable, Filter { if (mIsWidgetCollectionChild) { Log.e("RemoteViews", "Cannot setOnClickPendingIntent for collection item " + "(id: " + viewId + ")"); - // TODO: return; We'll let this slide until apps are up to date. + ApplicationInfo appInfo = root.getContext().getApplicationInfo(); + + // We let this slide for HC and ICS so as to not break compatibility. It should have + // been disabled from the outset, but was left open by accident. + if (appInfo != null && + appInfo.targetSdkVersion >= Build.VERSION_CODES.JELLY_BEAN) { + return; + } } if (target != null) { @@ -643,6 +683,112 @@ public class RemoteViews implements Parcelable, Filter { } } + private static class BitmapCache { + ArrayList<Bitmap> mBitmaps; + + public BitmapCache() { + mBitmaps = new ArrayList<Bitmap>(); + } + + public BitmapCache(Parcel source) { + int count = source.readInt(); + mBitmaps = new ArrayList<Bitmap>(); + for (int i = 0; i < count; i++) { + Bitmap b = Bitmap.CREATOR.createFromParcel(source); + mBitmaps.add(b); + } + } + + public int getBitmapId(Bitmap b) { + if (b == null) { + return -1; + } else { + if (mBitmaps.contains(b)) { + return mBitmaps.indexOf(b); + } else { + mBitmaps.add(b); + return (mBitmaps.size() - 1); + } + } + } + + public Bitmap getBitmapForId(int id) { + if (id == -1 || id >= mBitmaps.size()) { + return null; + } else { + return mBitmaps.get(id); + } + } + + public void writeBitmapsToParcel(Parcel dest, int flags) { + int count = mBitmaps.size(); + dest.writeInt(count); + for (int i = 0; i < count; i++) { + mBitmaps.get(i).writeToParcel(dest, flags); + } + } + + public void assimilate(BitmapCache bitmapCache) { + ArrayList<Bitmap> bitmapsToBeAdded = bitmapCache.mBitmaps; + int count = bitmapsToBeAdded.size(); + for (int i = 0; i < count; i++) { + Bitmap b = bitmapsToBeAdded.get(i); + if (!mBitmaps.contains(b)) { + mBitmaps.add(b); + } + } + } + + public void addBitmapMemory(MemoryUsageCounter memoryCounter) { + for (int i = 0; i < mBitmaps.size(); i++) { + memoryCounter.addBitmapMemory(mBitmaps.get(i)); + } + } + } + + private class BitmapReflectionAction extends Action { + int bitmapId; + int viewId; + Bitmap bitmap; + String methodName; + + BitmapReflectionAction(int viewId, String methodName, Bitmap bitmap) { + this.bitmap = bitmap; + this.viewId = viewId; + this.methodName = methodName; + bitmapId = mBitmapCache.getBitmapId(bitmap); + } + + BitmapReflectionAction(Parcel in) { + viewId = in.readInt(); + methodName = in.readString(); + bitmapId = in.readInt(); + bitmap = mBitmapCache.getBitmapForId(bitmapId); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(TAG); + dest.writeInt(viewId); + dest.writeString(methodName); + dest.writeInt(bitmapId); + } + + @Override + public void apply(View root, ViewGroup rootParent) throws ActionException { + ReflectionAction ra = new ReflectionAction(viewId, methodName, ReflectionAction.BITMAP, + bitmap); + ra.apply(root, rootParent); + } + + @Override + public void setBitmapCache(BitmapCache bitmapCache) { + bitmapId = bitmapCache.getBitmapId(bitmap); + } + + public final static int TAG = 12; + } + /** * Base class for the reflection actions. */ @@ -894,24 +1040,7 @@ public class RemoteViews implements Parcelable, Filter { case BITMAP: if (this.value != null) { final Bitmap b = (Bitmap) this.value; - final Bitmap.Config c = b.getConfig(); - // If we don't know, be pessimistic and assume 4 - int bpp = 4; - if (c != null) { - switch (c) { - case ALPHA_8: - bpp = 1; - break; - case RGB_565: - case ARGB_4444: - bpp = 2; - break; - case ARGB_8888: - bpp = 4; - break; - } - } - counter.bitmapIncrement(b.getWidth() * b.getHeight() * bpp); + counter.addBitmapMemory(b); } break; default: @@ -920,6 +1049,16 @@ public class RemoteViews implements Parcelable, Filter { } } + private void configureRemoteViewsAsChild(RemoteViews rv) { + mBitmapCache.assimilate(rv.mBitmapCache); + rv.setBitmapCache(mBitmapCache); + rv.setNotRoot(); + } + + void setNotRoot() { + mIsRoot = false; + } + /** * Equivalent to calling {@link ViewGroup#addView(View)} after inflating the * given {@link RemoteViews}, or calling {@link ViewGroup#removeAllViews()} @@ -929,17 +1068,31 @@ public class RemoteViews implements Parcelable, Filter { public ViewGroupAction(int viewId, RemoteViews nestedViews) { this.viewId = viewId; this.nestedViews = nestedViews; + if (nestedViews != null) { + configureRemoteViewsAsChild(nestedViews); + } } - public ViewGroupAction(Parcel parcel) { + public ViewGroupAction(Parcel parcel, BitmapCache bitmapCache) { viewId = parcel.readInt(); - nestedViews = parcel.readParcelable(null); + boolean nestedViewsNull = parcel.readInt() == 0; + if (!nestedViewsNull) { + nestedViews = new RemoteViews(parcel, bitmapCache); + } else { + nestedViews = null; + } } public void writeToParcel(Parcel dest, int flags) { dest.writeInt(TAG); dest.writeInt(viewId); - dest.writeParcelable(nestedViews, 0 /* no flags */); + if (nestedViews != null) { + dest.writeInt(1); + nestedViews.writeToParcel(dest, flags); + } else { + // signifies null + dest.writeInt(0); + } } @Override @@ -959,7 +1112,14 @@ public class RemoteViews implements Parcelable, Filter { @Override public void updateMemoryUsageEstimate(MemoryUsageCounter counter) { if (nestedViews != null) { - counter.bitmapIncrement(nestedViews.estimateBitmapMemoryUsage()); + counter.increment(nestedViews.estimateMemoryUsage()); + } + } + + @Override + public void setBitmapCache(BitmapCache bitmapCache) { + if (nestedViews != null) { + nestedViews.setBitmapCache(bitmapCache); } } @@ -1027,18 +1187,39 @@ public class RemoteViews implements Parcelable, Filter { */ private class MemoryUsageCounter { public void clear() { - mBitmapHeapMemoryUsage = 0; + mMemoryUsage = 0; } - public void bitmapIncrement(int numBytes) { - mBitmapHeapMemoryUsage += numBytes; + public void increment(int numBytes) { + mMemoryUsage += numBytes; } - public int getBitmapHeapMemoryUsage() { - return mBitmapHeapMemoryUsage; + public int getMemoryUsage() { + return mMemoryUsage; } - int mBitmapHeapMemoryUsage; + public void addBitmapMemory(Bitmap b) { + final Bitmap.Config c = b.getConfig(); + // If we don't know, be pessimistic and assume 4 + int bpp = 4; + if (c != null) { + switch (c) { + case ALPHA_8: + bpp = 1; + break; + case RGB_565: + case ARGB_4444: + bpp = 2; + break; + case ARGB_8888: + bpp = 4; + break; + } + } + increment(b.getWidth() * b.getHeight() * bpp); + } + + int mMemoryUsage; } /** @@ -1051,9 +1232,44 @@ public class RemoteViews implements Parcelable, Filter { public RemoteViews(String packageName, int layoutId) { mPackage = packageName; mLayoutId = layoutId; + mBitmapCache = new BitmapCache(); + + // setup the memory usage statistics + mMemoryUsageCounter = new MemoryUsageCounter(); + recalculateMemoryUsage(); + } + + private boolean hasLandscapeAndPortraitLayouts() { + return (mLandscape != null) && (mPortrait != null); + } + + /** + * Create a new RemoteViews object that will inflate as the specified + * landspace or portrait RemoteViews, depending on the current configuration. + * + * @param landscape The RemoteViews to inflate in landscape configuration + * @param portrait The RemoteViews to inflate in portrait configuration + */ + public RemoteViews(RemoteViews landscape, RemoteViews portrait) { + if (landscape == null || portrait == null) { + throw new RuntimeException("Both RemoteViews must be non-null"); + } + if (landscape.getPackage().compareTo(portrait.getPackage()) != 0) { + throw new RuntimeException("Both RemoteViews must share the same package"); + } + mPackage = portrait.getPackage(); + mLayoutId = portrait.getLayoutId(); + + mLandscape = landscape; + mPortrait = portrait; // setup the memory usage statistics mMemoryUsageCounter = new MemoryUsageCounter(); + + mBitmapCache = new BitmapCache(); + configureRemoteViewsAsChild(landscape); + configureRemoteViewsAsChild(portrait); + recalculateMemoryUsage(); } @@ -1063,50 +1279,75 @@ public class RemoteViews implements Parcelable, Filter { * @param parcel */ public RemoteViews(Parcel parcel) { - mPackage = parcel.readString(); - mLayoutId = parcel.readInt(); - mIsWidgetCollectionChild = parcel.readInt() == 1 ? true : false; + this(parcel, null); + } - int count = parcel.readInt(); - if (count > 0) { - mActions = new ArrayList<Action>(count); - for (int i=0; i<count; i++) { - int tag = parcel.readInt(); - switch (tag) { - case SetOnClickPendingIntent.TAG: - mActions.add(new SetOnClickPendingIntent(parcel)); - break; - case SetDrawableParameters.TAG: - mActions.add(new SetDrawableParameters(parcel)); - break; - case ReflectionAction.TAG: - mActions.add(new ReflectionAction(parcel)); - break; - case ViewGroupAction.TAG: - mActions.add(new ViewGroupAction(parcel)); - break; - case ReflectionActionWithoutParams.TAG: - mActions.add(new ReflectionActionWithoutParams(parcel)); - break; - case SetEmptyView.TAG: - mActions.add(new SetEmptyView(parcel)); - break; - case SetPendingIntentTemplate.TAG: - mActions.add(new SetPendingIntentTemplate(parcel)); - break; - case SetOnClickFillInIntent.TAG: - mActions.add(new SetOnClickFillInIntent(parcel)); - break; - case SetRemoteViewsAdapterIntent.TAG: - mActions.add(new SetRemoteViewsAdapterIntent(parcel)); - break; - case TextViewDrawableAction.TAG: - mActions.add(new TextViewDrawableAction(parcel)); - break; - default: - throw new ActionException("Tag " + tag + " not found"); + private RemoteViews(Parcel parcel, BitmapCache bitmapCache) { + int mode = parcel.readInt(); + + // We only store a bitmap cache in the root of the RemoteViews. + if (bitmapCache == null) { + mBitmapCache = new BitmapCache(parcel); + } else { + setBitmapCache(bitmapCache); + setNotRoot(); + } + + if (mode == MODE_NORMAL) { + mPackage = parcel.readString(); + mLayoutId = parcel.readInt(); + mIsWidgetCollectionChild = parcel.readInt() == 1 ? true : false; + + int count = parcel.readInt(); + if (count > 0) { + mActions = new ArrayList<Action>(count); + for (int i=0; i<count; i++) { + int tag = parcel.readInt(); + switch (tag) { + case SetOnClickPendingIntent.TAG: + mActions.add(new SetOnClickPendingIntent(parcel)); + break; + case SetDrawableParameters.TAG: + mActions.add(new SetDrawableParameters(parcel)); + break; + case ReflectionAction.TAG: + mActions.add(new ReflectionAction(parcel)); + break; + case ViewGroupAction.TAG: + mActions.add(new ViewGroupAction(parcel, mBitmapCache)); + break; + case ReflectionActionWithoutParams.TAG: + mActions.add(new ReflectionActionWithoutParams(parcel)); + break; + case SetEmptyView.TAG: + mActions.add(new SetEmptyView(parcel)); + break; + case SetPendingIntentTemplate.TAG: + mActions.add(new SetPendingIntentTemplate(parcel)); + break; + case SetOnClickFillInIntent.TAG: + mActions.add(new SetOnClickFillInIntent(parcel)); + break; + case SetRemoteViewsAdapterIntent.TAG: + mActions.add(new SetRemoteViewsAdapterIntent(parcel)); + break; + case TextViewDrawableAction.TAG: + mActions.add(new TextViewDrawableAction(parcel)); + break; + case BitmapReflectionAction.TAG: + mActions.add(new BitmapReflectionAction(parcel)); + break; + default: + throw new ActionException("Tag " + tag + " not found"); + } } } + } else { + // MODE_HAS_LANDSCAPE_AND_PORTRAIT + mLandscape = new RemoteViews(parcel, mBitmapCache); + mPortrait = new RemoteViews(parcel, mBitmapCache); + mPackage = mPortrait.getPackage(); + mLayoutId = mPortrait.getLayoutId(); } // setup the memory usage statistics @@ -1116,11 +1357,18 @@ public class RemoteViews implements Parcelable, Filter { @Override public RemoteViews clone() { - final RemoteViews that = new RemoteViews(mPackage, mLayoutId); - if (mActions != null) { - that.mActions = (ArrayList<Action>)mActions.clone(); - } + RemoteViews that; + if (!hasLandscapeAndPortraitLayouts()) { + that = new RemoteViews(mPackage, mLayoutId); + if (mActions != null) { + that.mActions = (ArrayList<Action>)mActions.clone(); + } + } else { + RemoteViews land = mLandscape.clone(); + RemoteViews port = mPortrait.clone(); + that = new RemoteViews(land, port); + } // update the memory usage stats of the cloned RemoteViews that.recalculateMemoryUsage(); return that; @@ -1130,6 +1378,13 @@ public class RemoteViews implements Parcelable, Filter { return mPackage; } + /** + * Reutrns the layout id of the root layout associated with this RemoteViews. In the case + * that the RemoteViews has both a landscape and portrait root, this will return the layout + * id associated with the portrait layout. + * + * @return the layout id. + */ public int getLayoutId() { return mLayoutId; } @@ -1151,20 +1406,47 @@ public class RemoteViews implements Parcelable, Filter { private void recalculateMemoryUsage() { mMemoryUsageCounter.clear(); - // Accumulate the memory usage for each action - if (mActions != null) { - final int count = mActions.size(); - for (int i= 0; i < count; ++i) { - mActions.get(i).updateMemoryUsageEstimate(mMemoryUsageCounter); + if (!hasLandscapeAndPortraitLayouts()) { + // Accumulate the memory usage for each action + if (mActions != null) { + final int count = mActions.size(); + for (int i= 0; i < count; ++i) { + mActions.get(i).updateMemoryUsageEstimate(mMemoryUsageCounter); + } + } + if (mIsRoot) { + mBitmapCache.addBitmapMemory(mMemoryUsageCounter); + } + } else { + mMemoryUsageCounter.increment(mLandscape.estimateMemoryUsage()); + mMemoryUsageCounter.increment(mPortrait.estimateMemoryUsage()); + mBitmapCache.addBitmapMemory(mMemoryUsageCounter); + } + } + + /** + * Recursively sets BitmapCache in the hierarchy and update the bitmap ids. + */ + private void setBitmapCache(BitmapCache bitmapCache) { + mBitmapCache = bitmapCache; + if (!hasLandscapeAndPortraitLayouts()) { + if (mActions != null) { + final int count = mActions.size(); + for (int i= 0; i < count; ++i) { + mActions.get(i).setBitmapCache(bitmapCache); + } } + } else { + mLandscape.setBitmapCache(bitmapCache); + mPortrait.setBitmapCache(bitmapCache); } } /** * Returns an estimate of the bitmap heap memory usage for this RemoteViews. */ - int estimateBitmapMemoryUsage() { - return mMemoryUsageCounter.getBitmapHeapMemoryUsage(); + int estimateMemoryUsage() { + return mMemoryUsageCounter.getMemoryUsage(); } /** @@ -1173,6 +1455,11 @@ public class RemoteViews implements Parcelable, Filter { * @param a The action to add */ private void addAction(Action a) { + if (hasLandscapeAndPortraitLayouts()) { + throw new RuntimeException("RemoteViews specifying separate landscape and portrait" + + " layouts cannot be modified. Instead, fully configure the landscape and" + + " portrait layouts individually before constructing the combined layout."); + } if (mActions == null) { mActions = new ArrayList<Action>(); } @@ -1269,15 +1556,13 @@ public class RemoteViews implements Parcelable, Filter { } /** - * Equivalent to calling {@link - * TextView#setCompoundDrawablesRelativeWithIntrinsicBounds(int, int, int, int)}. - * * @param viewId The id of the view whose text should change - * @param start The id of a drawable to place before the text (relative to the + * @param start The id of a drawable to place before the text (relative to the * layout direction), or 0 * @param top The id of a drawable to place above the text, or 0 * @param end The id of a drawable to place after the text, or 0 - * @param bottom The id of a drawable to place below the text, or 0 + * @param bottom The id of a drawable to place below the text, or 0 + * @hide */ public void setTextViewCompoundDrawablesRelative(int viewId, int start, int top, int end, int bottom) { addAction(new TextViewDrawableAction(viewId, true, start, top, end, bottom)); @@ -1644,7 +1929,7 @@ public class RemoteViews implements Parcelable, Filter { * @param value The value to pass to the method. */ public void setBitmap(int viewId, String methodName, Bitmap value) { - addAction(new ReflectionAction(viewId, methodName, ReflectionAction.BITMAP, value)); + addAction(new BitmapReflectionAction(viewId, methodName, value)); } /** @@ -1679,6 +1964,18 @@ public class RemoteViews implements Parcelable, Filter { setCharSequence(viewId, "setContentDescription", contentDescription); } + private RemoteViews getRemoteViewsToApply(Context context) { + if (hasLandscapeAndPortraitLayouts()) { + int orientation = context.getResources().getConfiguration().orientation; + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { + return mLandscape; + } else { + return mPortrait; + } + } + return this; + } + /** * Inflates the view hierarchy represented by this object and applies * all of the actions. @@ -1691,6 +1988,8 @@ public class RemoteViews implements Parcelable, Filter { * @return The inflated view hierarchy */ public View apply(Context context, ViewGroup parent) { + RemoteViews rvToApply = getRemoteViewsToApply(context); + View result; Context c = prepareContext(context); @@ -1701,13 +2000,13 @@ public class RemoteViews implements Parcelable, Filter { inflater = inflater.cloneInContext(c); inflater.setFilter(this); - result = inflater.inflate(mLayoutId, parent, false); + result = inflater.inflate(rvToApply.getLayoutId(), parent, false); - performApply(result, parent); + rvToApply.performApply(result, parent); return result; } - + /** * Applies all of the actions to the provided view. * @@ -1717,8 +2016,20 @@ public class RemoteViews implements Parcelable, Filter { * the {@link #apply(Context,ViewGroup)} call. */ public void reapply(Context context, View v) { + RemoteViews rvToApply = getRemoteViewsToApply(context); + + // In the case that a view has this RemoteViews applied in one orientation, is persisted + // across orientation change, and has the RemoteViews re-applied in the new orientation, + // we throw an exception, since the layouts may be completely unrelated. + if (hasLandscapeAndPortraitLayouts()) { + if (v.getId() != rvToApply.getLayoutId()) { + throw new RuntimeException("Attempting to re-apply RemoteViews to a view that" + + " that does not share the same root layout id."); + } + } + prepareContext(context); - performApply(v, (ViewGroup) v.getParent()); + rvToApply.performApply(v, (ViewGroup) v.getParent()); } private void performApply(View v, ViewGroup parent) { @@ -1757,25 +2068,42 @@ public class RemoteViews implements Parcelable, Filter { public boolean onLoadClass(Class clazz) { return clazz.isAnnotationPresent(RemoteView.class); } - + public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { - dest.writeString(mPackage); - dest.writeInt(mLayoutId); - dest.writeInt(mIsWidgetCollectionChild ? 1 : 0); - int count; - if (mActions != null) { - count = mActions.size(); + if (!hasLandscapeAndPortraitLayouts()) { + dest.writeInt(MODE_NORMAL); + // We only write the bitmap cache if we are the root RemoteViews, as this cache + // is shared by all children. + if (mIsRoot) { + mBitmapCache.writeBitmapsToParcel(dest, flags); + } + dest.writeString(mPackage); + dest.writeInt(mLayoutId); + dest.writeInt(mIsWidgetCollectionChild ? 1 : 0); + int count; + if (mActions != null) { + count = mActions.size(); + } else { + count = 0; + } + dest.writeInt(count); + for (int i=0; i<count; i++) { + Action a = mActions.get(i); + a.writeToParcel(dest, 0); + } } else { - count = 0; - } - dest.writeInt(count); - for (int i=0; i<count; i++) { - Action a = mActions.get(i); - a.writeToParcel(dest, 0); + dest.writeInt(MODE_HAS_LANDSCAPE_AND_PORTRAIT); + // We only write the bitmap cache if we are the root RemoteViews, as this cache + // is shared by all children. + if (mIsRoot) { + mBitmapCache.writeBitmapsToParcel(dest, flags); + } + mLandscape.writeToParcel(dest, flags); + mPortrait.writeToParcel(dest, flags); } } diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java index 806743536c96..f266d50f98e9 100644 --- a/core/java/android/widget/RemoteViewsAdapter.java +++ b/core/java/android/widget/RemoteViewsAdapter.java @@ -595,7 +595,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback for (Integer i : mIndexRemoteViews.keySet()) { final RemoteViews v = mIndexRemoteViews.get(i); if (v != null) { - mem += v.estimateBitmapMemoryUsage(); + mem += v.estimateMemoryUsage(); } } return mem; @@ -942,10 +942,6 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback * which wouldn't otherwise be possible. */ public void setVisibleRangeHint(int lowerBound, int upperBound) { - if (lowerBound < 0 || upperBound < 0) { - throw new RuntimeException("Attempted to set invalid range: lowerBound="+lowerBound + - "," + "upperBound="+upperBound); - } mVisibleWindowLowerBound = lowerBound; mVisibleWindowUpperBound = upperBound; } diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index 0f0dbae03e37..f912c6625621 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -482,6 +482,10 @@ public class ScrollView extends FrameLayout { if (mScrollStrictSpan == null) { mScrollStrictSpan = StrictMode.enterCriticalSpan("ScrollView-scroll"); } + final ViewParent parent = getParent(); + if (parent != null) { + parent.requestDisallowInterceptTouchEvent(true); + } } break; } @@ -546,10 +550,15 @@ public class ScrollView extends FrameLayout { switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { - mIsBeingDragged = getChildCount() != 0; - if (!mIsBeingDragged) { + if (getChildCount() == 0) { return false; } + if ((mIsBeingDragged = !mScroller.isFinished())) { + final ViewParent parent = getParent(); + if (parent != null) { + parent.requestDisallowInterceptTouchEvent(true); + } + } /* * If being flinged and user touches, stop the fling. isFinished @@ -569,11 +578,23 @@ public class ScrollView extends FrameLayout { break; } case MotionEvent.ACTION_MOVE: + final int activePointerIndex = ev.findPointerIndex(mActivePointerId); + final int y = (int) ev.getY(activePointerIndex); + int deltaY = mLastMotionY - y; + if (!mIsBeingDragged && Math.abs(deltaY) > mTouchSlop) { + final ViewParent parent = getParent(); + if (parent != null) { + parent.requestDisallowInterceptTouchEvent(true); + } + mIsBeingDragged = true; + if (deltaY > 0) { + deltaY -= mTouchSlop; + } else { + deltaY += mTouchSlop; + } + } if (mIsBeingDragged) { // Scroll to follow the motion event - final int activePointerIndex = ev.findPointerIndex(mActivePointerId); - final int y = (int) ev.getY(activePointerIndex); - final int deltaY = mLastMotionY - y; mLastMotionY = y; final int oldX = mScrollX; diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java index 99cd0b8d3575..561326e59473 100644 --- a/core/java/android/widget/SearchView.java +++ b/core/java/android/widget/SearchView.java @@ -381,6 +381,17 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { } /** + * Returns the IME options set on the query text field. + * @return the ime options + * @see TextView#setImeOptions(int) + * + * @attr ref android.R.styleable#SearchView_imeOptions + */ + public int getImeOptions() { + return mQueryTextView.getImeOptions(); + } + + /** * Sets the input type on the query text field. * * @see TextView#setInputType(int) @@ -392,6 +403,16 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { mQueryTextView.setInputType(inputType); } + /** + * Returns the input type set on the query text field. + * @return the input type + * + * @attr ref android.R.styleable#SearchView_inputType + */ + public int getInputType() { + return mQueryTextView.getInputType(); + } + /** @hide */ @Override public boolean requestFocus(int direction, Rect previouslyFocusedRect) { @@ -514,6 +535,26 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { } /** + * Gets the hint text to display in the query text field. + * @return the query hint text, if specified, null otherwise. + * + * @attr ref android.R.styleable#SearchView_queryHint + */ + public CharSequence getQueryHint() { + if (mQueryHint != null) { + return mQueryHint; + } else if (mSearchable != null) { + CharSequence hint = null; + int hintId = mSearchable.getHintId(); + if (hintId != 0) { + hint = getContext().getString(hintId); + } + return hint; + } + return null; + } + + /** * Sets the default or resting state of the search field. If true, a single search icon is * shown by default and expands to show the text field and other buttons when pressed. Also, * if the default state is iconified, then it collapses to that state when the close button @@ -651,6 +692,15 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { requestLayout(); } + /** + * Gets the specified maximum width in pixels, if set. Returns zero if + * no maximum width was specified. + * @return the maximum width of the view + */ + public int getMaxWidth() { + return mMaxWidth; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Let the standard measurements take effect in iconified state. diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index a91b16e87601..98e45fbe3e4c 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -457,7 +457,16 @@ public class SpellChecker implements SpellCheckerSessionListener { public void parse() { Editable editable = (Editable) mTextView.getText(); // Iterate over the newly added text and schedule new SpellCheckSpans - final int start = editable.getSpanStart(mRange); + final int start; + if (mIsSentenceSpellCheckSupported) { + // TODO: Find the start position of the sentence. + // Set span with the context + start = Math.max( + 0, editable.getSpanStart(mRange) - MIN_SENTENCE_LENGTH); + } else { + start = editable.getSpanStart(mRange); + } + final int end = editable.getSpanEnd(mRange); int wordIteratorWindowEnd = Math.min(end, start + WORD_ITERATOR_INTERVAL); @@ -512,9 +521,7 @@ public class SpellChecker implements SpellCheckerSessionListener { return; } // TODO: Find the start position of the sentence. - // Set span with the context - final int spellCheckStart = Math.max( - 0, Math.min(wordStart, regionEnd - MIN_SENTENCE_LENGTH)); + final int spellCheckStart = wordStart; if (regionEnd <= spellCheckStart) { return; } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 36b1cd6f03f0..8c81343e11ca 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -1250,6 +1250,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * * Note: The content of the return value should not be modified. If you want * a modifiable one, you should make your own copy first. + * + * @attr ref android.R.styleable#TextView_text */ @ViewDebug.CapturedViewProperty public CharSequence getText() { @@ -1294,6 +1296,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * @return the current key listener for this TextView. * This will frequently be null for non-EditText TextViews. + * + * @attr ref android.R.styleable#TextView_numeric + * @attr ref android.R.styleable#TextView_digits + * @attr ref android.R.styleable#TextView_phoneNumber + * @attr ref android.R.styleable#TextView_inputMethod + * @attr ref android.R.styleable#TextView_capitalize + * @attr ref android.R.styleable#TextView_autoText */ public final KeyListener getKeyListener() { return mEditor == null ? null : mEditor.mKeyListener; @@ -1408,6 +1417,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @return the current transformation method for this TextView. * This will frequently be null except for single-line and password * fields. + * + * @attr ref android.R.styleable#TextView_password + * @attr ref android.R.styleable#TextView_singleLine */ public final TransformationMethod getTransformationMethod() { return mTransformation; @@ -1500,6 +1512,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns the start padding of the view, plus space for the start * Drawable if any. + * @hide */ public int getCompoundPaddingStart() { resolveDrawables(); @@ -1515,6 +1528,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns the end padding of the view, plus space for the end * Drawable if any. + * @hide */ public int getCompoundPaddingEnd() { resolveDrawables(); @@ -1612,6 +1626,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns the total start padding of the view, including the start * Drawable if any. + * @hide */ public int getTotalPaddingStart() { return getCompoundPaddingStart(); @@ -1620,6 +1635,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns the total end padding of the view, including the end * Drawable if any. + * @hide */ public int getTotalPaddingEnd() { return getCompoundPaddingEnd(); @@ -1822,6 +1838,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @attr ref android.R.styleable#TextView_drawableTop * @attr ref android.R.styleable#TextView_drawableEnd * @attr ref android.R.styleable#TextView_drawableBottom + * @hide */ public void setCompoundDrawablesRelative(Drawable start, Drawable top, Drawable end, Drawable bottom) { @@ -1943,6 +1960,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @attr ref android.R.styleable#TextView_drawableTop * @attr ref android.R.styleable#TextView_drawableEnd * @attr ref android.R.styleable#TextView_drawableBottom + * @hide */ @android.view.RemotableViewMethod public void setCompoundDrawablesRelativeWithIntrinsicBounds(int start, int top, int end, @@ -1966,6 +1984,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @attr ref android.R.styleable#TextView_drawableTop * @attr ref android.R.styleable#TextView_drawableEnd * @attr ref android.R.styleable#TextView_drawableBottom + * @hide */ public void setCompoundDrawablesRelativeWithIntrinsicBounds(Drawable start, Drawable top, Drawable end, Drawable bottom) { @@ -1988,6 +2007,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns drawables for the left, top, right, and bottom borders. + * + * @attr ref android.R.styleable#TextView_drawableLeft + * @attr ref android.R.styleable#TextView_drawableTop + * @attr ref android.R.styleable#TextView_drawableRight + * @attr ref android.R.styleable#TextView_drawableBottom */ public Drawable[] getCompoundDrawables() { final Drawables dr = mDrawables; @@ -2002,6 +2026,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns drawables for the start, top, end, and bottom borders. + * + * @attr ref android.R.styleable#TextView_drawableStart + * @attr ref android.R.styleable#TextView_drawableTop + * @attr ref android.R.styleable#TextView_drawableEnd + * @attr ref android.R.styleable#TextView_drawableBottom + * @hide */ public Drawable[] getCompoundDrawablesRelative() { final Drawables dr = mDrawables; @@ -2040,6 +2070,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns the padding between the compound drawables and the text. + * + * @attr ref android.R.styleable#TextView_drawablePadding */ public int getCompoundDrawablePadding() { final Drawables dr = mDrawables; @@ -2148,6 +2180,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * @return the size (in pixels) of the default text size in this TextView. */ + @ViewDebug.ExportedProperty(category = "text") public float getTextSize() { return mTextPaint.getTextSize(); } @@ -2234,6 +2267,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * {@link #setTypeface(Typeface, int)} to get the appearance * that you actually want. * + * @see #getTypeface() + * * @attr ref android.R.styleable#TextView_typeface * @attr ref android.R.styleable#TextView_textStyle */ @@ -2252,6 +2287,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * @return the current typeface and style in which the text is being * displayed. + * + * @see #setTypeface(Typeface) + * + * @attr ref android.R.styleable#TextView_typeface + * @attr ref android.R.styleable#TextView_textStyle */ public Typeface getTypeface() { return mTextPaint.getTypeface(); @@ -2261,6 +2301,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * Sets the text color for all the states (normal, selected, * focused) to be this color. * + * @see #setTextColor(ColorStateList) + * @see #getTextColors() + * * @attr ref android.R.styleable#TextView_textColor */ @android.view.RemotableViewMethod @@ -2272,6 +2315,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Sets the text color. * + * @see #setTextColor(int) + * @see #getTextColors() + * @see #setHintTextColor(ColorStateList) + * @see #setLinkTextColor(ColorStateList) + * * @attr ref android.R.styleable#TextView_textColor */ public void setTextColor(ColorStateList colors) { @@ -2284,9 +2332,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * Return the set of text colors. + * Gets the text colors for the different states (normal, selected, focused) of the TextView. * - * @return Returns the set of text colors. + * @see #setTextColor(ColorStateList) + * @see #setTextColor(int) + * + * @attr ref android.R.styleable#TextView_textColor */ public final ColorStateList getTextColors() { return mTextColor; @@ -2315,6 +2366,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the color used to display the selection highlight + * + * @see #setHighlightColor(int) + * + * @attr ref android.R.styleable#TextView_textColorHighlight + */ + public int getHighlightColor() { + return mHighlightColor; + } + + /** * Sets whether the soft input method will be made visible when this * TextView gets focused. The default is true. * @hide @@ -2357,6 +2419,52 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * Gets the radius of the shadow layer. + * + * @return the radius of the shadow layer. If 0, the shadow layer is not visible + * + * @see #setShadowLayer(float, float, float, int) + * + * @attr ref android.R.styleable#TextView_shadowRadius + */ + public float getShadowRadius() { + return mShadowRadius; + } + + /** + * @return the horizontal offset of the shadow layer + * + * @see #setShadowLayer(float, float, float, int) + * + * @attr ref android.R.styleable#TextView_shadowDx + */ + public float getShadowDx() { + return mShadowDx; + } + + /** + * @return the vertical offset of the shadow layer + * + * @see #setShadowLayer(float, float, float, int) + * + * @attr ref android.R.styleable#TextView_shadowDy + */ + public float getShadowDy() { + return mShadowDy; + } + + /** + * @return the color of the shadow layer + * + * @see #setShadowLayer(float, float, float, int) + * + * @attr ref android.R.styleable#TextView_shadowColor + */ + public int getShadowColor() { + return mTextPaint.shadowColor; + } + + /** * @return the base paint used for the text. Please use this only to * consult the Paint's properties and not to change them. */ @@ -2417,7 +2525,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * Sets the color of the hint text. + * Sets the color of the hint text for all the states (disabled, focussed, selected...) of this + * TextView. + * + * @see #setHintTextColor(ColorStateList) + * @see #getHintTextColors() + * @see #setTextColor(int) * * @attr ref android.R.styleable#TextView_textColorHint */ @@ -2430,6 +2543,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Sets the color of the hint text. * + * @see #getHintTextColors() + * @see #setHintTextColor(int) + * @see #setTextColor(ColorStateList) + * @see #setLinkTextColor(ColorStateList) + * * @attr ref android.R.styleable#TextView_textColorHint */ public final void setHintTextColor(ColorStateList colors) { @@ -2438,9 +2556,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * <p>Return the color used to paint the hint text.</p> + * @return the color of the hint text, for the different states of this TextView. + * + * @see #setHintTextColor(ColorStateList) + * @see #setHintTextColor(int) + * @see #setTextColor(ColorStateList) + * @see #setLinkTextColor(ColorStateList) * - * @return Returns the list of hint text colors. + * @attr ref android.R.styleable#TextView_textColorHint */ public final ColorStateList getHintTextColors() { return mHintTextColor; @@ -2458,6 +2581,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Sets the color of links in the text. * + * @see #setLinkTextColor(ColorStateList) + * @see #getLinkTextColors() + * * @attr ref android.R.styleable#TextView_textColorLink */ @android.view.RemotableViewMethod @@ -2469,6 +2595,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Sets the color of links in the text. * + * @see #setLinkTextColor(int) + * @see #getLinkTextColors() + * @see #setTextColor(ColorStateList) + * @see #setHintTextColor(ColorStateList) + * * @attr ref android.R.styleable#TextView_textColorLink */ public final void setLinkTextColor(ColorStateList colors) { @@ -2477,9 +2608,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * <p>Returns the color used to paint links in the text.</p> + * @return the list of colors used to paint the links in the text, for the different states of + * this TextView * - * @return Returns the list of link text colors. + * @see #setLinkTextColor(ColorStateList) + * @see #setLinkTextColor(int) + * + * @attr ref android.R.styleable#TextView_textColorLink */ public final ColorStateList getLinkTextColors() { return mLinkTextColor; @@ -2597,6 +2732,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * Setting this value overrides any other (minimum) height setting. A single line TextView will * set this value to 1. * + * @see #getMinLines() + * * @attr ref android.R.styleable#TextView_minLines */ @android.view.RemotableViewMethod @@ -2609,6 +2746,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the minimum number of lines displayed in this TextView, or -1 if the minimum + * height was set in pixels instead using {@link #setMinHeight(int) or #setHeight(int)}. + * + * @see #setMinLines(int) + * + * @attr ref android.R.styleable#TextView_minLines + */ + public int getMinLines() { + return mMinMode == LINES ? mMinimum : -1; + } + + /** * Makes the TextView at least this many pixels tall. * * Setting this value overrides any other (minimum) number of lines setting. @@ -2625,6 +2774,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the minimum height of this TextView expressed in pixels, or -1 if the minimum + * height was set in number of lines instead using {@link #setMinLines(int) or #setLines(int)}. + * + * @see #setMinHeight(int) + * + * @attr ref android.R.styleable#TextView_minHeight + */ + public int getMinHeight() { + return mMinMode == PIXELS ? mMinimum : -1; + } + + /** * Makes the TextView at most this many lines tall. * * Setting this value overrides any other (maximum) height setting. @@ -2641,6 +2802,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the maximum number of lines displayed in this TextView, or -1 if the maximum + * height was set in pixels instead using {@link #setMaxHeight(int) or #setHeight(int)}. + * + * @see #setMaxLines(int) + * + * @attr ref android.R.styleable#TextView_maxLines + */ + public int getMaxLines() { + return mMaxMode == LINES ? mMaximum : -1; + } + + /** * Makes the TextView at most this many pixels tall. This option is mutually exclusive with the * {@link #setMaxLines(int)} method. * @@ -2658,6 +2831,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the maximum height of this TextView expressed in pixels, or -1 if the maximum + * height was set in number of lines instead using {@link #setMaxLines(int) or #setLines(int)}. + * + * @see #setMaxHeight(int) + * + * @attr ref android.R.styleable#TextView_maxHeight + */ + public int getMaxHeight() { + return mMaxMode == PIXELS ? mMaximum : -1; + } + + /** * Makes the TextView exactly this many lines tall. * * Note that setting this value overrides any other (minimum / maximum) number of lines or @@ -2708,6 +2893,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the minimum width of the TextView, expressed in ems or -1 if the minimum width + * was set in pixels instead (using {@link #setMinWidth(int)} or {@link #setWidth(int)}). + * + * @see #setMinEms(int) + * @see #setEms(int) + * + * @attr ref android.R.styleable#TextView_minEms + */ + public int getMinEms() { + return mMinWidthMode == EMS ? mMinWidth : -1; + } + + /** * Makes the TextView at least this many pixels wide * * @attr ref android.R.styleable#TextView_minWidth @@ -2722,6 +2920,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the minimum width of the TextView, in pixels or -1 if the minimum width + * was set in ems instead (using {@link #setMinEms(int)} or {@link #setEms(int)}). + * + * @see #setMinWidth(int) + * @see #setWidth(int) + * + * @attr ref android.R.styleable#TextView_minWidth + */ + public int getMinWidth() { + return mMinWidthMode == PIXELS ? mMinWidth : -1; + } + + /** * Makes the TextView at most this many ems wide * * @attr ref android.R.styleable#TextView_maxEms @@ -2736,6 +2947,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the maximum width of the TextView, expressed in ems or -1 if the maximum width + * was set in pixels instead (using {@link #setMaxWidth(int)} or {@link #setWidth(int)}). + * + * @see #setMaxEms(int) + * @see #setEms(int) + * + * @attr ref android.R.styleable#TextView_maxEms + */ + public int getMaxEms() { + return mMaxWidthMode == EMS ? mMaxWidth : -1; + } + + /** * Makes the TextView at most this many pixels wide * * @attr ref android.R.styleable#TextView_maxWidth @@ -2750,8 +2974,26 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the maximum width of the TextView, in pixels or -1 if the maximum width + * was set in ems instead (using {@link #setMaxEms(int)} or {@link #setEms(int)}). + * + * @see #setMaxWidth(int) + * @see #setWidth(int) + * + * @attr ref android.R.styleable#TextView_maxWidth + */ + public int getMaxWidth() { + return mMaxWidthMode == PIXELS ? mMaxWidth : -1; + } + + /** * Makes the TextView exactly this many ems wide * + * @see #setMaxEms(int) + * @see #setMinEms(int) + * @see #getMinEms() + * @see #getMaxEms() + * * @attr ref android.R.styleable#TextView_ems */ @android.view.RemotableViewMethod @@ -2768,6 +3010,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * You could do the same thing by specifying this number in the * LayoutParams. * + * @see #setMaxWidth(int) + * @see #setMinWidth(int) + * @see #getMinWidth() + * @see #getMaxWidth() + * * @attr ref android.R.styleable#TextView_width */ @android.view.RemotableViewMethod @@ -2779,7 +3026,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener invalidate(); } - /** * Sets line spacing for this TextView. Each line will have its height * multiplied by <code>mult</code> and have <code>add</code> added to it. @@ -2801,6 +3047,34 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * Gets the line spacing multiplier + * + * @return the value by which each line's height is multiplied to get its actual height. + * + * @see #setLineSpacing(float, float) + * @see #getLineSpacingExtra() + * + * @attr ref android.R.styleable#TextView_lineSpacingMultiplier + */ + public float getLineSpacingMultiplier() { + return mSpacingMult; + } + + /** + * Gets the line spacing extra space + * + * @return the extra space that is added to the height of each lines of this TextView. + * + * @see #setLineSpacing(float, float) + * @see #getLineSpacingMultiplier() + * + * @attr ref android.R.styleable#TextView_lineSpacingExtra + */ + public float getLineSpacingExtra() { + return mSpacingAdd; + } + + /** * Convenience method: Append the specified text to the TextView's * display buffer, upgrading it to BufferType.EDITABLE if it was * not already editable. @@ -3882,6 +4156,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns the current list of input filters. + * + * @attr ref android.R.styleable#TextView_maxLength */ public InputFilter[] getFilters() { return mFilters; @@ -4275,6 +4551,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + /** + * @hide + */ @Override public int getResolvedLayoutDirection(Drawable who) { if (who == null) return View.LAYOUT_DIRECTION_LTR; @@ -5638,6 +5917,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * room for accents that go above the normal ascent and descent. * The default is true. * + * @see #getIncludeFontPadding() + * * @attr ref android.R.styleable#TextView_includeFontPadding */ public void setIncludeFontPadding(boolean includepad) { @@ -5652,6 +5933,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + /** + * Gets whether the TextView includes extra top and bottom padding to make + * room for accents that go above the normal ascent and descent. + * + * @see #setIncludeFontPadding(boolean) + * + * @attr ref android.R.styleable#TextView_includeFontPadding + */ + public boolean getIncludeFontPadding() { + return mIncludePad; + } + private static final BoringLayout.Metrics UNKNOWN_BORING = new BoringLayout.Metrics(); @Override @@ -6503,6 +6796,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * Sets how many times to repeat the marquee animation. Only applied if the * TextView has marquee enabled. Set to -1 to repeat indefinitely. * + * @see #getMarqueeRepeatLimit() + * * @attr ref android.R.styleable#TextView_marqueeRepeatLimit */ public void setMarqueeRepeatLimit(int marqueeLimit) { @@ -6510,6 +6805,21 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * Gets the number of times the marquee animation is repeated. Only meaningful if the + * TextView has marquee enabled. + * + * @return the number of times the marquee animation is repeated. -1 if the animation + * repeats indefinitely + * + * @see #setMarqueeRepeatLimit(int) + * + * @attr ref android.R.styleable#TextView_marqueeRepeatLimit + */ + public int getMarqueeRepeatLimit() { + return mMarqueeRepeatLimit; + } + + /** * Returns where, if anywhere, words that are longer than the view * is wide should be ellipsized. */ @@ -6535,7 +6845,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * Set whether the cursor is visible. The default is true. + * Set whether the cursor is visible. The default is true. Note that this property only + * makes sense for editable TextView. + * + * @see #isCursorVisible() * * @attr ref android.R.styleable#TextView_cursorVisible */ @@ -6554,6 +6867,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + /** + * @return whether or not the cursor is visible (assuming this TextView is editable) + * + * @see #setCursorVisible(boolean) + * + * @attr ref android.R.styleable#TextView_cursorVisible + */ + public boolean isCursorVisible() { + // true is the default value + return mEditor == null ? true : mEditor.mCursorVisible; + } + private boolean canMarquee() { int width = (mRight - mLeft - getCompoundPaddingLeft() - getCompoundPaddingRight()); return width > 0 && (mLayout.getLineWidth(0) > width || diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java index d0071e3af602..93cf9d03012a 100644 --- a/core/java/com/android/internal/app/ActionBarImpl.java +++ b/core/java/com/android/internal/app/ActionBarImpl.java @@ -184,8 +184,15 @@ public class ActionBarImpl extends ActionBar { mContextDisplayMode = mActionView.isSplitActionBar() ? CONTEXT_DISPLAY_SPLIT : CONTEXT_DISPLAY_NORMAL; + // This was initially read from the action bar style + final int current = mActionView.getDisplayOptions(); + final boolean homeAsUp = (current & DISPLAY_HOME_AS_UP) != 0; + if (homeAsUp) { + mDisplayHomeAsUpSet = true; + } + ActionBarPolicy abp = ActionBarPolicy.get(mContext); - setHomeButtonEnabled(abp.enableHomeButtonByDefault()); + setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp); setHasEmbeddedTabs(abp.hasEmbeddedTabs()); } @@ -610,6 +617,8 @@ public class ActionBarImpl extends ActionBar { } anim.setInterpolator(AnimationUtils.loadInterpolator(mContext, com.android.internal.R.interpolator.decelerate_quad)); + anim.setDuration(mContext.getResources().getInteger( + com.android.internal.R.integer.config_mediumAnimTime)); anim.addListener(mShowListener); mCurrentShowAnim = anim; anim.start(); @@ -653,6 +662,8 @@ public class ActionBarImpl extends ActionBar { } anim.setInterpolator(AnimationUtils.loadInterpolator(mContext, com.android.internal.R.interpolator.accelerate_quad)); + anim.setDuration(mContext.getResources().getInteger( + com.android.internal.R.integer.config_mediumAnimTime)); anim.addListener(mHideListener); mCurrentShowAnim = anim; anim.start(); @@ -810,6 +821,7 @@ public class ActionBarImpl extends ActionBar { @Override public void setTitleOptionalHint(boolean titleOptional) { + super.setTitleOptionalHint(titleOptional); mContextView.setTitleOptional(titleOptional); } diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 5862d3e08b5e..51bbdf19b2dd 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -63,6 +63,7 @@ public class ResolverActivity extends AlertActivity implements private TextView mClearDefaultHint; private PackageManager mPm; + private boolean mRegistered; private final PackageMonitor mPackageMonitor = new PackageMonitor() { @Override public void onSomePackagesChanged() { mAdapter.handlePackagesChanged(); @@ -100,6 +101,7 @@ public class ResolverActivity extends AlertActivity implements ap.mOnClickListener = this; mPackageMonitor.register(this, getMainLooper(), false); + mRegistered = true; if (alwaysUseOption) { LayoutInflater inflater = (LayoutInflater) getSystemService( @@ -118,6 +120,8 @@ public class ResolverActivity extends AlertActivity implements ap.mAdapter = mAdapter; } else if (count == 1) { startActivity(mAdapter.intentForPosition(0)); + mPackageMonitor.unregister(); + mRegistered = false; finish(); return; } else { @@ -135,14 +139,20 @@ public class ResolverActivity extends AlertActivity implements @Override protected void onRestart() { super.onRestart(); - mPackageMonitor.register(this, getMainLooper(), false); + if (!mRegistered) { + mPackageMonitor.register(this, getMainLooper(), false); + mRegistered = true; + } mAdapter.handlePackagesChanged(); } @Override protected void onStop() { super.onStop(); - mPackageMonitor.unregister(); + if (mRegistered) { + mPackageMonitor.unregister(); + mRegistered = false; + } } public void onClick(DialogInterface dialog, int which) { diff --git a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl index 327fe0741acf..7df45cf78078 100644 --- a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl +++ b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl @@ -43,8 +43,8 @@ interface IAppWidgetService { // for AppWidgetManager // void updateAppWidgetIds(in int[] appWidgetIds, in RemoteViews views); - void updateAppWidgetExtras(int appWidgetId, in Bundle extras); - Bundle getAppWidgetExtras(int appWidgetId); + void updateAppWidgetOptions(int appWidgetId, in Bundle extras); + Bundle getAppWidgetOptions(int appWidgetId); void partiallyUpdateAppWidgetIds(in int[] appWidgetIds, in RemoteViews views); void updateAppWidgetProvider(in ComponentName provider, in RemoteViews views); void notifyAppWidgetViewDataChanged(in int[] appWidgetIds, int viewId); diff --git a/core/java/com/android/internal/net/NetworkStatsFactory.java b/core/java/com/android/internal/net/NetworkStatsFactory.java index d59585f2fe98..8b222f02a3ca 100644 --- a/core/java/com/android/internal/net/NetworkStatsFactory.java +++ b/core/java/com/android/internal/net/NetworkStatsFactory.java @@ -24,20 +24,12 @@ import static com.android.server.NetworkManagementSocketTagger.kernelToTag; import android.net.NetworkStats; import android.os.StrictMode; import android.os.SystemClock; -import android.util.Slog; import com.android.internal.util.ProcFileReader; -import com.google.android.collect.Lists; -import com.google.android.collect.Sets; -import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; -import java.io.FileReader; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.StringTokenizer; import libcore.io.IoUtils; @@ -50,14 +42,10 @@ public class NetworkStatsFactory { // TODO: consider moving parsing to native code - /** Path to {@code /proc/net/dev}. */ - @Deprecated - private final File mStatsIface; - /** Path to {@code /proc/net/xt_qtaguid/iface_stat}. */ - @Deprecated - private final File mStatsXtIface; /** Path to {@code /proc/net/xt_qtaguid/iface_stat_all}. */ private final File mStatsXtIfaceAll; + /** Path to {@code /proc/net/xt_qtaguid/iface_stat_fmt}. */ + private final File mStatsXtIfaceFmt; /** Path to {@code /proc/net/xt_qtaguid/stats}. */ private final File mStatsXtUid; @@ -67,28 +55,20 @@ public class NetworkStatsFactory { // @VisibleForTesting public NetworkStatsFactory(File procRoot) { - mStatsIface = new File(procRoot, "net/dev"); - mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats"); - mStatsXtIface = new File(procRoot, "net/xt_qtaguid/iface_stat"); mStatsXtIfaceAll = new File(procRoot, "net/xt_qtaguid/iface_stat_all"); + mStatsXtIfaceFmt = new File(procRoot, "net/xt_qtaguid/iface_stat_fmt"); + mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats"); } /** - * Parse and return interface-level summary {@link NetworkStats}. Values - * monotonically increase since device boot, and may include details about - * inactive interfaces. + * Parse and return interface-level summary {@link NetworkStats} measured + * using {@code /proc/net/dev} style hooks, which may include non IP layer + * traffic. Values monotonically increase since device boot, and may include + * details about inactive interfaces. * * @throws IllegalStateException when problem parsing stats. */ - public NetworkStats readNetworkStatsSummary() throws IllegalStateException { - if (mStatsXtIfaceAll.exists()) { - return readNetworkStatsSummarySingleFile(); - } else { - return readNetworkStatsSummaryMultipleFiles(); - } - } - - private NetworkStats readNetworkStatsSummarySingleFile() { + public NetworkStats readNetworkStatsSummaryDev() throws IllegalStateException { final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads(); final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 6); @@ -137,79 +117,40 @@ public class NetworkStatsFactory { } /** - * @deprecated remove once {@code iface_stat_all} is merged to all kernels. + * Parse and return interface-level summary {@link NetworkStats}. Designed + * to return only IP layer traffic. Values monotonically increase since + * device boot, and may include details about inactive interfaces. + * + * @throws IllegalStateException when problem parsing stats. */ - @Deprecated - private NetworkStats readNetworkStatsSummaryMultipleFiles() { + public NetworkStats readNetworkStatsSummaryXt() throws IllegalStateException { final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads(); + // return null when kernel doesn't support + if (!mStatsXtIfaceFmt.exists()) return null; + final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 6); final NetworkStats.Entry entry = new NetworkStats.Entry(); - final HashSet<String> knownIfaces = Sets.newHashSet(); - final HashSet<String> activeIfaces = Sets.newHashSet(); - - // collect any historical stats and active state - for (String iface : fileListWithoutNull(mStatsXtIface)) { - final File ifacePath = new File(mStatsXtIface, iface); - - final long active = readSingleLongFromFile(new File(ifacePath, "active")); - if (active == 1) { - knownIfaces.add(iface); - activeIfaces.add(iface); - } else if (active == 0) { - knownIfaces.add(iface); - } else { - continue; - } - - entry.iface = iface; - entry.uid = UID_ALL; - entry.set = SET_ALL; - entry.tag = TAG_NONE; - entry.rxBytes = readSingleLongFromFile(new File(ifacePath, "rx_bytes")); - entry.rxPackets = readSingleLongFromFile(new File(ifacePath, "rx_packets")); - entry.txBytes = readSingleLongFromFile(new File(ifacePath, "tx_bytes")); - entry.txPackets = readSingleLongFromFile(new File(ifacePath, "tx_packets")); + ProcFileReader reader = null; + try { + // open and consume header line + reader = new ProcFileReader(new FileInputStream(mStatsXtIfaceFmt)); + reader.finishLine(); - stats.addValues(entry); - } + while (reader.hasMoreData()) { + entry.iface = reader.nextString(); + entry.uid = UID_ALL; + entry.set = SET_ALL; + entry.tag = TAG_NONE; - final ArrayList<String> values = Lists.newArrayList(); + entry.rxBytes = reader.nextLong(); + entry.rxPackets = reader.nextLong(); + entry.txBytes = reader.nextLong(); + entry.txPackets = reader.nextLong(); - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(mStatsIface)); - - // skip first two header lines - reader.readLine(); - reader.readLine(); - - // parse remaining lines - String line; - while ((line = reader.readLine()) != null) { - splitLine(line, values); - - try { - entry.iface = values.get(0); - entry.uid = UID_ALL; - entry.set = SET_ALL; - entry.tag = TAG_NONE; - entry.rxBytes = Long.parseLong(values.get(1)); - entry.rxPackets = Long.parseLong(values.get(2)); - entry.txBytes = Long.parseLong(values.get(9)); - entry.txPackets = Long.parseLong(values.get(10)); - - if (activeIfaces.contains(entry.iface)) { - // combine stats when iface is active - stats.combineValues(entry); - } else if (!knownIfaces.contains(entry.iface)) { - // add stats when iface is unknown - stats.addValues(entry); - } - } catch (NumberFormatException e) { - Slog.w(TAG, "problem parsing stats row '" + line + "': " + e); - } + stats.addValues(entry); + reader.finishLine(); } } catch (NullPointerException e) { throw new IllegalStateException("problem parsing stats: " + e); @@ -221,7 +162,6 @@ public class NetworkStatsFactory { IoUtils.closeQuietly(reader); StrictMode.setThreadPolicy(savedPolicy); } - return stats; } @@ -286,41 +226,4 @@ public class NetworkStatsFactory { return stats; } - - /** - * Split given line into {@link ArrayList}. - */ - @Deprecated - private static void splitLine(String line, ArrayList<String> outSplit) { - outSplit.clear(); - - final StringTokenizer t = new StringTokenizer(line, " \t\n\r\f:"); - while (t.hasMoreTokens()) { - outSplit.add(t.nextToken()); - } - } - - /** - * Utility method to read a single plain-text {@link Long} from the given - * {@link File}, usually from a {@code /proc/} filesystem. - */ - private static long readSingleLongFromFile(File file) { - try { - final byte[] buffer = IoUtils.readFileAsByteArray(file.toString()); - return Long.parseLong(new String(buffer).trim()); - } catch (NumberFormatException e) { - return -1; - } catch (IOException e) { - return -1; - } - } - - /** - * Wrapper for {@link File#list()} that returns empty array instead of - * {@code null}. - */ - private static String[] fileListWithoutNull(File file) { - final String[] list = file.list(); - return list != null ? list : new String[0]; - } } diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 86118b1d2904..515738555e8e 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -5719,7 +5719,7 @@ public final class BatteryStatsImpl extends BatteryStats { if (SystemProperties.getBoolean(PROP_QTAGUID_ENABLED, false)) { try { - mNetworkSummaryCache = mNetworkStatsFactory.readNetworkStatsSummary(); + mNetworkSummaryCache = mNetworkStatsFactory.readNetworkStatsSummaryDev(); } catch (IllegalStateException e) { Log.wtf(TAG, "problem reading network stats", e); } diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java index 15d11d8e26a7..fbed4859f0e4 100644 --- a/core/java/com/android/internal/view/BaseIWindow.java +++ b/core/java/com/android/internal/view/BaseIWindow.java @@ -33,7 +33,7 @@ public class BaseIWindow extends IWindow.Stub { mSession = session; } - public void resized(int w, int h, Rect coveredInsets, + public void resized(int w, int h, Rect systemInsets, Rect contentInsets, Rect visibleInsets, boolean reportDraw, Configuration newConfig) { if (reportDraw) { try { @@ -87,4 +87,7 @@ public class BaseIWindow extends IWindow.Stub { } } } + + public void doneAnimating() { + } } diff --git a/core/java/com/android/internal/view/StandaloneActionMode.java b/core/java/com/android/internal/view/StandaloneActionMode.java index 4b681ec3a44c..fae7ea12fd83 100644 --- a/core/java/com/android/internal/view/StandaloneActionMode.java +++ b/core/java/com/android/internal/view/StandaloneActionMode.java @@ -73,6 +73,7 @@ public class StandaloneActionMode extends ActionMode implements MenuBuilder.Call @Override public void setTitleOptionalHint(boolean titleOptional) { + super.setTitleOptionalHint(titleOptional); mContextView.setTitleOptional(titleOptional); } diff --git a/core/java/com/android/server/NetworkManagementSocketTagger.java b/core/java/com/android/server/NetworkManagementSocketTagger.java index c77992d8f8a9..06ef4c9d6443 100644 --- a/core/java/com/android/server/NetworkManagementSocketTagger.java +++ b/core/java/com/android/server/NetworkManagementSocketTagger.java @@ -16,20 +16,14 @@ package com.android.server; -import android.net.NetworkStats; import android.os.SystemProperties; import android.util.Log; import android.util.Slog; import dalvik.system.SocketTagger; -import libcore.io.IoUtils; import java.io.FileDescriptor; -import java.io.FileOutputStream; -import java.io.IOException; -import java.math.BigInteger; import java.net.SocketException; -import java.nio.charset.Charsets; /** * Assigns tags to sockets for traffic stats. @@ -141,8 +135,12 @@ public final class NetworkManagementSocketTagger extends SocketTagger { * format like {@code 0x7fffffff00000000}. */ public static int kernelToTag(String string) { - // TODO: migrate to direct integer instead of odd shifting - return (int) (Long.decode(string) >> 32); + int length = string.length(); + if (length > 10) { + return Long.decode(string.substring(0, length - 8)).intValue(); + } else { + return 0; + } } private static native int native_tagSocketFd(FileDescriptor fd, int tag, int uid); diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index dd59444fdabd..47ed2c1723e1 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -304,7 +304,15 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, return nullObjectReturn("layoutBounds == null"); } - env->SetIntArrayRegion(layoutBounds, 0, 4, (jint*) peeker.fLayoutBounds); + jint scaledBounds[4]; + if (willScale) { + for (int i=0; i<4; i++) { + scaledBounds[i] = (jint)((((jint*)peeker.fLayoutBounds)[i]*scale) + .5f); + } + } else { + memcpy(scaledBounds, (jint*)peeker.fLayoutBounds, sizeof(scaledBounds)); + } + env->SetIntArrayRegion(layoutBounds, 0, 4, scaledBounds); if (javaBitmap != NULL) { env->SetObjectField(javaBitmap, gBitmap_layoutBoundsFieldID, layoutBounds); } @@ -322,6 +330,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, const float sy = scaledHeight / float(decoded->height()); bitmap->setConfig(decoded->getConfig(), scaledWidth, scaledHeight); + bitmap->setIsOpaque(decoded->isOpaque()); bitmap->allocPixels(&javaAllocator, NULL); bitmap->eraseColor(0); diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp index a33b46abb100..2c388935148f 100644 --- a/core/jni/android/graphics/TextLayoutCache.cpp +++ b/core/jni/android/graphics/TextLayoutCache.cpp @@ -30,7 +30,7 @@ extern "C" { namespace android { //-------------------------------------------------------------------------------------------------- -#define TYPEFACE_ARABIC "/system/fonts/DroidNaskh-Regular-Shift.ttf" +#define TYPEFACE_ARABIC "/system/fonts/DroidNaskh-Regular-SystemUI.ttf" #define TYPE_FACE_HEBREW_REGULAR "/system/fonts/DroidSansHebrew-Regular.ttf" #define TYPE_FACE_HEBREW_BOLD "/system/fonts/DroidSansHebrew-Bold.ttf" #define TYPEFACE_BENGALI "/system/fonts/Lohit-Bengali.ttf" @@ -739,18 +739,18 @@ void TextLayoutShaper::computeRunValues(const SkPaint* paint, const UChar* chars #endif } - -size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) { - // Reset kerning - mShaperItem.kerning_applied = false; - - // Update Harfbuzz Shaper - mShaperItem.item.bidiLevel = isRTL; - - SkTypeface* typeface = paint->getTypeface(); - +/** + * Return the first typeface in the logical change, starting with this typeface, + * that contains the specified unichar, or NULL if none is found. + * + * Note that this function does _not_ increment the reference count on the typeface, as the + * assumption is that its lifetime is managed elsewhere - in particular, the fallback typefaces + * for the default font live in a global cache. + */ +SkTypeface* TextLayoutShaper::typefaceForUnichar(const SkPaint* paint, SkTypeface* typeface, + SkUnichar unichar, HB_Script script) { // Set the correct Typeface depending on the script - switch (mShaperItem.item.script) { + switch (script) { case HB_Script_Arabic: typeface = getCachedTypeface(&mArabicTypeface, TYPEFACE_ARABIC); #if DEBUG_GLYPHS @@ -815,32 +815,31 @@ size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) { break; default: - if (!typeface) { - typeface = mDefaultTypeface; -#if DEBUG_GLYPHS - ALOGD("Using Default Typeface"); -#endif - } else { #if DEBUG_GLYPHS + if (typeface) { ALOGD("Using Paint Typeface"); -#endif } +#endif break; } + return typeface; +} - mShapingPaint.setTypeface(typeface); - mShaperItem.face = getCachedHBFace(typeface); +size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) { + // Reset kerning + mShaperItem.kerning_applied = false; -#if DEBUG_GLYPHS - ALOGD("Run typeface = %p, uniqueID = %d, hb_face = %p", - typeface, typeface->uniqueID(), mShaperItem.face); -#endif + // Update Harfbuzz Shaper + mShaperItem.item.bidiLevel = isRTL; + + SkTypeface* typeface = paint->getTypeface(); // Get the glyphs base count for offsetting the glyphIDs returned by Harfbuzz // This is needed as the Typeface used for shaping can be not the default one // when we are shaping any script that needs to use a fallback Font. // If we are a "common" script we dont need to shift size_t baseGlyphCount = 0; + SkUnichar firstUnichar = 0; switch (mShaperItem.item.script) { case HB_Script_Arabic: case HB_Script_Hebrew: @@ -849,7 +848,11 @@ size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) { case HB_Script_Tamil: case HB_Script_Thai:{ const uint16_t* text16 = (const uint16_t*)(mShaperItem.string + mShaperItem.item.pos); - SkUnichar firstUnichar = SkUTF16_NextUnichar(&text16); + const uint16_t* text16End = text16 + mShaperItem.item.length; + firstUnichar = SkUTF16_NextUnichar(&text16); + while (firstUnichar == ' ' && text16 < text16End) { + firstUnichar = SkUTF16_NextUnichar(&text16); + } baseGlyphCount = paint->getBaseGlyphCount(firstUnichar); break; } @@ -857,6 +860,25 @@ size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) { break; } + // We test the baseGlyphCount to see if the typeface supports the requested script + if (baseGlyphCount != 0) { + typeface = typefaceForUnichar(paint, typeface, firstUnichar, mShaperItem.item.script); + } + + if (!typeface) { + typeface = mDefaultTypeface; +#if DEBUG_GLYPHS + ALOGD("Using Default Typeface"); +#endif + } + mShapingPaint.setTypeface(typeface); + mShaperItem.face = getCachedHBFace(typeface); + +#if DEBUG_GLYPHS + ALOGD("Run typeface = %p, uniqueID = %d, hb_face = %p", + typeface, typeface->uniqueID(), mShaperItem.face); +#endif + // Shape assert(mShaperItem.item.length > 0); // Harfbuzz will overwrite other memory if length is 0. ensureShaperItemGlyphArrays(mShaperItem.item.length * 3 / 2); diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h index 3c834a408854..7d7caacadfa7 100644 --- a/core/jni/android/graphics/TextLayoutCache.h +++ b/core/jni/android/graphics/TextLayoutCache.h @@ -217,6 +217,9 @@ private: */ UnicodeString mBuffer; + SkTypeface* typefaceForUnichar(const SkPaint* paint, SkTypeface* typeface, + SkUnichar unichar, HB_Script script); + size_t shapeFontRun(const SkPaint* paint, bool isRTL); void computeValues(const SkPaint* paint, const UChar* chars, diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp index 19bc154aee1a..074afa3e38dc 100644 --- a/core/jni/android_app_NativeActivity.cpp +++ b/core/jni/android_app_NativeActivity.cpp @@ -207,7 +207,7 @@ int32_t AInputQueue::getEvent(AInputEvent** outEvent) { uint32_t consumerSeq; InputEvent* myEvent = NULL; - status_t res = mConsumer.consume(&mPooledInputEventFactory, true /*consumeBatches*/, + status_t res = mConsumer.consume(&mPooledInputEventFactory, true /*consumeBatches*/, -1, &consumerSeq, &myEvent); if (res != android::OK) { if (res != android::WOULD_BLOCK) { diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp index 9abfb3afc9fb..eddd8381ec1d 100644 --- a/core/jni/android_hardware_SensorManager.cpp +++ b/core/jni/android_hardware_SensorManager.cpp @@ -69,7 +69,7 @@ sensors_module_get_next_sensor(JNIEnv *env, jobject clazz, jobject sensor, jint jstring vendor = env->NewStringUTF(list->getVendor().string()); env->SetObjectField(sensor, sensorOffsets.name, name); env->SetObjectField(sensor, sensorOffsets.vendor, vendor); - env->SetIntField(sensor, sensorOffsets.version, 1); + env->SetIntField(sensor, sensorOffsets.version, list->getVersion()); env->SetIntField(sensor, sensorOffsets.handle, list->getHandle()); env->SetIntField(sensor, sensorOffsets.type, list->getType()); env->SetFloatField(sensor, sensorOffsets.range, list->getMaxValue()); diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp index d1f0a6a8673a..576f8315b3c3 100644 --- a/core/jni/android_view_InputDevice.cpp +++ b/core/jni/android_view_InputDevice.cpp @@ -55,7 +55,7 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi ScopedLocalRef<jobject> inputDeviceObj(env, env->NewObject(gInputDeviceClassInfo.clazz, gInputDeviceClassInfo.ctor, deviceInfo.getId(), deviceInfo.getGeneration(), - nameObj.get(), descriptorObj.get(), + nameObj.get(), descriptorObj.get(), deviceInfo.isExternal(), deviceInfo.getSources(), deviceInfo.getKeyboardType(), kcmObj.get(), deviceInfo.hasVibrator())); @@ -87,7 +87,7 @@ int register_android_view_InputDevice(JNIEnv* env) gInputDeviceClassInfo.clazz = jclass(env->NewGlobalRef(gInputDeviceClassInfo.clazz)); GET_METHOD_ID(gInputDeviceClassInfo.ctor, gInputDeviceClassInfo.clazz, - "<init>", "(IILjava/lang/String;Ljava/lang/String;IILandroid/view/KeyCharacterMap;Z)V"); + "<init>", "(IILjava/lang/String;Ljava/lang/String;ZIILandroid/view/KeyCharacterMap;Z)V"); GET_METHOD_ID(gInputDeviceClassInfo.addMotionRange, gInputDeviceClassInfo.clazz, "addMotionRange", "(IIFFFF)V"); diff --git a/core/jni/android_view_InputEventReceiver.cpp b/core/jni/android_view_InputEventReceiver.cpp index 8f6f5f4966a3..08e08b94bcf8 100644 --- a/core/jni/android_view_InputEventReceiver.cpp +++ b/core/jni/android_view_InputEventReceiver.cpp @@ -52,7 +52,7 @@ public: status_t initialize(); status_t finishInputEvent(uint32_t seq, bool handled); - status_t consumeEvents(JNIEnv* env, bool consumeBatches); + status_t consumeEvents(JNIEnv* env, bool consumeBatches, nsecs_t frameTime); protected: virtual ~NativeInputEventReceiver(); @@ -130,15 +130,16 @@ int NativeInputEventReceiver::handleReceiveCallback(int receiveFd, int events, v } JNIEnv* env = AndroidRuntime::getJNIEnv(); - status_t status = r->consumeEvents(env, false /*consumeBatches*/); + status_t status = r->consumeEvents(env, false /*consumeBatches*/, -1); r->mMessageQueue->raiseAndClearException(env, "handleReceiveCallback"); return status == OK || status == NO_MEMORY ? 1 : 0; } -status_t NativeInputEventReceiver::consumeEvents(JNIEnv* env, bool consumeBatches) { +status_t NativeInputEventReceiver::consumeEvents(JNIEnv* env, + bool consumeBatches, nsecs_t frameTime) { #if DEBUG_DISPATCH_CYCLE - ALOGD("channel '%s' ~ Consuming input events, consumeBatches=%s.", getInputChannelName(), - consumeBatches ? "true" : "false"); + ALOGD("channel '%s' ~ Consuming input events, consumeBatches=%s, frameTime=%lld.", + getInputChannelName(), consumeBatches ? "true" : "false", frameTime); #endif if (consumeBatches) { @@ -150,7 +151,7 @@ status_t NativeInputEventReceiver::consumeEvents(JNIEnv* env, bool consumeBatche uint32_t seq; InputEvent* inputEvent; status_t status = mInputConsumer.consume(&mInputEventFactory, - consumeBatches, &seq, &inputEvent); + consumeBatches, frameTime, &seq, &inputEvent); if (status) { if (status == WOULD_BLOCK) { if (!skipCallbacks && !mBatchedInputEventPending @@ -270,10 +271,11 @@ static void nativeFinishInputEvent(JNIEnv* env, jclass clazz, jint receiverPtr, } } -static void nativeConsumeBatchedInputEvents(JNIEnv* env, jclass clazz, jint receiverPtr) { +static void nativeConsumeBatchedInputEvents(JNIEnv* env, jclass clazz, jint receiverPtr, + jlong frameTimeNanos) { sp<NativeInputEventReceiver> receiver = reinterpret_cast<NativeInputEventReceiver*>(receiverPtr); - status_t status = receiver->consumeEvents(env, true /*consumeBatches*/); + status_t status = receiver->consumeEvents(env, true /*consumeBatches*/, frameTimeNanos); if (status && status != DEAD_OBJECT && !env->ExceptionCheck()) { String8 message; message.appendFormat("Failed to consume batched input event. status=%d", status); @@ -291,7 +293,7 @@ static JNINativeMethod gMethods[] = { (void*)nativeDispose }, { "nativeFinishInputEvent", "(IIZ)V", (void*)nativeFinishInputEvent }, - { "nativeConsumeBatchedInputEvents", "(I)V", + { "nativeConsumeBatchedInputEvents", "(IJ)V", (void*)nativeConsumeBatchedInputEvents }, }; diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index a60467ba9b3b..8c4c42abbe9b 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -345,6 +345,32 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) } } +static void Surface_setActiveRect(JNIEnv* env, jobject thiz, jobject activeRect) +{ + const sp<Surface>& surface(getSurface(env, thiz)); + if (!Surface::isValid(surface)) { + doThrowIAE(env); + return; + } + + android_native_rect_t nativeRect; + if (activeRect) { + nativeRect.left = env->GetIntField(activeRect, ro.l); + nativeRect.top = env->GetIntField(activeRect, ro.t); + nativeRect.right = env->GetIntField(activeRect, ro.r); + nativeRect.bottom= env->GetIntField(activeRect, ro.b); + } else { + doThrowIAE(env, "activeRect may not be null"); + return; + } + + int err = native_window_set_active_rect(surface.get(), &nativeRect); + if (err != NO_ERROR) { + doThrowRE(env, String8::format( + "Surface::setActiveRect returned an error: %d", err).string()); + } +} + static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect) { const sp<Surface>& surface(getSurface(env, clazz)); @@ -889,6 +915,7 @@ static JNINativeMethod gSurfaceMethods[] = { {"readFromParcel", "(Landroid/os/Parcel;)V", (void*)Surface_readFromParcel }, {"writeToParcel", "(Landroid/os/Parcel;I)V", (void*)Surface_writeToParcel }, {"isConsumerRunningBehind", "()Z", (void*)Surface_isConsumerRunningBehind }, + {"setActiveRect", "(Landroid/graphics/Rect;)V", (void*)Surface_setActiveRect }, }; void nativeClassInit(JNIEnv* env, jclass clazz) diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 60d2159cff0f..bd1f574b112a 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -112,6 +112,13 @@ <protected-broadcast android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> <protected-broadcast android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> + <protected-broadcast android:name="android.intent.action.HEADSET_PLUG" /> + <protected-broadcast android:name="android.intent.action.ANALOG_AUDIO_DOCK_PLUG" /> + <protected-broadcast android:name="android.intent.action.DIGITAL_AUDIO_DOCK_PLUG" /> + <protected-broadcast android:name="android.intent.action.HDMI_AUDIO_PLUG" /> + <protected-broadcast android:name="android.intent.action.USB_AUDIO_ACCESSORY_PLUG" /> + <protected-broadcast android:name="android.intent.action.USB_AUDIO_DEVICE_PLUG" /> + <protected-broadcast android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <protected-broadcast android:name="android.net.conn.CONNECTIVITY_CHANGE_IMMEDIATE" /> @@ -132,16 +139,29 @@ <eat-comment /> <!-- Used for permissions that can be used to make the user spend money - without their direct involvement. For example, this is the group - for permissions that allow you to directly place phone calls, - directly send SMS messages, etc. --> + without their direct involvement. --> <permission-group android:name="android.permission-group.COST_MONEY" android:label="@string/permgrouplab_costMoney" android:description="@string/permgroupdesc_costMoney" /> - <!-- Allows an application to send SMS messages. --> + <!-- ================================== --> + <!-- Permissions for accessing messages --> + <!-- ================================== --> + <eat-comment /> + + <!-- Used for permissions that allow an application to send messages + on behalf of the user or intercept messages being received by the + user. This is primarily intended for SMS/MMS messaging, such as + receiving or reading an MMS. --> + <permission-group android:name="android.permission-group.MESSAGES" + android:label="@string/permgrouplab_messages" + android:description="@string/permgroupdesc_messages" + android:permissionGroupFlags="personalInfo" + android:priority="2"/> + + <!-- Allows an application to send SMS messages. --> <permission android:name="android.permission.SEND_SMS" - android:permissionGroup="android.permission-group.COST_MONEY" + android:permissionGroup="android.permission-group.MESSAGES" android:protectionLevel="dangerous" android:label="@string/permlab_sendSms" android:description="@string/permdesc_sendSms" /> @@ -150,33 +170,11 @@ input or confirmation. @hide --> <permission android:name="android.permission.SEND_SMS_NO_CONFIRMATION" - android:permissionGroup="android.permission-group.COST_MONEY" + android:permissionGroup="android.permission-group.MESSAGES" android:protectionLevel="signature|system" android:label="@string/permlab_sendSmsNoConfirmation" android:description="@string/permdesc_sendSmsNoConfirmation" /> - <!-- Allows an application to initiate a phone call without going through - the Dialer user interface for the user to confirm the call - being placed. --> - <permission android:name="android.permission.CALL_PHONE" - android:permissionGroup="android.permission-group.COST_MONEY" - android:protectionLevel="dangerous" - android:label="@string/permlab_callPhone" - android:description="@string/permdesc_callPhone" /> - - <!-- ================================== --> - <!-- Permissions for accessing messages --> - <!-- ================================== --> - <eat-comment /> - - <!-- Used for permissions that allow an application to send messages - on behalf of the user or intercept messages being received by the - user. This is primarily intended for SMS/MMS messaging, such as - receiving or reading an MMS. --> - <permission-group android:name="android.permission-group.MESSAGES" - android:label="@string/permgrouplab_messages" - android:description="@string/permgroupdesc_messages" /> - <!-- Allows an application to monitor incoming SMS messages, to record or perform processing on them. --> <permission android:name="android.permission.RECEIVE_SMS" @@ -241,21 +239,24 @@ android:description="@string/permdesc_receiveWapPush" /> <!-- =============================================================== --> - <!-- Permissions for accessing personal info (contacts and calendar) --> + <!-- Permissions for accessing social info (contacts and social) --> <!-- =============================================================== --> <eat-comment /> - <!-- Used for permissions that provide access to the user's private data, - such as contacts, calendar events, e-mail messages, etc. This includes + <!-- Used for permissions that provide access to the user's social connections, + such as contacts, call logs, social stream, etc. This includes both reading and writing of this data (which should generally be expressed as two distinct permissions). --> - <permission-group android:name="android.permission-group.PERSONAL_INFO" - android:label="@string/permgrouplab_personalInfo" - android:description="@string/permgroupdesc_personalInfo" /> + + <permission-group android:name="android.permission-group.SOCIAL_INFO" + android:label="@string/permgrouplab_socialInfo" + android:description="@string/permgroupdesc_socialInfo" + android:permissionGroupFlags="personalInfo" + android:priority="6" /> <!-- Allows an application to read the user's contacts data. --> <permission android:name="android.permission.READ_CONTACTS" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.SOCIAL_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_readContacts" android:description="@string/permdesc_readContacts" /> @@ -263,14 +264,14 @@ <!-- Allows an application to write (but not read) the user's contacts data. --> <permission android:name="android.permission.WRITE_CONTACTS" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.SOCIAL_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_writeContacts" android:description="@string/permdesc_writeContacts" /> <!-- Allows an application to read the user's call log. --> <permission android:name="android.permission.READ_CALL_LOG" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.SOCIAL_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_readCallLog" android:description="@string/permdesc_readCallLog" /> @@ -278,11 +279,40 @@ <!-- Allows an application to write (but not read) the user's contacts data. --> <permission android:name="android.permission.WRITE_CALL_LOG" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.SOCIAL_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_writeCallLog" android:description="@string/permdesc_writeCallLog" /> + <!-- Allows an application to read from the user's social stream. --> + <permission android:name="android.permission.READ_SOCIAL_STREAM" + android:permissionGroup="android.permission-group.SOCIAL_INFO" + android:protectionLevel="dangerous" + android:label="@string/permlab_readSocialStream" + android:description="@string/permdesc_readSocialStream" /> + + <!-- Allows an application to write (but not read) the user's + social stream data. --> + <permission android:name="android.permission.WRITE_SOCIAL_STREAM" + android:permissionGroup="android.permission-group.SOCIAL_INFO" + android:protectionLevel="dangerous" + android:label="@string/permlab_writeSocialStream" + android:description="@string/permdesc_writeSocialStream" /> + + <!-- =============================================================== --> + <!-- Permissions for accessing information about the device owner --> + <!-- =============================================================== --> + <eat-comment /> + + <!-- Used for permissions that provide access to information about the device + user such as profile information. This includes both reading and + writing of this data (which should generally be expressed as two + distinct permissions). --> + <permission-group android:name="android.permission-group.PERSONAL_INFO" + android:label="@string/permgrouplab_personalInfo" + android:description="@string/permgroupdesc_personalInfo" + android:permissionGroupFlags="personalInfo" + android:priority="7" /> <!-- Allows an application to read the user's personal profile data. --> <permission android:name="android.permission.READ_PROFILE" @@ -299,20 +329,18 @@ android:label="@string/permlab_writeProfile" android:description="@string/permdesc_writeProfile" /> - <!-- Allows an application to read from the user's social stream. --> - <permission android:name="android.permission.READ_SOCIAL_STREAM" - android:permissionGroup="android.permission-group.PERSONAL_INFO" - android:protectionLevel="dangerous" - android:label="@string/permlab_readSocialStream" - android:description="@string/permdesc_readSocialStream" /> + <!-- =============================================================== --> + <!-- Permissions for accessing the device calendar --> + <!-- =============================================================== --> + <eat-comment /> - <!-- Allows an application to write (but not read) the user's - social stream data. --> - <permission android:name="android.permission.WRITE_SOCIAL_STREAM" - android:permissionGroup="android.permission-group.PERSONAL_INFO" - android:protectionLevel="dangerous" - android:label="@string/permlab_writeSocialStream" - android:description="@string/permdesc_writeSocialStream" /> + <!-- Used for permissions that provide access to the device + calendar to create / view events.--> + <permission-group android:name="android.permission-group.CALENDAR" + android:label="@string/permgrouplab_calendar" + android:description="@string/permgroupdesc_calendar" + android:permissionGroupFlags="personalInfo" + android:priority="9" /> <!-- Allows an application to read the user's calendar data. --> <permission android:name="android.permission.READ_CALENDAR" @@ -329,28 +357,52 @@ android:label="@string/permlab_writeCalendar" android:description="@string/permdesc_writeCalendar" /> + <!-- =============================================================== --> + <!-- Permissions for accessing the user dictionary--> + <!-- =============================================================== --> + <eat-comment /> + + <!-- Used for permissions that provide access to the user + calendar to create / view events.--> + <permission-group android:name="android.permission-group.USER_DICTIONARY" + android:label="@string/permgrouplab_dictionary" + android:description="@string/permgroupdesc_dictionary" + android:permissionGroupFlags="personalInfo" + android:priority="20" /> + <!-- Allows an application to read the user dictionary. This should really only be required by an IME, or a dictionary editor like - the Settings app. - @hide Pending API council approval --> + the Settings app. --> <permission android:name="android.permission.READ_USER_DICTIONARY" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.USER_DICTIONARY" android:protectionLevel="dangerous" android:label="@string/permlab_readDictionary" android:description="@string/permdesc_readDictionary" /> - <!-- Allows an application to write to the user dictionary. - @hide Pending API council approval --> + <!-- Allows an application to write to the user dictionary. --> <permission android:name="android.permission.WRITE_USER_DICTIONARY" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.USER_DICTIONARY" android:protectionLevel="normal" android:label="@string/permlab_writeDictionary" android:description="@string/permdesc_writeDictionary" /> + <!-- =============================================================== --> + <!-- Permissions for accessing the user bookmarks --> + <!-- =============================================================== --> + <eat-comment /> + + <!-- Used for permissions that provide access to the user + bookmarks and browser history.--> + <permission-group android:name="android.permission-group.BOOKMARKS" + android:label="@string/permgrouplab_bookmarks" + android:description="@string/permgroupdesc_bookmarks" + android:permissionGroupFlags="personalInfo" + android:priority="8" /> + <!-- Allows an application to read (but not write) the user's browsing history and bookmarks. --> <permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.BOOKMARKS" android:label="@string/permlab_readHistoryBookmarks" android:description="@string/permdesc_readHistoryBookmarks" android:protectionLevel="dangerous" /> @@ -358,22 +410,46 @@ <!-- Allows an application to write (but not read) the user's browsing history and bookmarks. --> <permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.BOOKMARKS" android:label="@string/permlab_writeHistoryBookmarks" android:description="@string/permdesc_writeHistoryBookmarks" android:protectionLevel="dangerous" /> + <!-- =============================================================== --> + <!-- Permissions for setting the device alarm --> + <!-- =============================================================== --> + <eat-comment /> + + <!-- Used for permissions that provide access to the user voicemail box. --> + <permission-group android:name="android.permission-group.DEVICE_ALARMS" + android:label="@string/permgrouplab_deviceAlarms" + android:description="@string/permgroupdesc_deviceAlarms" + android:permissionGroupFlags="personalInfo" + android:priority="16"/> + <!-- Allows an application to broadcast an Intent to set an alarm for the user. --> <permission android:name="com.android.alarm.permission.SET_ALARM" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.DEVICE_ALARMS" android:label="@string/permlab_setAlarm" android:description="@string/permdesc_setAlarm" android:protectionLevel="normal" /> + <!-- =============================================================== --> + <!-- Permissions for accessing the user voicemail --> + <!-- =============================================================== --> + <eat-comment /> + + <!-- Used for permissions that provide access to the user voicemail box. --> + <permission-group android:name="android.permission-group.VOICEMAIL" + android:label="@string/permgrouplab_voicemail" + android:description="@string/permgroupdesc_voicemail" + android:permissionGroupFlags="personalInfo" + android:priority="10" /> + <!-- Allows an application to add voicemails into the system. --> <permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" - android:permissionGroup="android.permission-group.PERSONAL_INFO" + android:permissionGroup="android.permission-group.VOICEMAIL" android:protectionLevel="dangerous" android:label="@string/permlab_addVoicemail" android:description="@string/permdesc_addVoicemail" /> @@ -387,7 +463,9 @@ location. --> <permission-group android:name="android.permission-group.LOCATION" android:label="@string/permgrouplab_location" - android:description="@string/permgroupdesc_location" /> + android:description="@string/permgroupdesc_location" + android:permissionGroupFlags="personalInfo" + android:priority="5" /> <!-- Allows an application to access fine (e.g., GPS) location --> <permission android:name="android.permission.ACCESS_FINE_LOCATION" @@ -434,7 +512,8 @@ or other related network operations. --> <permission-group android:name="android.permission-group.NETWORK" android:label="@string/permgrouplab_network" - android:description="@string/permgroupdesc_network" /> + android:description="@string/permgroupdesc_network" + android:priority="11" /> <!-- Allows applications to open network sockets. --> <permission android:name="android.permission.INTERNET" @@ -456,6 +535,13 @@ android:protectionLevel="normal" android:description="@string/permdesc_accessWifiState" android:label="@string/permlab_accessWifiState" /> + + <!-- Allows applications to change Wi-Fi connectivity state --> + <permission android:name="android.permission.CHANGE_WIFI_STATE" + android:permissionGroup="android.permission-group.NETWORK" + android:protectionLevel="normal" + android:description="@string/permdesc_changeWifiState" + android:label="@string/permlab_changeWifiState" /> <!-- @hide --> <permission android:name="android.permission.ACCESS_WIMAX_STATE" @@ -463,36 +549,49 @@ android:protectionLevel="normal" android:description="@string/permdesc_accessWimaxState" android:label="@string/permlab_accessWimaxState" /> + + <!-- @hide --> + <permission android:name="android.permission.CHANGE_WIMAX_STATE" + android:permissionGroup="android.permission-group.NETWORK" + android:protectionLevel="dangerous" + android:description="@string/permdesc_changeWimaxState" + android:label="@string/permlab_changeWimaxState" /> + + <!-- ======================================= --> + <!-- Permissions for short range, peripheral networks --> + <!-- ======================================= --> + <eat-comment /> + + <!-- Used for permissions that provide access to network services that + are for peripherals and other nearby devices. These networks + generally do not provide IP based networking or internet access.--> + <permission-group android:name="android.permission-group.SHORTRANGE_NETWORK" + android:label="@string/permgrouplab_shortRangeNetwork" + android:description="@string/permgroupdesc_shortRangeNetwork" + android:priority="12" /> + <!-- Allows applications to connect to paired bluetooth devices --> <permission android:name="android.permission.BLUETOOTH" - android:permissionGroup="android.permission-group.NETWORK" + android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK" android:protectionLevel="dangerous" android:description="@string/permdesc_bluetooth" android:label="@string/permlab_bluetooth" /> - + + <!-- Allows applications to discover and pair bluetooth devices --> + <permission android:name="android.permission.BLUETOOTH_ADMIN" + android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK" + android:protectionLevel="dangerous" + android:description="@string/permdesc_bluetoothAdmin" + android:label="@string/permlab_bluetoothAdmin" /> + <!-- Allows applications to perform I/O operations over NFC --> <permission android:name="android.permission.NFC" - android:permissionGroup="android.permission-group.NETWORK" + android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK" android:protectionLevel="dangerous" android:description="@string/permdesc_nfc" android:label="@string/permlab_nfc" /> - <!-- Allows an application to use SIP service --> - <permission android:name="android.permission.USE_SIP" - android:permissionGroup="android.permission-group.NETWORK" - android:protectionLevel="dangerous" - android:description="@string/permdesc_use_sip" - android:label="@string/permlab_use_sip" /> - - <!-- Allows applications to call into AccountAuthenticators. Only - the system can get this permission. --> - <permission android:name="android.permission.ACCOUNT_MANAGER" - android:permissionGroup="android.permission-group.ACCOUNTS" - android:protectionLevel="signature" - android:description="@string/permdesc_accountManagerService" - android:label="@string/permlab_accountManagerService" /> - - <!-- Allows an internal user to use privaledged ConnectivityManager + <!-- Allows an internal user to use privileged ConnectivityManager APIs. @hide --> <permission android:name="android.permission.CONNECTIVITY_INTERNAL" @@ -508,7 +607,9 @@ by the Account Manager. --> <permission-group android:name="android.permission-group.ACCOUNTS" android:label="@string/permgrouplab_accounts" - android:description="@string/permgroupdesc_accounts" /> + android:description="@string/permgroupdesc_accounts" + android:permissionGroupFlags="personalInfo" + android:priority="17" /> <!-- Allows access to the list of accounts in the Accounts Service --> <permission android:name="android.permission.GET_ACCOUNTS" @@ -539,58 +640,87 @@ android:label="@string/permlab_manageAccounts" android:description="@string/permdesc_manageAccounts" /> + <!-- Allows applications to call into AccountAuthenticators. Only + the system can get this permission. --> + <permission android:name="android.permission.ACCOUNT_MANAGER" + android:permissionGroup="android.permission-group.ACCOUNTS" + android:protectionLevel="signature" + android:description="@string/permdesc_accountManagerService" + android:label="@string/permlab_accountManagerService" /> + <!-- ================================== --> - <!-- Permissions for accessing hardware --> + <!-- Permissions for accessing hardware that may effect battery life--> <!-- ================================== --> <eat-comment /> <!-- Used for permissions that provide direct access to the hardware on - the device. This includes audio, the camera, vibrator, etc. --> - <permission-group android:name="android.permission-group.HARDWARE_CONTROLS" - android:label="@string/permgrouplab_hardwareControls" - android:description="@string/permgroupdesc_hardwareControls" /> + the device that has an effect on battery life. This includes vibrator, + flashlight, etc. --> - <!-- Allows an application to modify global audio settings --> - <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" - android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_modifyAudioSettings" - android:description="@string/permdesc_modifyAudioSettings" /> - - <!-- Allows an application to record audio --> - <permission android:name="android.permission.RECORD_AUDIO" - android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_recordAudio" - android:description="@string/permdesc_recordAudio" /> + <permission-group android:name="android.permission-group.AFFECTS_BATTERY" + android:label="@string/permgrouplab_affectsBattery" + android:description="@string/permgroupdesc_affectsBattery" + android:priority="19" /> - <!-- Required to be able to access the camera device. - <p>This will automatically enforce the <a - href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code - <uses-feature>}</a> manifest element for <em>all</em> camera features. - If you do not require all camera features or can properly operate if a camera - is not available, then you must modify your manifest as appropriate in order to - install on devices that don't support all camera features.</p> --> - <permission android:name="android.permission.CAMERA" - android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_camera" - android:description="@string/permdesc_camera" /> + <!-- Allows applications to enter Wi-Fi Multicast mode --> + <permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" + android:permissionGroup="android.permission-group.AFFECTS_BATTERY" + android:protectionLevel="normal" + android:description="@string/permdesc_changeWifiMulticastState" + android:label="@string/permlab_changeWifiMulticastState" /> <!-- Allows access to the vibrator --> <permission android:name="android.permission.VIBRATE" - android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" + android:permissionGroup="android.permission-group.AFFECTS_BATTERY" android:protectionLevel="normal" android:label="@string/permlab_vibrate" android:description="@string/permdesc_vibrate" /> <!-- Allows access to the flashlight --> <permission android:name="android.permission.FLASHLIGHT" - android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" + android:permissionGroup="android.permission-group.AFFECTS_BATTERY" android:protectionLevel="normal" android:label="@string/permlab_flashlight" android:description="@string/permdesc_flashlight" /> + <!-- Allows using PowerManager WakeLocks to keep processor from sleeping or screen + from dimming --> + <permission android:name="android.permission.WAKE_LOCK" + android:permissionGroup="android.permission-group.AFFECTS_BATTERY" + android:protectionLevel="normal" + android:label="@string/permlab_wakeLock" + android:description="@string/permdesc_wakeLock" /> + + <!-- ==================================================== --> + <!-- Permissions related to changing audio settings --> + <!-- ==================================================== --> + + <!-- Used for permissions that provide direct access to speaker settings + the device. --> + <permission-group android:name="android.permission-group.AUDIO_SETTINGS" + android:label="@string/permgrouplab_audioSettings" + android:description="@string/permgroupdesc_audioSettings" + android:priority="25" /> + + <!-- Allows an application to modify global audio settings --> + <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" + android:permissionGroup="android.permission-group.AUDIO_SETTINGS" + android:protectionLevel="normal" + android:label="@string/permlab_modifyAudioSettings" + android:description="@string/permdesc_modifyAudioSettings" /> + + <!-- ================================== --> + <!-- Permissions for accessing hardware --> + <!-- ================================== --> + <eat-comment /> + + <!-- Used for permissions that provide direct access to the hardware on + the device. This includes audio, the camera, vibrator, etc. --> + <permission-group android:name="android.permission-group.HARDWARE_CONTROLS" + android:label="@string/permgrouplab_hardwareControls" + android:description="@string/permgroupdesc_hardwareControls" + android:priority="26"/> + <!-- Allows an application to manage preferences and permissions for USB devices @hide --> <permission android:name="android.permission.MANAGE_USB" @@ -621,19 +751,71 @@ android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="signature" /> + <!-- Allows registration for remote audio playback. @hide --> + <permission android:name="android.permission.REMOTE_AUDIO_PLAYBACK" + android:permissionGroup="android.permission-group.SYSTEM_TOOLS" + android:protectionLevel="signature" /> + + <!-- =========================================== --> + <!-- Permissions associated with audio capture --> + <!-- =========================================== --> + <eat-comment /> + + <!-- Used for permissions that are associated with accessing + microphone audio from the device. Note that phone calls also capture audio + but are in a separate (more visible) permission group. --> + <permission-group android:name="android.permission-group.MICROPHONE" + android:label="@string/permgrouplab_microphone" + android:description="@string/permgroupdesc_microphone" + android:permissionGroupFlags="personalInfo" + android:priority="4" /> + + <!-- Allows an application to record audio --> + <permission android:name="android.permission.RECORD_AUDIO" + android:permissionGroup="android.permission-group.MICROPHONE" + android:protectionLevel="dangerous" + android:label="@string/permlab_recordAudio" /> + + + <!-- =========================================== --> + <!-- Permissions associated with camera and image capture --> + <!-- =========================================== --> + <eat-comment /> + + <!-- Used for permissions that are associated with accessing + camera or capturing images/video from the device. --> + <permission-group android:name="android.permission-group.CAMERA" + android:label="@string/permgrouplab_camera" + android:description="@string/permgroupdesc_camera" + android:permissionGroupFlags="personalInfo" + android:priority="3" /> + + <!-- Required to be able to access the camera device. + <p>This will automatically enforce the <a + href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code + <uses-feature>}</a> manifest element for <em>all</em> camera features. + If you do not require all camera features or can properly operate if a camera + is not available, then you must modify your manifest as appropriate in order to + install on devices that don't support all camera features.</p> --> + <permission android:name="android.permission.CAMERA" + android:permissionGroup="android.permission-group.CAMERA" + android:protectionLevel="dangerous" + android:label="@string/permlab_camera" + android:description="@string/permdesc_camera" /> + <!-- =========================================== --> <!-- Permissions associated with telephony state --> <!-- =========================================== --> <eat-comment /> <!-- Used for permissions that are associated with accessing and modifyign - telephony state: intercepting outgoing calls, reading - and modifying the phone state. Note that - placing phone calls is not in this group, since that is in the - more important "takin' yer moneys" group. --> + telephony state: placing calls, intercepting outgoing calls, reading + and modifying the phone state. --> <permission-group android:name="android.permission-group.PHONE_CALLS" android:label="@string/permgrouplab_phoneCalls" - android:description="@string/permgroupdesc_phoneCalls" /> + android:description="@string/permgroupdesc_phoneCalls" + android:permissionGroupFlags="personalInfo" + android:priority="1" /> <!-- Allows an application to monitor, modify, or abort outgoing calls. --> @@ -664,6 +846,22 @@ android:permissionGroup="android.permission-group.PHONE_CALLS" android:protectionLevel="signature|system" /> + <!-- Allows an application to initiate a phone call without going through + the Dialer user interface for the user to confirm the call + being placed. --> + <permission android:name="android.permission.CALL_PHONE" + android:permissionGroup="android.permission-group.PHONE_CALLS" + android:protectionLevel="dangerous" + android:label="@string/permlab_callPhone" + android:description="@string/permdesc_callPhone" /> + + <!-- Allows an application to use SIP service --> + <permission android:name="android.permission.USE_SIP" + android:permissionGroup="android.permission-group.PHONE_CALLS" + android:protectionLevel="dangerous" + android:description="@string/permdesc_use_sip" + android:label="@string/permlab_use_sip" /> + <!-- ================================== --> <!-- Permissions for sdcard interaction --> <!-- ================================== --> @@ -672,7 +870,9 @@ <!-- Group of permissions that are related to SD card access. --> <permission-group android:name="android.permission-group.STORAGE" android:label="@string/permgrouplab_storage" - android:description="@string/permgroupdesc_storage" /> + android:description="@string/permgroupdesc_storage" + android:permissionGroupFlags="personalInfo" + android:priority="13" /> <!-- Allows an application to read from external storage --> <permission android:name="android.permission.READ_EXTERNAL_STORAGE" @@ -696,45 +896,40 @@ android:description="@string/permdesc_mediaStorageWrite" android:protectionLevel="signature|system" /> - <!-- ============================================ --> - <!-- Permissions for low-level system interaction --> - <!-- ============================================ --> + <!-- ================================== --> + <!-- Permissions for screenlock --> + <!-- ================================== --> <eat-comment /> - <!-- Group of permissions that are related to system APIs. Many - of these are not permissions the user will be expected to understand, - and such permissions should generally be marked as "normal" protection - level so they don't get displayed. This can also, however, be used - for miscellaneous features that provide access to the operating system, - such as writing the global system settings. --> - <permission-group android:name="android.permission-group.SYSTEM_TOOLS" - android:label="@string/permgrouplab_systemTools" - android:description="@string/permgroupdesc_systemTools" /> + <!-- Group of permissions that are related to the screenlock. --> + <permission-group android:name="android.permission-group.SCREENLOCK" + android:label="@string/permgrouplab_storage" + android:permissionGroupFlags="personalInfo" + android:description="@string/permgroupdesc_storage" /> - <!-- Allows an application to read or write the system settings. --> - <permission android:name="android.permission.WRITE_SETTINGS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" + <!-- Allows applications to disable the keyguard --> + <permission android:name="android.permission.DISABLE_KEYGUARD" + android:permissionGroup="android.permission-group.SCREENLOCK" android:protectionLevel="dangerous" - android:label="@string/permlab_writeSettings" - android:description="@string/permdesc_writeSettings" /> + android:description="@string/permdesc_disableKeyguard" + android:label="@string/permlab_disableKeyguard" /> - <!-- Allows an application to modify the Google service map. --> - <permission android:name="android.permission.WRITE_GSERVICES" - android:protectionLevel="signature|system" - android:label="@string/permlab_writeGservices" - android:description="@string/permdesc_writeGservices" /> + <!-- ================================== --> + <!-- Permissions to access other installed applications --> + <!-- ================================== --> + <eat-comment /> - <!-- Allows an application to expand or collapse the status bar. --> - <permission android:name="android.permission.EXPAND_STATUS_BAR" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="normal" - android:label="@string/permlab_expandStatusBar" - android:description="@string/permdesc_expandStatusBar" /> + <!-- Group of permissions that are related to the other applications + installed on the system. Examples include such as listing + running apps, or killing background processes. --> + <permission-group android:name="android.permission-group.APP_INFO" + android:label="@string/permgrouplab_appInfo" + android:description="@string/permgroupdesc_appInfo" /> <!-- Allows an application to get information about the currently or recently running tasks. --> <permission android:name="android.permission.GET_TASKS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" + android:permissionGroup="android.permission-group.APP_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_getTasks" android:description="@string/permdesc_getTasks" /> @@ -750,14 +945,14 @@ <!-- Allows an application to change the Z-order of tasks --> <permission android:name="android.permission.REORDER_TASKS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:permissionGroup="android.permission-group.APP_INFO" + android:protectionLevel="normal" android:label="@string/permlab_reorderTasks" android:description="@string/permdesc_reorderTasks" /> <!-- @hide Allows an application to change to remove/kill tasks --> <permission android:name="android.permission.REMOVE_TASKS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" + android:permissionGroup="android.permission-group.APP_INFO" android:protectionLevel="signature" android:label="@string/permlab_removeTasks" android:description="@string/permdesc_removeTasks" /> @@ -770,6 +965,160 @@ android:label="@string/permlab_startAnyActivity" android:description="@string/permdesc_startAnyActivity" /> + <!-- @deprecated The {@link android.app.ActivityManager#restartPackage} + API is no longer supported. --> + <permission android:name="android.permission.RESTART_PACKAGES" + android:permissionGroup="android.permission-group.APP_INFO" + android:protectionLevel="normal" + android:label="@string/permlab_killBackgroundProcesses" + android:description="@string/permdesc_killBackgroundProcesses" /> + + <!-- Allows an application to call + {@link android.app.ActivityManager#killBackgroundProcesses}. --> + <permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" + android:permissionGroup="android.permission-group.APP_INFO" + android:protectionLevel="normal" + android:label="@string/permlab_killBackgroundProcesses" + android:description="@string/permdesc_killBackgroundProcesses" /> + + <!-- ================================== --> + <!-- Permissions affecting the display of other applications --> + <!-- ================================== --> + <eat-comment /> + + <!-- Group of permissions that allow manipulation of how + another application displays UI to the user. --> + <permission-group android:name="android.permission-group.DISPLAY" + android:label="@string/permgrouplab_display" + android:description="@string/permgroupdesc_display" + android:priority="18"/> + + <!-- Allows an application to open windows using the type + {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT}, + shown on top of all other applications. Very few applications + should use this permission; these windows are intended for + system-level interaction with the user. --> + <permission android:name="android.permission.SYSTEM_ALERT_WINDOW" + android:permissionGroup="android.permission-group.DISPLAY" + android:protectionLevel="dangerous" + android:label="@string/permlab_systemAlertWindow" + android:description="@string/permdesc_systemAlertWindow" /> + + <!-- ================================== --> + <!-- Permissions affecting the system wallpaper --> + <!-- ================================== --> + <eat-comment /> + + <!-- Group of permissions that allow manipulation of how + another application displays UI to the user. --> + <permission-group android:name="android.permission-group.WALLPAPER" + android:label="@string/permgrouplab_wallpaper" + android:description="@string/permgroupdesc_wallpaper" + android:priority="22" /> + + <!-- Allows applications to set the wallpaper --> + <permission android:name="android.permission.SET_WALLPAPER" + android:permissionGroup="android.permission-group.WALLPAPER" + android:protectionLevel="normal" + android:label="@string/permlab_setWallpaper" + android:description="@string/permdesc_setWallpaper" /> + + <!-- Allows applications to set the wallpaper hints --> + <permission android:name="android.permission.SET_WALLPAPER_HINTS" + android:permissionGroup="android.permission-group.WALLPAPER" + android:protectionLevel="normal" + android:label="@string/permlab_setWallpaperHints" + android:description="@string/permdesc_setWallpaperHints" /> + + <!-- ============================================ --> + <!-- Permissions for changing the system clock --> + <!-- ============================================ --> + <eat-comment /> + + <!-- Group of permissions that are related to system clock. --> + <permission-group android:name="android.permission-group.SYSTEM_CLOCK" + android:label="@string/permgrouplab_systemClock" + android:description="@string/permgroupdesc_systemClock" + android:priority="23" /> + + <!-- Allows applications to set the system time --> + <permission android:name="android.permission.SET_TIME" + android:protectionLevel="signature|system" + android:label="@string/permlab_setTime" + android:description="@string/permdesc_setTime" /> + + <!-- Allows applications to set the system time zone --> + <permission android:name="android.permission.SET_TIME_ZONE" + android:permissionGroup="android.permission-group.SYSTEM_CLOCK" + android:protectionLevel="normal" + android:label="@string/permlab_setTimeZone" + android:description="@string/permdesc_setTimeZone" /> + + <!-- ==================================================== --> + <!-- Permissions related to changing status bar --> + <!-- ==================================================== --> + + <!-- Used for permissions that change the status bar --> + <permission-group android:name="android.permission-group.STATUS_BAR" + android:label="@string/permgrouplab_statusBar" + android:description="@string/permgroupdesc_statusBar" /> + + <!-- Allows an application to expand or collapse the status bar. --> + <permission android:name="android.permission.EXPAND_STATUS_BAR" + android:permissionGroup="android.permission-group.STATUS_BAR" + android:protectionLevel="normal" + android:label="@string/permlab_expandStatusBar" + android:description="@string/permdesc_expandStatusBar" /> + + <!-- ==================================================== --> + <!-- Permissions related to accessing sync settings --> + <!-- ==================================================== --> + + <!-- Used for permissions that access the sync settings or sync + related information. --> + <permission-group android:name="android.permission-group.SYNC_SETTINGS" + android:label="@string/permgrouplab_syncSettings" + android:description="@string/permgroupdesc_syncSettings" + android:priority="29" /> + + <!-- Allows applications to read the sync settings --> + <permission android:name="android.permission.READ_SYNC_SETTINGS" + android:permissionGroup="android.permission-group.SYNC_SETTINGS" + android:protectionLevel="normal" + android:description="@string/permdesc_readSyncSettings" + android:label="@string/permlab_readSyncSettings" /> + + <!-- Allows applications to write the sync settings --> + <permission android:name="android.permission.WRITE_SYNC_SETTINGS" + android:permissionGroup="android.permission-group.SYNC_SETTINGS" + android:protectionLevel="normal" + android:description="@string/permdesc_writeSyncSettings" + android:label="@string/permlab_writeSyncSettings" /> + + <!-- Allows applications to read the sync stats --> + <permission android:name="android.permission.READ_SYNC_STATS" + android:permissionGroup="android.permission-group.SYNC_SETTINGS" + android:protectionLevel="normal" + android:description="@string/permdesc_readSyncStats" + android:label="@string/permlab_readSyncStats" /> + + + <!-- ============================================ --> + <!-- Permissions for low-level system interaction --> + <!-- ============================================ --> + <eat-comment /> + + <!-- Group of permissions that are related to system APIs. Many + of these are not permissions the user will be expected to understand, + and such permissions should generally be marked as "normal" protection + level so they don't get displayed. This can also, however, be used + for miscellaneous features that provide access to the operating system, + such as writing the global system settings. --> + <permission-group android:name="android.permission-group.SYSTEM_TOOLS" + android:label="@string/permgrouplab_systemTools" + android:description="@string/permgroupdesc_systemTools" + android:priority="30" /> + <!-- @hide Change the screen compatibility mode of applications --> <permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" @@ -781,25 +1130,37 @@ as locale. --> <permission android:name="android.permission.CHANGE_CONFIGURATION" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:protectionLevel="signature|system|development" android:label="@string/permlab_changeConfiguration" android:description="@string/permdesc_changeConfiguration" /> - <!-- @deprecated The {@link android.app.ActivityManager#restartPackage} - API is no longer supported. --> - <permission android:name="android.permission.RESTART_PACKAGES" + <!-- Allows an application to read or write the system settings. --> + <permission android:name="android.permission.WRITE_SETTINGS" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="normal" - android:label="@string/permlab_killBackgroundProcesses" - android:description="@string/permdesc_killBackgroundProcesses" /> + android:label="@string/permlab_writeSettings" + android:description="@string/permdesc_writeSettings" /> - <!-- Allows an application to call - {@link android.app.ActivityManager#killBackgroundProcesses}. --> - <permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" + <!-- Allows an application to modify the Google service map. --> + <permission android:name="android.permission.WRITE_GSERVICES" + android:protectionLevel="signature|system" + android:label="@string/permlab_writeGservices" + android:description="@string/permdesc_writeGservices" /> + + <!-- @hide Change the screen compatibility mode of applications --> + <permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="normal" - android:label="@string/permlab_killBackgroundProcesses" - android:description="@string/permdesc_killBackgroundProcesses" /> + android:protectionLevel="signature" + android:label="@string/permlab_setScreenCompatibility" + android:description="@string/permdesc_setScreenCompatibility" /> + + <!-- Allows an application to modify the current configuration, such + as locale. --> + <permission android:name="android.permission.CHANGE_CONFIGURATION" + android:permissionGroup="android.permission-group.SYSTEM_TOOLS" + android:protectionLevel="system|signature" + android:label="@string/permlab_changeConfiguration" + android:description="@string/permdesc_changeConfiguration" /> <!-- Allows an application to call {@link android.app.ActivityManager#forceStopPackage}. @@ -818,31 +1179,18 @@ android:label="@string/permlab_retrieve_window_content" android:description="@string/permdesc_retrieve_window_content" /> - <!-- Allows an application to open windows using the type - {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT}, - shown on top of all other applications. Very few applications - should use this permission; these windows are intended for - system-level interaction with the user. --> - <permission android:name="android.permission.SYSTEM_ALERT_WINDOW" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_systemAlertWindow" - android:description="@string/permdesc_systemAlertWindow" /> - <!-- Modify the global animation scaling factor. --> <permission android:name="android.permission.SET_ANIMATION_SCALE" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:protectionLevel="signature|system|development" android:label="@string/permlab_setAnimationScale" android:description="@string/permdesc_setAnimationScale" /> <!-- @deprecated This functionality will be removed in the future; please do - not use. - - Allow an application to make its activities persistent. --> + not use. Allow an application to make its activities persistent. --> <permission android:name="android.permission.PERSISTENT_ACTIVITY" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:protectionLevel="normal" android:label="@string/permlab_persistentActivity" android:description="@string/permdesc_persistentActivity" /> @@ -889,52 +1237,17 @@ android:label="@string/permlab_broadcastSticky" android:description="@string/permdesc_broadcastSticky" /> - <!-- Allows using PowerManager WakeLocks to keep processor from sleeping or screen - from dimming --> - <permission android:name="android.permission.WAKE_LOCK" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_wakeLock" - android:description="@string/permdesc_wakeLock" /> - - <!-- Allows applications to set the wallpaper --> - <permission android:name="android.permission.SET_WALLPAPER" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="normal" - android:label="@string/permlab_setWallpaper" - android:description="@string/permdesc_setWallpaper" /> - - <!-- Allows applications to set the wallpaper hints --> - <permission android:name="android.permission.SET_WALLPAPER_HINTS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="normal" - android:label="@string/permlab_setWallpaperHints" - android:description="@string/permdesc_setWallpaperHints" /> - - <!-- Allows applications to set the system time --> - <permission android:name="android.permission.SET_TIME" - android:protectionLevel="signature|system" - android:label="@string/permlab_setTime" - android:description="@string/permdesc_setTime" /> - - <!-- Allows applications to set the system time zone --> - <permission android:name="android.permission.SET_TIME_ZONE" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_setTimeZone" - android:description="@string/permdesc_setTimeZone" /> - <!-- Allows mounting and unmounting file systems for removable storage. --> <permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:protectionLevel="system|signature" android:label="@string/permlab_mount_unmount_filesystems" android:description="@string/permdesc_mount_unmount_filesystems" /> <!-- Allows formatting file systems for removable storage. --> <permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:protectionLevel="system|signature" android:label="@string/permlab_mount_format_filesystems" android:description="@string/permdesc_mount_format_filesystems" /> @@ -978,34 +1291,6 @@ android:label="@string/permlab_asec_rename" android:description="@string/permdesc_asec_rename" /> - <!-- Allows applications to disable the keyguard --> - <permission android:name="android.permission.DISABLE_KEYGUARD" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:description="@string/permdesc_disableKeyguard" - android:label="@string/permlab_disableKeyguard" /> - - <!-- Allows applications to read the sync settings --> - <permission android:name="android.permission.READ_SYNC_SETTINGS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="normal" - android:description="@string/permdesc_readSyncSettings" - android:label="@string/permlab_readSyncSettings" /> - - <!-- Allows applications to write the sync settings --> - <permission android:name="android.permission.WRITE_SYNC_SETTINGS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:description="@string/permdesc_writeSyncSettings" - android:label="@string/permlab_writeSyncSettings" /> - - <!-- Allows applications to read the sync stats --> - <permission android:name="android.permission.READ_SYNC_STATS" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="normal" - android:description="@string/permdesc_readSyncStats" - android:label="@string/permlab_readSyncStats" /> - <!-- Allows applications to write the apn settings --> <permission android:name="android.permission.WRITE_APN_SETTINGS" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" @@ -1029,37 +1314,10 @@ <!-- Allows applications to change network connectivity state --> <permission android:name="android.permission.CHANGE_NETWORK_STATE" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" + android:protectionLevel="normal" android:description="@string/permdesc_changeNetworkState" android:label="@string/permlab_changeNetworkState" /> - <!-- Allows applications to change Wi-Fi connectivity state --> - <permission android:name="android.permission.CHANGE_WIFI_STATE" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:description="@string/permdesc_changeWifiState" - android:label="@string/permlab_changeWifiState" /> - - <!-- @hide --> - <permission android:name="android.permission.CHANGE_WIMAX_STATE" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:description="@string/permdesc_changeWimaxState" - android:label="@string/permlab_changeWimaxState" /> - <!-- Allows applications to enter Wi-Fi Multicast mode --> - <permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:description="@string/permdesc_changeWifiMulticastState" - android:label="@string/permlab_changeWifiMulticastState" /> - - <!-- Allows applications to discover and pair bluetooth devices --> - <permission android:name="android.permission.BLUETOOTH_ADMIN" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:description="@string/permdesc_bluetoothAdmin" - android:label="@string/permlab_bluetoothAdmin" /> - <!-- Allows an application to clear the caches of all installed applications on the device. --> <permission android:name="android.permission.CLEAR_APP_CACHE" @@ -1086,7 +1344,8 @@ purposes. --> <permission-group android:name="android.permission-group.DEVELOPMENT_TOOLS" android:label="@string/permgrouplab_developmentTools" - android:description="@string/permgroupdesc_developmentTools" /> + android:description="@string/permgroupdesc_developmentTools" + android:priority="31" /> <!-- Allows an application to read or write the secure system settings. --> <permission android:name="android.permission.WRITE_SECURE_SETTINGS" diff --git a/core/res/res/anim/task_close_enter.xml b/core/res/res/anim-land/task_close_enter.xml index dad8c1f05172..805ff6ca9b98 100644 --- a/core/res/res/anim/task_close_enter.xml +++ b/core/res/res/anim-land/task_close_enter.xml @@ -18,22 +18,26 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android" - android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> - <alpha android:fromAlpha="0" android:toAlpha="1" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> + + <alpha android:fromAlpha="0" android:toAlpha="1.0" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" - android:interpolator="@interpolator/decelerate_cubic" - android:startOffset="600" - android:duration="200"/> - <scale android:fromXScale="0.6" android:toXScale="1.0" - android:fromYScale="0.6" android:toYScale="1.0" - android:pivotX="50%p" android:pivotY="50%p" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350"/> + + <translate android:fromXDelta="-140%" android:toXDelta="0" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" android:interpolator="@interpolator/decelerate_cubic" - android:startOffset="350" - android:duration="400" /> - <translate android:fromYDelta="-100%" android:toYDelta="0" - android:interpolator="@interpolator/decelerate_cubic" + android:startOffset="150" + android:duration="350"/> + + <scale android:fromXScale=".6" android:toXScale="1.0" + android:fromYScale=".6" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" - android:startOffset="350" - android:duration="400"/> + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350" /> + </set>
\ No newline at end of file diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-land/task_close_exit.xml index af1a4a99b114..3e97149942bb 100644 --- a/core/res/res/anim/task_open_exit.xml +++ b/core/res/res/anim-land/task_close_exit.xml @@ -21,20 +21,23 @@ android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" - android:interpolator="@interpolator/decelerate_cubic" - android:duration="300"/> + android:interpolator="@interpolator/accelerate_quad" + android:duration="350"/> + + <translate android:fromXDelta="0" android:toXDelta="140%" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:duration="350"/> + <scale android:fromXScale="1.0" android:toXScale="0.6" android:fromYScale="1.0" android:toYScale="0.6" - android:pivotX="50%p" android:pivotY="50%p" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" - android:interpolator="@interpolator/accelerate_quad" - android:duration="500" /> - <translate android:fromYDelta="0" android:toYDelta="-100%" - android:interpolator="@interpolator/accelerate_quad" - android:duration="500"/> + android:pivotX="50%p" android:pivotY="50%p" + android:interpolator="@interpolator/decelerate_cubic" + android:duration="350" /> <!-- This is needed to keep the animation running while task_open_enter completes --> <alpha android:fromAlpha="1.0" android:toAlpha="1.0" android:interpolator="@interpolator/accelerate_quad" - android:duration="700" /> + android:duration="500" /> </set>
\ No newline at end of file diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-land/task_open_enter.xml index 8341806d1f76..fb1c5d64cdbb 100644 --- a/core/res/res/anim/task_open_enter.xml +++ b/core/res/res/anim-land/task_open_enter.xml @@ -19,16 +19,25 @@ <set xmlns:android="http://schemas.android.com/apk/res/android" android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> - <scale android:fromXScale=".8" android:toXScale="1.0" - android:fromYScale=".8" android:toYScale="1.0" - android:pivotX="50%p" android:pivotY="50%p" + + <alpha android:fromAlpha="0" android:toAlpha="1.0" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" android:interpolator="@interpolator/decelerate_quad" - android:startOffset="400" - android:duration="300" /> - <alpha android:fromAlpha="0" android:toAlpha="1.0" + android:startOffset="150" + android:duration="350"/> + + <translate android:fromXDelta="140%" android:toXDelta="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_cubic" + android:startOffset="150" + android:duration="350"/> + + <scale android:fromXScale=".6" android:toXScale="1.0" + android:fromYScale=".6" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" android:interpolator="@interpolator/decelerate_quad" - android:startOffset="400" - android:duration="300"/> + android:startOffset="150" + android:duration="350" /> + </set>
\ No newline at end of file diff --git a/core/res/res/anim-land/task_open_exit.xml b/core/res/res/anim-land/task_open_exit.xml new file mode 100644 index 000000000000..8d15324f1d7e --- /dev/null +++ b/core/res/res/anim-land/task_open_exit.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> + <alpha android:fromAlpha="1.0" android:toAlpha="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/accelerate_quad" + android:duration="350"/> + + <translate android:fromXDelta="0" android:toXDelta="-140%" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:duration="350"/> + + <scale android:fromXScale="1.0" android:toXScale="0.6" + android:fromYScale="1.0" android:toYScale="0.6" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:pivotX="50%p" android:pivotY="50%p" + android:interpolator="@interpolator/decelerate_cubic" + android:duration="350" /> + + <!-- This is needed to keep the animation running while task_open_enter completes --> + <alpha android:fromAlpha="1.0" android:toAlpha="1.0" + android:interpolator="@interpolator/accelerate_quad" + android:duration="500" /> +</set>
\ No newline at end of file diff --git a/core/res/res/anim-port/task_close_enter.xml b/core/res/res/anim-port/task_close_enter.xml new file mode 100644 index 000000000000..1806eeda3fbd --- /dev/null +++ b/core/res/res/anim-port/task_close_enter.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> + + <alpha android:fromAlpha="0" android:toAlpha="1.0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350"/> + + <translate android:fromYDelta="-140%" android:toYDelta="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_cubic" + android:startOffset="150" + android:duration="350"/> + + <scale android:fromXScale=".6" android:toXScale="1.0" + android:fromYScale=".6" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350" /> + +</set>
\ No newline at end of file diff --git a/core/res/res/anim/task_close_exit.xml b/core/res/res/anim-port/task_close_exit.xml index 485c91d6f95f..958a7a295c22 100644 --- a/core/res/res/anim/task_close_exit.xml +++ b/core/res/res/anim-port/task_close_exit.xml @@ -18,19 +18,26 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android" - android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> - <scale android:fromXScale="1.0" android:toXScale=".8" - android:fromYScale="1.0" android:toYScale=".8" - android:pivotX="50%p" android:pivotY="50%p" - android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" - android:interpolator="@interpolator/decelerate_cubic" - android:duration="300" /> + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/accelerate_quad" + android:duration="350"/> + + <translate android:fromYDelta="0" android:toYDelta="140%" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:duration="350"/> + + <scale android:fromXScale="1.0" android:toXScale="0.6" + android:fromYScale="1.0" android:toYScale="0.6" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:pivotX="50%p" android:pivotY="50%p" android:interpolator="@interpolator/decelerate_cubic" - android:duration="300"/> + android:duration="350" /> - <!-- This is needed to keep the animation running while task_close_enter completes --> + <!-- This is needed to keep the animation running while task_open_enter completes --> <alpha android:fromAlpha="1.0" android:toAlpha="1.0" - android:duration="600" /> + android:interpolator="@interpolator/accelerate_quad" + android:duration="500" /> </set>
\ No newline at end of file diff --git a/core/res/res/anim-port/task_open_enter.xml b/core/res/res/anim-port/task_open_enter.xml new file mode 100644 index 000000000000..54a2d9389493 --- /dev/null +++ b/core/res/res/anim-port/task_open_enter.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> + + <alpha android:fromAlpha="0" android:toAlpha="1.0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350"/> + + <translate android:fromYDelta="140%" android:toYDelta="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_cubic" + android:startOffset="150" + android:duration="350"/> + + <scale android:fromXScale=".6" android:toXScale="1.0" + android:fromYScale=".6" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350" /> + +</set>
\ No newline at end of file diff --git a/core/res/res/anim-port/task_open_exit.xml b/core/res/res/anim-port/task_open_exit.xml new file mode 100644 index 000000000000..18e6550b4f96 --- /dev/null +++ b/core/res/res/anim-port/task_open_exit.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> + <alpha android:fromAlpha="1.0" android:toAlpha="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/accelerate_quad" + android:duration="350"/> + + <translate android:fromYDelta="0" android:toYDelta="-140%" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:duration="350"/> + + <scale android:fromXScale="1.0" android:toXScale="0.6" + android:fromYScale="1.0" android:toYScale="0.6" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:pivotX="50%p" android:pivotY="50%p" + android:interpolator="@interpolator/decelerate_cubic" + android:duration="350" /> + + <!-- This is needed to keep the animation running while task_open_enter completes --> + <alpha android:fromAlpha="1.0" android:toAlpha="1.0" + android:interpolator="@interpolator/accelerate_quad" + android:duration="500" /> +</set>
\ No newline at end of file diff --git a/core/res/res/anim-sw720dp/task_close_enter.xml b/core/res/res/anim-sw720dp/task_close_enter.xml new file mode 100644 index 000000000000..1806eeda3fbd --- /dev/null +++ b/core/res/res/anim-sw720dp/task_close_enter.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> + + <alpha android:fromAlpha="0" android:toAlpha="1.0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350"/> + + <translate android:fromYDelta="-140%" android:toYDelta="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_cubic" + android:startOffset="150" + android:duration="350"/> + + <scale android:fromXScale=".6" android:toXScale="1.0" + android:fromYScale=".6" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350" /> + +</set>
\ No newline at end of file diff --git a/core/res/res/anim-sw720dp/task_close_exit.xml b/core/res/res/anim-sw720dp/task_close_exit.xml new file mode 100644 index 000000000000..958a7a295c22 --- /dev/null +++ b/core/res/res/anim-sw720dp/task_close_exit.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> + <alpha android:fromAlpha="1.0" android:toAlpha="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/accelerate_quad" + android:duration="350"/> + + <translate android:fromYDelta="0" android:toYDelta="140%" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:duration="350"/> + + <scale android:fromXScale="1.0" android:toXScale="0.6" + android:fromYScale="1.0" android:toYScale="0.6" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:pivotX="50%p" android:pivotY="50%p" + android:interpolator="@interpolator/decelerate_cubic" + android:duration="350" /> + + <!-- This is needed to keep the animation running while task_open_enter completes --> + <alpha android:fromAlpha="1.0" android:toAlpha="1.0" + android:interpolator="@interpolator/accelerate_quad" + android:duration="500" /> +</set>
\ No newline at end of file diff --git a/core/res/res/anim-sw720dp/task_open_enter.xml b/core/res/res/anim-sw720dp/task_open_enter.xml new file mode 100644 index 000000000000..54a2d9389493 --- /dev/null +++ b/core/res/res/anim-sw720dp/task_open_enter.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top"> + + <alpha android:fromAlpha="0" android:toAlpha="1.0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350"/> + + <translate android:fromYDelta="140%" android:toYDelta="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_cubic" + android:startOffset="150" + android:duration="350"/> + + <scale android:fromXScale=".6" android:toXScale="1.0" + android:fromYScale=".6" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:startOffset="150" + android:duration="350" /> + +</set>
\ No newline at end of file diff --git a/core/res/res/anim-sw720dp/task_open_exit.xml b/core/res/res/anim-sw720dp/task_open_exit.xml new file mode 100644 index 000000000000..18e6550b4f96 --- /dev/null +++ b/core/res/res/anim-sw720dp/task_open_exit.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, 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. +*/ +--> + +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal"> + <alpha android:fromAlpha="1.0" android:toAlpha="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/accelerate_quad" + android:duration="350"/> + + <translate android:fromYDelta="0" android:toYDelta="-140%" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quad" + android:duration="350"/> + + <scale android:fromXScale="1.0" android:toXScale="0.6" + android:fromYScale="1.0" android:toYScale="0.6" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:pivotX="50%p" android:pivotY="50%p" + android:interpolator="@interpolator/decelerate_cubic" + android:duration="350" /> + + <!-- This is needed to keep the animation running while task_open_enter completes --> + <alpha android:fromAlpha="1.0" android:toAlpha="1.0" + android:interpolator="@interpolator/accelerate_quad" + android:duration="500" /> +</set>
\ No newline at end of file diff --git a/core/res/res/anim/wallpaper_open_exit.xml b/core/res/res/anim/wallpaper_open_exit.xml index 8a2582e8eeed..905743e33c26 100644 --- a/core/res/res/anim/wallpaper_open_exit.xml +++ b/core/res/res/anim/wallpaper_open_exit.xml @@ -20,13 +20,13 @@ <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" android:zAdjustment="top"> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" - android:interpolator="@interpolator/decelerate_cubic" + android:interpolator="@interpolator/linear" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" android:duration="200" /> <scale android:fromXScale="1.0" android:toXScale="0.4" android:fromYScale="1.0" android:toYScale="0.4" android:pivotX="50%p" android:pivotY="50%p" - android:interpolator="@interpolator/decelerate_cubic" + android:interpolator="@interpolator/decelerate_quad" android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" - android:duration="300" /> + android:duration="250" /> </set>
\ No newline at end of file diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml index 2495b6771458..ff65c619eddf 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml @@ -156,8 +156,8 @@ <RelativeLayout android:id="@+id/faceLockAreaView" android:visibility="invisible" - android:layout_width="512dip" - android:layout_height="512dip" + android:layout_width="530dip" + android:layout_height="530dip" android:layout_centerInParent="true" android:background="@drawable/intro_bg"> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml index 36d4a2ab06ed..60401c9b125c 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml @@ -159,8 +159,8 @@ <RelativeLayout android:id="@+id/faceLockAreaView" android:visibility="invisible" - android:layout_width="512dip" - android:layout_height="512dip" + android:layout_width="440dip" + android:layout_height="440dip" android:layout_centerInParent="true" android:background="@drawable/intro_bg"> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml index 53ecbac2935a..68499f4b2a64 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml @@ -127,8 +127,8 @@ <RelativeLayout android:id="@+id/faceLockAreaView" android:visibility="invisible" - android:layout_width="512dip" - android:layout_height="512dip" + android:layout_width="530dip" + android:layout_height="530dip" android:layout_centerInParent="true" android:background="@drawable/intro_bg"> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml index 577668fe0da0..086757d00b49 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml @@ -122,8 +122,8 @@ <RelativeLayout android:id="@+id/faceLockAreaView" android:visibility="invisible" - android:layout_width="512dip" - android:layout_height="512dip" + android:layout_width="440dip" + android:layout_height="440dip" android:layout_centerInParent="true" android:background="@drawable/intro_bg"> diff --git a/core/res/res/layout/app_permission_item.xml b/core/res/res/layout/app_permission_item.xml index 1bd267f43cb4..9b8c5ae7de20 100644 --- a/core/res/res/layout/app_permission_item.xml +++ b/core/res/res/layout/app_permission_item.xml @@ -19,37 +19,32 @@ Contains the group name and a list of permission labels under the group. --> -<RelativeLayout +<view class="android.widget.AppSecurityPermissions$PermissionItemView" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:orientation="horizontal" + android:background="?android:attr/selectableItemBackground"> <ImageView android:id="@+id/perm_icon" - android:layout_width="30dip" - android:layout_height="30dip" - android:layout_alignParentLeft="true" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginLeft="16dp" + android:layout_marginRight="8dp" android:scaleType="fitCenter" /> - - <TextView - android:id="@+id/permission_group" - android:textAppearance="?android:attr/textAppearanceMedium" - android:textStyle="bold" - android:paddingLeft="6dip" - android:layout_toRightOf="@id/perm_icon" + <ImageView android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="match_parent" + android:background="?android:attr/dividerVertical" /> <TextView - android:id="@+id/permission_list" + android:id="@+id/perm_name" android:textAppearance="?android:attr/textAppearanceSmall" - android:layout_marginTop="-4dip" - android:paddingBottom="8dip" - android:paddingLeft="6dip" - android:layout_below="@id/permission_group" - android:layout_toRightOf="@id/perm_icon" + android:layout_marginLeft="8dp" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:layout_gravity="top|left" /> -</RelativeLayout> +</view> diff --git a/core/res/res/layout/app_permission_item_old.xml b/core/res/res/layout/app_permission_item_old.xml new file mode 100644 index 000000000000..1bd267f43cb4 --- /dev/null +++ b/core/res/res/layout/app_permission_item_old.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- + Defines the layout of a single permission item. + Contains the group name and a list of permission labels under the group. +--> + +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/perm_icon" + android:layout_width="30dip" + android:layout_height="30dip" + android:layout_alignParentLeft="true" + android:scaleType="fitCenter" /> + + + <TextView + android:id="@+id/permission_group" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textStyle="bold" + android:paddingLeft="6dip" + android:layout_toRightOf="@id/perm_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + + <TextView + android:id="@+id/permission_list" + android:textAppearance="?android:attr/textAppearanceSmall" + android:layout_marginTop="-4dip" + android:paddingBottom="8dip" + android:paddingLeft="6dip" + android:layout_below="@id/permission_group" + android:layout_toRightOf="@id/perm_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + +</RelativeLayout> diff --git a/core/res/res/layout/app_perms_summary.xml b/core/res/res/layout/app_perms_summary.xml index 77dbc2e97479..509c502770f7 100755 --- a/core/res/res/layout/app_perms_summary.xml +++ b/core/res/res/layout/app_perms_summary.xml @@ -26,88 +26,17 @@ android:id="@+id/no_permissions" android:text="@string/no_permissions" android:textAppearance="?android:attr/textAppearanceMedium" - android:paddingLeft="16dip" - android:paddingRight="12dip" + android:paddingLeft="8dp" + android:paddingRight="8dp" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" /> - <!-- List view containing list of new permissions categorized by groups. --> + <!-- Populated with all permissions. --> <LinearLayout - android:id="@+id/new_perms_list" + android:id="@+id/perms_list" android:orientation="vertical" android:layout_width="match_parent" - android:paddingLeft="16dip" - android:paddingRight="12dip" - android:layout_height="wrap_content" /> - - <!-- List view containing list of dangerous permissions categorized by groups. --> - <LinearLayout - android:id="@+id/dangerous_perms_list" - android:orientation="vertical" - android:layout_width="match_parent" - android:paddingLeft="16dip" - android:paddingRight="12dip" - android:layout_height="wrap_content" /> - - <!-- Clickable area letting user display additional permissions. --> - <LinearLayout - android:id="@+id/show_more" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:visibility="gone" - android:layout_marginTop="12dip" - android:layout_marginBottom="16dip"> - - <View - android:layout_width="match_parent" - android:layout_height="1dip" - android:background="?android:attr/listDivider" /> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingTop="16dip" - android:paddingBottom="12dip" - android:paddingLeft="16dip" - android:duplicateParentState="true" - android:background="?android:attr/selectableItemBackground"> - - <TextView - android:id="@+id/show_more_text" - android:textAppearance="?android:attr/textAppearanceMedium" - android:duplicateParentState="true" - android:layout_alignTop="@+id/show_more_icon" - android:layout_gravity="center_vertical" - android:paddingLeft="36dip" - android:layout_weight="1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - - <ImageView - android:id="@id/show_more_icon" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginRight="12dip" /> - - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="1dip" - android:background="?android:attr/listDivider" /> - - </LinearLayout> - - <!-- List view containing list of permissions that aren't dangerous. --> - <LinearLayout - android:id="@+id/non_dangerous_perms_list" - android:orientation="vertical" - android:paddingLeft="16dip" - android:paddingRight="12dip" - android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> diff --git a/core/res/res/layout/choose_type_and_account.xml b/core/res/res/layout/choose_type_and_account.xml index 5a0512633402..d7068b7bf44f 100644 --- a/core/res/res/layout/choose_type_and_account.xml +++ b/core/res/res/layout/choose_type_and_account.xml @@ -38,7 +38,7 @@ <View android:layout_height="3dip" android:layout_width="match_parent" android:background="#323232"/> - + <TextView android:id="@+id/description" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -56,7 +56,12 @@ android:layout_weight="1" android:scrollbarAlwaysDrawVerticalTrack="true" /> + <View android:layout_height="1dip" + android:layout_width="match_parent" + android:background="?android:attr/dividerHorizontal" /> + <Button android:id="@+id/addAccount" + style="?android:attr/buttonBarButtonStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="2dip" diff --git a/core/res/res/layout/notification_template_base.xml b/core/res/res/layout/notification_template_base.xml index 1dc6275a72ce..63d20e473d6c 100644 --- a/core/res/res/layout/notification_template_base.xml +++ b/core/res/res/layout/notification_template_base.xml @@ -85,12 +85,15 @@ android:ellipsize="marquee" android:visibility="gone" /> - <TextView android:id="@+id/big_text" - android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + <TextView android:id="@+id/overflow_title" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:singleLine="false" + android:singleLine="true" + android:ellipsize="marquee" + android:fadingEdge="horizontal" android:visibility="gone" + android:layout_weight="1" /> <LinearLayout android:id="@+id/line3" @@ -136,14 +139,5 @@ android:visibility="gone" style="?android:attr/progressBarStyleHorizontal" /> - <LinearLayout - android:id="@+id/actions" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:visibility="gone" - > - <!-- actions will be added here --> - </LinearLayout> </LinearLayout> </FrameLayout> diff --git a/core/res/res/layout/notification_template_big_base.xml b/core/res/res/layout/notification_template_big_base.xml index 5de584df624d..097d15da9f1b 100644 --- a/core/res/res/layout/notification_template_big_base.xml +++ b/core/res/res/layout/notification_template_big_base.xml @@ -137,12 +137,13 @@ style="?android:attr/progressBarStyleHorizontal" /> <LinearLayout - android:id="@+id/actions" + android:id="@+id/actions" android:layout_width="match_parent" android:layout_height="wrap_content" + android:orientation="vertical" android:visibility="gone" - > - <!-- actions will be added here --> + > + <!-- actions will be added here --> </LinearLayout> </LinearLayout> </FrameLayout> diff --git a/core/res/res/layout/notification_template_big_text.xml b/core/res/res/layout/notification_template_big_text.xml index b6d71e1f35a6..a225ab1dc266 100644 --- a/core/res/res/layout/notification_template_big_text.xml +++ b/core/res/res/layout/notification_template_big_text.xml @@ -33,7 +33,6 @@ android:layout_height="wrap_content" android:layout_gravity="fill_vertical" android:layout_marginLeft="@dimen/notification_large_icon_width" - android:minHeight="@dimen/notification_large_icon_height" android:orientation="vertical" android:paddingLeft="12dp" android:paddingRight="12dp" @@ -42,54 +41,82 @@ android:gravity="center_vertical" > <LinearLayout - android:id="@+id/line1" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - > - <TextView android:id="@+id/title" - android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" + android:minHeight="@dimen/notification_large_icon_height" + android:orientation="vertical" + > + <LinearLayout + android:id="@+id/line1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + > + <TextView android:id="@+id/title" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:fadingEdge="horizontal" + android:layout_weight="1" + /> + <ViewStub android:id="@+id/time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="0" + android:visibility="gone" + android:layout="@layout/notification_template_part_time" + /> + <ViewStub android:id="@+id/chronometer" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="0" + android:visibility="gone" + android:layout="@layout/notification_template_part_chronometer" + /> + </LinearLayout> + <TextView android:id="@+id/text2" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="-2dp" + android:layout_marginBottom="-2dp" android:singleLine="true" - android:ellipsize="marquee" android:fadingEdge="horizontal" - android:layout_weight="1" - /> - <ViewStub android:id="@+id/time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_weight="0" + android:ellipsize="marquee" android:visibility="gone" - android:layout="@layout/notification_template_part_time" /> - <ViewStub android:id="@+id/chronometer" - android:layout_width="wrap_content" + <TextView android:id="@+id/big_text" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_weight="0" + android:layout_marginTop="2dp" + android:layout_marginBottom="2dp" + android:singleLine="false" android:visibility="gone" - android:layout="@layout/notification_template_part_chronometer" /> </LinearLayout> - <TextView android:id="@+id/text2" - android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2" + <LinearLayout + android:id="@+id/actions" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="-2dp" - android:layout_marginBottom="-2dp" - android:singleLine="true" - android:fadingEdge="horizontal" - android:ellipsize="marquee" + android:orientation="vertical" android:visibility="gone" - /> - <TextView android:id="@+id/big_text" - android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + > + <!-- actions will be added here --> + </LinearLayout> + <TextView android:id="@+id/overflow_title" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:singleLine="false" + android:singleLine="true" + android:ellipsize="marquee" + android:fadingEdge="horizontal" android:visibility="gone" + android:layout_weight="1" /> <LinearLayout android:id="@+id/line3" @@ -135,13 +162,5 @@ android:visibility="gone" style="?android:attr/progressBarStyleHorizontal" /> - <LinearLayout - android:id="@+id/actions" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:visibility="gone" - > - <!-- actions will be added here --> - </LinearLayout> </LinearLayout> </FrameLayout> diff --git a/core/res/res/layout/notification_template_inbox.xml b/core/res/res/layout/notification_template_inbox.xml index 82342d43317f..05a3d6292d23 100644 --- a/core/res/res/layout/notification_template_inbox.xml +++ b/core/res/res/layout/notification_template_inbox.xml @@ -87,6 +87,8 @@ android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" + android:paddingTop="4dp" + android:paddingBottom="4dp" android:visibility="gone" /> <TextView android:id="@+id/inbox_text1" @@ -95,6 +97,8 @@ android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" + android:paddingTop="4dp" + android:paddingBottom="4dp" android:visibility="gone" /> <TextView android:id="@+id/inbox_text2" @@ -103,6 +107,8 @@ android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" + android:paddingTop="4dp" + android:paddingBottom="4dp" android:visibility="gone" /> <TextView android:id="@+id/inbox_text3" @@ -111,6 +117,8 @@ android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" + android:paddingTop="4dp" + android:paddingBottom="4dp" android:visibility="gone" /> <TextView android:id="@+id/inbox_text4" @@ -119,9 +127,30 @@ android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" + android:paddingTop="4dp" + android:paddingBottom="4dp" android:visibility="gone" /> <LinearLayout + android:id="@+id/actions" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + > + <!-- actions will be added here --> + </LinearLayout> + <TextView android:id="@+id/overflow_title" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:fadingEdge="horizontal" + android:visibility="gone" + android:layout_weight="1" + /> + <LinearLayout android:id="@+id/line3" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -165,13 +194,5 @@ android:visibility="gone" style="?android:attr/progressBarStyleHorizontal" /> - <LinearLayout - android:id="@+id/actions" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:visibility="gone" - > - <!-- actions will be added here --> - </LinearLayout> </LinearLayout> </FrameLayout> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 5f48a1c47f8e..3eeffe4b1774 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Jou tablet gaan nou afskakel."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Jou foon gaan nou afsit."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Wil jy afskakel?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Herlaai na veilige modus"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Wil jy na veilige modus herlaai? Dit sal alle derdeparty programme deaktiveer wat jy geïnstalleer het. Hulle sal herstel word wanneer jy weer herlaai."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Onlangs"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Geen onlangse programme nie."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Tablet-opsies"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Jou boodskappe"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Lees en skryf jou SMS, e-pos en ander boodskappe."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Jou persoonlike inligting"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkte toegang tot jou kontakte en kalender wat op die tablet gestoor is."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkte toegang tot jou kontakte en kalender wat op die foon gestoor is."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Jou ligging"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitor jou fisiese ligging."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Netwerkkommunikasie"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Kry toegang tot verskeie netwerkfunksies."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Jou rekeninge"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Kry toegang tot beskikbare rekeninge."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardewarekontroles"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Laervlak-toegang en -beheer van die stelsel."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ontwikkelingshulpmiddels"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Kenmerke net nodig vir programontwikkelaars."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Stoor"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Gebruik die USB-berging."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Lees die SD-kaart."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Laat die program toe om die statusbalk te wees."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"vou statusbalk in of uit"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Laat die program toe om die statusbalk uit te vou of in te vou."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"onderskep uitgaande oproepe"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"herlei uitgaande oproepe"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Laat die program toe om uitgaande oproepe te verwerk en om die nommer wat geskakel moet word, te verander. Kwaadwillige programme kan uitgaande oproepe monitor, herlei, of voorkom."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"ontvang SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"ontvang teksboodskappe (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Laat die program toe om SMS-boodskappe te ontvang en te verwerk. Kwaadwillige programme kan jou boodskappe monitor of uitvee sonder om dit aan jou te wys."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"ontvang MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"ontvang teksboodskappe (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Laat die program toe om MMS-boodskappe te ontvang en te verwerk. Kwaadwillige programme kan jou boodskappe monitor of uitvee sonder om dit aan jou te wys."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ontvang nooduitsendings"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Laat die program toe om nooduitsending-boodskappe te ontvang en te verwerk. Hierdie toestemming is net beskikbaar vir stelselprogramme."</string> @@ -209,31 +275,33 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Laat die program toe om SMS-boodskappe te stuur. Kwaadwillige programme kan jou geld kos deur boodskappe te stuur sonder jou bevestiging."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"stuur sms-boodskappe met geen bestiging"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Laat die program toe om SMS-boodskappe te stuur. Kwaadwillige programme kan jou geld kos deur boodskappe te stuur sonder jou bevestiging."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"lees SMS of MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"lees jou teksboodskappe (SMS of MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Laat die program toe om SMS-boodskappe te lees wat op jou tablet of SIM-kaart gestoor is. Kwaadwillige programme kan dalk jou vertroulike boodskappe lees."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Laat die program toe om SMS-boodskappe te lees wat op jou foon of SIM-kaart gestoor is. Kwaadwillige programme kan dalk jou vertroulike boodskappe lees."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"verander SMS of MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"redigeer jou teksboodskappe (SMS of MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Laat die program toe om SMS-boodskappe te lees wat op jou tablet of SIM-kaart gestoor is. Kwaadwillige programme kan dalk jou boodskappe uitvee."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Laat die program toe om SMS-boodskappe te skryf wat op jou foon of SIM-kaart gestoor is. Kwaadwillige programme kan dalk jou boodskappe uitvee."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"ontvang WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ontvang teksboodskappe (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Laat die program toe om WAP-boodskappe te ontvang en te verwerk. Kwaadwillige programme kan jou boodskappe monitor of uitvee sonder om dit aan jou te wys."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"haal lopende programme op"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Laat die program toe om inligting op te haal oor huidige en onlangse take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"haal besonderhede van lopende programme op"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Laat die program toe om inligting op te haal oor huidige en onlangse lopende take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"herrangskik lopende programme"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Laat die program toe om take na die voorgrond en agtergrond te skuif. Kwaadwillige programme kan hulself sonder jou beheer na vore dwing."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"stop lopende programme"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Laat die program toe om take te verwyder en hul programme te dood. Kwaadwillige programme kan die gedrag van ander programme ontwrig."</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"begin enige aktiwiteit"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Laat die program toe om \'n aktiwiteit te begin, ongeag van toestemming-beskerming of uitgevoerde status."</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Laat die program toe om \'n aktiwiteit te begin, ongeag toestemming-beskerming of uitgevoerde status."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"stel skermversoenbaarheid"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Laat die program toe om om die skermversoenbaarheid-modus van ander programme te beheer. Kwaadwillige programme kan die gedrag van ander programme breek."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"aktiveer programontfouting"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Laat die program toe om ontfouting vir \'n ander program af te skakel. Kwaadwillige programme kan dit dalk gebruik om ander programme te dood."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"Verander jou UI-instellings"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"verander stelsel se vertooninstellings"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Laat die program toe om die huidige opstelling te verander, soos die locale of algehele lettergrootte."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktiveer motormodus"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Laat die program toe om die motormodus te aktiveer."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"stop agtergrondprosesse"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"maak ander programme toe"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Laat die program toe om die agtergrondprosesse van ander programme te dood, selfs al is geheue nie min nie."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"dwing ander programme om te stop"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Laat die program toe om ander programme te dwing om te stop."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Laat die program toe om \'n kennisgewing uit te saai dat \'n WAP PUSH-boodskap ontvang is. Kwaadwillige programme kan dit dalk gebruik om MMS-boodskap-ontvangsbewyse na te maak of die inhoud van enige webbladsy stilweg te vervang met kwaadwillige variante."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"beperk hoeveelheid lopende prosesse"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Laat die program toe om die maksimum getal prosesse te beheer wat sal loop. Nooit nodig vir normale programme nie."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"maak dat alle agtergrondprogramme sluit"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"dwing agtergrondprogramme om te sluit"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Laat die program toe om te beheer of aktiwiteite altyd klaar maak sodra hulle na die agtergrond beweeg. Nooit nodig vir normale programme nie."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"verander batterystatistiek"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Laat die program toe om battery-statistieke te versamel. Nie vir gebruik deur normale programme nie."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Laat die program toe om die volle rugsteun-bevestiging-UI te laat loop. Moet nie deur enige program gebruik word nie."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"wys ongemagtigde vensters"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Laat die program toe om vensters te skep wat bedoel is om deur die interne stelsel se gebruikerkoppelvlak gebruik te word. Nie vir gebruik deur normale programme nie."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"vertoon kennisgewings op stelselvlak"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"teken oor ander programme"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Laat die program toe om stelselopletberig-vensters te wys. Kwaadwillige programme kan die hele skerm oorneem."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"verander globale animasiespoed"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Laat die program toe om die globale animasiespoed te eniger tyd te verander (vinniger of stadiger animasie)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Laat \'n program toe om spesifieke toestemmings te verleen of te herroep vir die betrokke program of ander programme. Kwaadwillige programme kan dit gebruik om toegang te verkry tot kenmerke waarvoor jy nie toestemming verleen het nie."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"stel voorkeurprogramme"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Laat die program toe om jou voorkeur-programme te verander. Kwaadwillige programme kan stilweg die programme wat loop, verander, wat jou bestaande programme bedrieg om private data oor jou in te samel."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"verander globale stelselinstellings"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"verander stelsel-instellings"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Laat die program toe om die stelsel se instellingsdata te verander. Kwaadwillige programme kan dalk jou stelsel se opstelling korrupteer."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"wysig beveiligde stelselinstellings"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Laat die program toe om die stelsel se beveiligde instellingsdata te verander. Nie vir gebruik deur normale programme nie."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"verander die Google-dienstekaart"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Laat die program toe om die Google-dienste-kaart te verander. Nie vir gebruik deur normale programme nie."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"begin outomaties sodra aansit"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"laat loop wanneer begin"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Laat die program toe om homself te begin so gou as moontlik nadat die stelsel laai. Dit maak dat dit langer neem vir die tablet om te begin, en dit laat die foon toe om die tablet stadiger te maak omdat dit altyd loop."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Laat die program toe om homself te begin so gou as moontlik nadat die stelsel laai. Dit maak dat dit langer neem vir die foon om te begin, en dit laat die foon toe om die foon stadiger te maak omdat dit altyd loop."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"Stuur klewerige uitsending"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Laat die program toe om klewerige uitsendings te stuur, wat oorbly nadat die uitsending klaar is. Kwaadwillige programme kan die tablet stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Laat die program toe om klewerige uitsendings te stuur, wat oorbly nadat die uitsending klaar is. Kwaadwillige programme kan die foon stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"lees kontakdata"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"skryf kontakdata"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"lees jou kontakte"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Laat die program toe om al die data oor jou kontakte wat op jou tablet geberg is te lees, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata aan ander mense te stuur."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Laat die program toe om al die data oor jou kontakte wat op jou foon geberg is te lees, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata aan ander mense te stuur."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"verander jou kontakte"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Laat die program toe om al die data oor jou kontakte wat op jou tablet geberg is te verander, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomateise voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata uit te vee of te verander."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Laat die program toe om al die data oor jou kontakte wat op jou foon geberg is te verander, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata uit te vee of te verander."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"lees oproeprekord"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Laat die program toe om jou tablet se oproeprekord, insluitende data oor inkomende en uitgaande oproepe, te lees. Kwaadwillige programme kan dit gebruik om jou data na ander mense te stuur."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Laat die program toe om jou foon se oproeprekord, insluitende data oor inkomende en uitgaande oproepe, te lees. Kwaadwillige programme kan dit gebruik om jou data na ander mense te stuur."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"skryf oproeprekord"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Laat die program toe om jou tablet se oproeprekord, insluitende data oor inkomende en uitgaande oproepe, te verander. Kwaadwillige programme kan dit gebruik om jou oproeprekord uit te vee of te verander."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Laat die program toe om jou foon se oproeprekord, insluitende data oor inkomende en uitgaande oproepe, te verander. Kwaadwillige programme kan dit gebruik om jou oproeprekord uit te vee of te verander."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"lees jou profieldata"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"lees jou eie kontakkaart"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Laat die program toe om persoonlike profielinligting te lees wat op jou toestel gestoor is, soos jou naam en kontakbesonderhede. Dit beteken dat die program jou kan identifiseer en jou profielinligting aan ander mense kan stuur."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"skryf na jou profieldata"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"verander jou eie kontakkaart"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Laat die program toe om persoonlike profielinligting wat op jou toestel gestoor is, te verander of by te voeg, soos jou naam en kontakinligting. Dit beteken dat ander programme jou kan identifiseer en jou profielinligting aan ander mense kan stuur."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lees jou sosiale stroom"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Laat die program toe om sosiale nuus van jou en jou vriende te sien en te sinkroniseer. Kwaadwillige programme kan dit gebruik om private kommunikasie tussen jou en jou vriende te lees op sosiale netwerke."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forseer foonherlaai"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Laat die program toe om die tablet te dwing om te herselflaai."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Laat die program toe om die foon te dwing om te herselflaai."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"Heg en ontheg lêerstelsels"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"gaan in by USB-berging se lêerstelsel"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"gaan in by SD-kaart se lêerstelsel"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Laat die program toe om lêerstelsels vir verwyderbare berging te heg of te ontheg."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formateer eksterne berging"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"vee USB-berging uit"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"vee SD-kaart uit"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Laat die program toe om verwyderbare geheue te formateer."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"kry inligting oor interne berging"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Laat die program toe om inligting oor interne geheue te kry."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Laat die program toe om interne geheue te heg/ontheg."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"herbenoem interne berging"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Laat die program toe om interne geheue te hernoem."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"beheer vibreerfunksie"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"beheer vibrasie"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Laat die program toe om die vibrator te beheer."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"beheer flitslig"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Laat die program toe om die flitslig te beheer."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Laat die program toe om die stelsel te vertel watter legstukke deur watter program gebruik kan word. \'n Program met hierdie toestemming kan toegang tot persoonlike inligting aan ander programme gee. Nie vir gebruik deur normale programme nie."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"verander foonstatus"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Laat die program toe om die foonkenmerke van die toestel te beheer. \'n Program met hierdie toestemming kan tussen netwerke wissel, die foonradio aan en af skakel, en dies meer, sonder om jou ooit te laat weet."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"lees foon se staat en identiteit"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"lees foonstatus en identiteit"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Laat die program toe om die foonkenmerke van die toestel te gebruik. \'n Program met hierdie toestemming kan die foonnommer en reeksnommer van die foon bepaal, en bepaal of \'n oproep besig is, wat die nommer is van die persoon wat bel, en dies meer."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"verhoed dat tablet slaap"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"verhoed foon om te slaap"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Laat loop as \'n laevlak-vervaardigertoets, sodat volle toegang tot die foonhardeware verkry word. Net beskikbaar wanneer \'n foon in vervaardigertoets-modus loop."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"stel muurpapier"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Laat die program toe om die stelsel se muurpapier te stel."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"stel wenke vir muurpapiergrootte"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"verstel jou muurpapier se grootte"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Laat die program toe om die stelsel se muurpapier se groottewenke te stel."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"stel stelsel terug na fabrieksverstek"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Laat die program toe om die stelsel terug te stel na sy fabriekinstellings, al die data, opstelling en geïnstalleerde programme uit te vee."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Laat die program toe om die foon se tydsone te verander."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"tree op as die AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Laat die program toe om oproepe na AccountAuthenticators te maak."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"ontdek bekende rekeninge"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"soek rekeninge op die toestel"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Laat die program toe om \'n lys rekeninge te kry wat aan die tablet bekend is."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Laat die program toe om \'n lys rekeninge te kry wat aan die foon bekend is."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"dien as rekeningstawer"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"skep rekeninge en stel wagwoorde"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Laat die program toe om die rekeningmagtiger-vermoëns van die AccountManager te gebruik, insluitend om rekeninge te skep en hulle wagwoorde te kry en in te stel."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"bestuur die rekeningelys"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"voeg by of verwyder rekeninge"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Laat die program toe om handelinge uit te voer soos om rekeninge by te voeg of te verwyder, en hul wagwoorde uit te vee."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"gebruik die stawingeiebewyse van \'n rekening"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"gebruik rekeninge op die toestel"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Laat die program toe om magtigingtokens te versoek."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"bekyk netwerkstatus"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"bekyk netwerkverbindings"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Laat die program toe om die status van alle netwerke te sien."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"Volledige internettoegang"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Laat die program toe om netwerksokke te skep."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Laat die program toe om die status van verbinde netwerkkonnektiwiteit te verander."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"verander agtergronddata-gebruik-instelling"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Laat die program toe om die agtergronddatagebruik te verander."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"bekyk Wi-Fi-status"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"bekyk Wi-Fi-verbindings"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Laat die program toe om die inligting te sien oor die status van Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"verander Wi-Fi-status"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"koppel en ontkoppel van Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Laat die program toe om aan Wi-Fi-toegangspunte te koppel en daarvan te ontkoppel, en om veranderinge aan te bring aan opgestelde Wi-Fi-netwerke."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"laat Wi-Fi-multisendontvangs toe"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Laat die program toe om pakkies te ontvang wat nie direk aan jou toestel geadresseer is nie. Dit kan nuttig wees wanneer dienste digby gebied word. Dit gebruik meer krag as die niemultisaai-modus."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth-administrasie"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"gaan in by Bluetooth-instellings"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Laat die program toe om die plaaslike Bluetooth-tablet op te stel, en om met afstandbeheer toestelle saam te bind."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Laat die program toe om die plaaslike Bluetooth-foon op te stel en te ontdek en met afgeleë toestelle saam te bind."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Sien WiMAX-status"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Bekyk WiMAX-verbindings"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Laat die program toe om die inligting te sien oor die status van WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Verander WiMAX-status"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Laat die program toe om aan WiMAX-toegangspunte te koppel en daarvan te ontkoppel."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"skep Bluetooth-verbindings"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"bind saam met Bluetooth-toestelle"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Laat die program toe om die opstelling van die plaaslike Bluetooth-tablet te sien, en om verbindings met saamgebinde toestelle te maak en te aanvaar."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Laat die program toe om die opstelling van die plaaslike Bluetooth-foon te sien, en om verbindings met saamgebinde toestelle te maak en te aanvaar."</string> <string name="permlab_nfc" msgid="4423351274757876953">"beheer kortveldkommunikasie"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Laat die program toe om met kortveldkommunikasie- (NFC) merkers, kaarte en lesers te kommunikeer."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"deaktiveer sleutelslot"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"deaktiveer jou skermslot"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Laat die program toe om die sleutelslot te deaktiveer en enige geassosieerde wagwoordsekuriteit te deaktiveer. \'n Aanvaarbare voorbeeld hiervan is om die sleutelslot te deaktiveer wanneer \'n oproep inkom, en dit dan weer te aktiveer wanneer die oproep klaar is."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"lees sinkroniseer-instellings"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Laat die program toe om die sinkroniseerinstellings te lees, soos of sinkronisering aangeskakel vir die Mense-program."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"skryf sinkronisasie-instellings"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"wissel tussen sinkronisasie aan en af"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Laat die program die sinkroniseerinstellings verander, soos of sinkronisering geaktiveer is vir die Mense-program."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"lees sinkroniseerstatistiek"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Laat die program toe om die sinkroniseerstatistieke te lees, soos die geskiedenis van sinkronisering wat plaasgevind het."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Laat die program toe om details oor die tans gesinkroniseerde strome te kry."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"skryf ingetekende strome"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Laat die program toe om jou huidig gesinkroniseerde strome te verander. Kwaadwillige programme kan dalk jou gesinkroniseerde strome verander."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"lees gebruikergedefinieerde woordeboek"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"lees terme wat jy by die woordeboek gevoeg het"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Laat die program toe om enige private woorde, name en frases te lees wat die gebruiker in die gebruikerwoordeboek gestoor het."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"skryf na gebruikergedefinieerde woordeboek"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Laat die program toe om nuwe woorde in die gebruikerwoordeboek te skryf."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"lees USB-geheue se inhoud"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"lees SD-kaart se inhoud"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Laat die program toe om die USB-geheue se inhoud te lees."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Laat die program toe om die SD-kaart se inhoud te lees."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"verander/vee uit USB-berging se inhoud"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"wysig/vee uit SD-kaart se inhoud"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lees jou USB-berging se inhoud"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lees jou SD-kaart se inhoud"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Laat die program toe om die USB-berging se inhoud te lees, wat foto\'s en media kan insluit."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Laat die program toe om die SD-kaart se inhoud te lees, wat foto\'s en media kan insluit."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"verander of vee die inhoud van jou USB-berging uit"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"verander of vee die inhoud van jou SD-kaart uit"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Laat die program toe om die USB-geheue te skryf."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Laat die program toe om na die SD-kaart te skryf."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"verander/vee uit interne mediabergingsinhoud"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Geen SIM-kaart in foon nie."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Steek \'n SIM-kaart in."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Die SIM-kaart is weg of nie leesbaar nie. Steek \'n SIM-kaart in."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Jou SIM-kaart is permanent gedeaktiveer."\n" Kontak jou draadlose diensverskaffer vir \'n ander SIM-kaart."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Vorigesnit-knoppie"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Volgendesnit-knoppie"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"karakter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"woord"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"skakel"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"reël"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Fabriektoets het gefaal"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Gemeente"</string> <string name="autofill_area" msgid="3547409050889952423">"Area"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lees blaaier se geskiedenis en boekmerke"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lees jou web-boekmerke en geskiedenis"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Laat die program toe om al die URL\'e te lees wat die blaaier besoek het, en al blaaier se boekmerke ook."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skryf blaaier se geskiedenis en boekmerke"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skryf webboekmerke en -geskiedenis"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou tablet gestoor is, te verander. Kwaadwillige programme kan dit gebruik om jou blaaier se data uit te vee of te verander."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou foon gestoor is, te verander. Kwaadwillige programme kan dit gebruik om jou blaaier se data uit te vee of te verander."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"stel alarm in wekker"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"stel \'n wekker"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Laat die program toe om \'n alarm in \'n geïnstalleerde wekkerprogram te stel. Sommige wekkerprogramme werk dalk nie met hierdie funksie nie."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"voeg stemboodskap by"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Laat die program toe om boodskappe by te voeg by jou stempos-inkassie."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Stel"</string> <string name="date_time_done" msgid="2507683751759308828">"Klaar"</string> <string name="default_permission_group" msgid="2690160991405646128">"Verstek"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUUT: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUUT: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Geen toestemmings benodig nie"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Versteek"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Wys alle"</b></string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 9e9911402009..fc47c6becb4d 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -146,8 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"ጡባዊዎ ይዘጋል።"</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"ስልክዎ ይዘጋል።"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"ዘግተህ መውጣት ትፈልጋለህ?"</string> - <string name="reboot_safemode_title" msgid="7054509914500140361">"ወደ ጥንቁቅ ሁናቴ ውስጥ ዳግም አስጀምር"</string> - <string name="reboot_safemode_confirm" msgid="55293944502784668">"ወደ ጥንቁቅ ሁናቴ ውስጥ ዳግም ማስጀመር ትፈልጋለህ? ይሄ ሁሉንም የጫንካቸው የሶስተኛ ወገን መተግበሪያዎችን ያሰናክላል። እንደገና ዳግም ስታስጀምር ይመለስሉሃል።"</string> + <string name="reboot_safemode_title" msgid="7054509914500140361">"በአስተማማኝ ኹነታ ውስጥ ዳግም አስጀምር"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"በአስተማማኝ ኹነታ ውስጥ ዳግም ማስጀመር ትፈልጋለህ? ይሄ ሁሉንም የጫንካቸው የሶስተኛ ወገን መተግበሪያዎችን ያሰናክላል። እንደገና ዳግም ስታስጀምር ይመለስሉሃል።"</string> <string name="recent_tasks_title" msgid="3691764623638127888">"የቅርብ ጊዜ"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"ምንም የቅርብ ጊዜ ትግበራዎች የሉም"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"የጡባዊ አማራጮች"</string> @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"መልዕክቶችዎ"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"ኤስ ኤም ኤስህን፣ ኢሜይልህን እና ሌላ መልዕክቶችህን አንብብና ፃፍ።"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"የግል መረጃዎ"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"በጡባዊዎ ላይ የተከማቹ እውቂያዎች እና ቀን መቁጠሪያጋ ቀጥታ ይድረሱ።"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"በስልኩ ላይ ወደ ተከማቸው ዕውቂያዎችዎ እና የቀን መቁጠሪያዎበቀጥታ ይድረሱ"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"ስፍራዎ"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"ያለህበትን አካባቢ ተቆጣጠር።"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"የአውታረ መረብ ግኑኙነት"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"የተለያዩ የአውታረ መረብ ባህሪያትን ድረስ።"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"መለያዎችዎ"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">" ለተገኙት መለያዎች ድረስ"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"የሃርድዌር ቁጥጥሮች"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"የስርዓቱ ዝቅተኛ-ደረጃ ድረስ እና ጠብቅ"</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"የግንባታ መሣሪያዎች"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"ባህሪያት ለመተግበሪያ ገንቢዎች ብቻ ያስፈልጋሉ።"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"ማከማቻ"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"የUSB ማከማቻ ድረስ።"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD ካርድ ድረስ"</string> @@ -193,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"የኹናቴ አሞሌ እንዲሆን ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"የሁኔታ አሞሌ ዘርጋ/ሰብስብ"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"የሁኔታ አሞሌን ለመዝረጋት እና ለመሰብሰብ ለመተግበሪያው ይፈቅዳሉ።"</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"ወጪ ጥሪዎችአቋርጥ"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"የወጪ ጥሪዎች አቅጣጫ ቀይር"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"ወጪ ጥሪዎችን ለማስኬድ እና የሚደወለውን ቁጥር ለመለወጥ ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች ለመቆጣጠር፣ አቅጣጫ ለማስቀየር፣ ወይም ወጪ ጥሪዎችን ሊከላከሉ ይችላሉ፡፡"</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS ተቀበል"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"የፅሁፍ መልዕክቶችን ተቀበል (ኤስ.ኤም.ኤስ.)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"ኤስ ኤም ኤስ መልዕክቶችን ለመቀበል እና ለማስኬድ ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች አንተን ሳያሳዩ ሊሰርዙዎቸው ወይም መልዕክቶችህን ሊቆጣጠሩ ይችላሉ፡፡"</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS ተቀበል"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"የፅሁፍ መልዕክቶችን ተቀበል (ኤም.ኤም.ኤስ.)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"ኤም ኤም ኤስ መልዕክቶችን ለመቀበል እና ለማስኬድ ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች አንተን ሳያሳዩ ሊሰርዙዎቸው ወይም መልዕክቶችህን ሊቆጣጠሩ ይችላሉ፡፡"</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"የአደጋ ጊዜ ስርጭቶችን ተቀበል"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"ድንገተኛ የስርጭት መልዕክቶችን ለመቀበል እና ለማስኬድ ለመተግበሪያው ይፈቅዳሉ፡፡ ይሄ ፍቃድ ለስርዓት መተግበሪዎች ብቻ ነው የሚገኘው፡፡"</string> @@ -207,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"ኤስ ኤም ኤስ መልዕክቶችን መላክ ለመተግበሪያው ይፈቅዳሉ፡፡ ያላንተ ማረጋገጫ ተንኮል አዘል መተግበሪያዎች መልዕክቶችን በመላክ ገንዘብ ሊያስወጡህ ይችላሉ፡፡"</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ያለ ምንም ማረጋገጫ የSMS መልዕክቶች ላክ"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"ኤስ ኤም ኤስ መልዕክቶችን መላክ ለመተግበሪያው ይፈቅዳሉ፡፡ ያላንተ ማረጋገጫ ተንኮል አዘል መተግበሪያዎች መልዕክቶችን በመላክ ገንዘብ ሊያስወጡህ ይችላሉ፡፡"</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS ወይምMMS አንብብ"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"የጽሑፍ መልዕክቶችህን አንብብ (ኤስ.ኤም.ኤስ. ወይም ኤም.ኤም.ኤስ.)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"በጡባዊ ተኮህ ወይም ሲም ካርድህ ላይ የተከማቹ የኤስ ኤም ኤስ መልዕክቶችን ለማንበብ ለመተግበሪያዎቹ ይፈቅዳሉ፡፡ ሚስጥራዊ መልዕክቶችህን ጎጂ መተግበሪያዎች ሊያነቡ ይችላሉ፡፡"</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"በስልክህ ወይም ሲም ካርድህ ላይ የተከማቹ የኤስ ኤም ኤስ መልዕክቶችን ለማንበብ ለመተግበሪያዎቹ ይፈቅዳሉ፡፡ ሚስጥራዊ መልዕክቶችህን ጎጂ መተግበሪያዎች ሊያነቡ ይችላሉ፡፡"</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS ወይም MMS አርትዕ"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"የጽሑፍ መልዕክቶችህን አርትዕ (ኤስ.ኤም.ኤስ. ወይም ኤም.ኤም.ኤስ.)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"በጡባዊ ተኮህ ወይም ሲም ካርድህ ላይ ኤስ ኤም ኤስ መልዕክቶችን ለመፃፍ ለመተግበሪያው ይፈቅዳሉ፡፡መልዕክቶችህን ተንኮል አዘል መተግበሪያዎች ሊሰርዙ ይችላሉ፡፡"</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"በስልክህ ወይም ሲም ካርድህ ላይ ኤስ ኤም ኤስ መልዕክቶችን ለመፃፍ ለመተግበሪያው ይፈቅዳሉ፡፡መልዕክቶችህን ተንኮል አዘል መተግበሪያዎች ሊሰርዙ ይችላሉ፡፡"</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP ተቀበል"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"የፅሁፍ መልዕክቶችን ተቀበል (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"WAP መልዕክቶችን ለመቀበል እና ለማስኬድ ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች አንተን ሳያሳዩ ሊሰርዙዎቸው ወይም መልዕክቶችህን ሊቆጣጠሩ ይችላሉ፡፡"</string> <string name="permlab_getTasks" msgid="6466095396623933906">"አሂድ መተግበሪያዎችን ሰርስረህ አውጣ"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"ስለ አሁኑ እና በቅርቡ እየተካሄዱ ያሉ ተግባሮችን መረጃ ሰርስሮ ለማውጣት ለመተግበሪያው ይፈቅዳሉ፡፡ ስለ ሌሎች መተግበሪያዎች የግል መረጃ ተንኮል አዘል መተግበሪያዎች ሊያገኙ ይችላሉ፡፡"</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"እየሄዱ ስላሉ የመተግበሪያዎች ዝርዝሮች አምጣ"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"መተግበሪያው በአሁኑ ጊዜ እየተካሄዱ ስላሉና በቅርብ ጊዜ ስለተካሄዱ ተግባሮች መረጃ ዝርዝር እንዲያወጣ ይፈቅድለታል። ተንኮል-አዘል መተግበሪያዎች ስለ ሌሎች መተግበሪያዎች የግል መረጃ ሊያገኙ ይችላሉ።"</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"አሂድ ትግበራዎችን ድጋሚ ደርድር"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"ወደ ግንባር ዎይ እና ዳራ ስራዎችን ለማንቀሳቀስ ለመተግበሪያው ይፈቅዳሉ፡፡ ያለአንተ ቁጥጥር ተንኮል አዘል መተግበሪያዎች ራሳቸውን ወደፊት መምጣት ሊያስገድዱ ይችላሉ፡፡"</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"የአሂድ ትግበራዎች አቁም"</string> @@ -227,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"መተግበሪያው የሌሎች መተግበሪያዎች የማያ ገጽ ተኳኋኝነት ሁናቴ እንዲቆጣጠር ይፈቅዳል። ተንኮለኛ መተግበሪያዎች የሌሎች መተግበሪያዎች ባህሪ ሊሰብሩ ይችላሉ።"</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"የትግበራ ማረሚያ አንቃ"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"ለሌላ መተግበሪያ አርምን አብራ ለመተግበሪያው ይፈቅዳሉ። ሌሎች መተግበሪያዎች ለመግደል ተንኮል አዘል መተግበሪያዎች ይሄንን ሊጠቀሙት ይችላሉ።"</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"የUI ቅንብሮችን ለውጥ"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"የስርዓት ማሳያ ቅንብሮችን ቀይር"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">" እንደ አካባቢው ሁኔታ ወይም ማጠቃለያ ቅርፀ ቁምፊ መጠን የአሁኑን ውቅር ለመለወጥ ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"የመኪና ሁነታ አንቃ"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"የመኪና ሁኔታ ለማንቃት ለመተግበሪያው ይፈቅዳሉ።"</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"የዳራ ሂደትን አቁም"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"ሌሎች መተግበሪያዎችን ዝጋ"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">" ምንም እንኳን ማህደረ ትውስታ ዝቅተኛ ባይሆንም ፣ለሌሎች መተግበሪያዎች የዳራ ሂደቶችን ለመግደል ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"ሌሎች መተግበሪያዎችን ለማቆም አስገድድ"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"ሌላ ትግበራዎችን በግድ ሊያቆም ለመተግበሪያው ይፈቅዳሉ።"</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"የWAP PUSH መልዕክት እንደተቀበለ ማሳወቂያ ለማሰራጨት ለመተግበሪያው ይፈቅዳሉ፡፡ ኤም ኤም ኤስ መልዕክት መቀበልን ለማስመሰል ወይም በተንኮል አዘል መሰሎች ለማንኛውም የድር ገፅ ይዘት በዝምታ ለመተካት ተንኮል አዘል መተግበሪያዎች ሊጠቀሙበት ይችላሉ፡፡"</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"የአሂድ ሂደቶችን ቁጥር ወስን"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"የሚሄዱ ሂደቶችን የመጨረሻ ቁጥር ለመቆጣጠር ለመተግበሪያው ይፈቅዳሉ፡፡ ለመደበኛ መተግበሪያዎች መቼም አያስፈልግም፡፡"</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"ሁሉንም የዳራ ትግበራዎች ዝጋ"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"የጀርባ መተግበሪያዎች እንዲዘጉ አስገድዳቸው"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"ወዲያውኑ ወደ ዳራው እንደሄዱ እንቅስቃሴዎች ሁልጊዜ እንደተጨረሱ ለመቆጣጠር ለመተግበሪያው ይፈቅዳሉ፡፡ ለመደበኛ መተግበሪያዎች መቼም አያስፈልጉም፡፡"</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"የባትሪ ስታስቲክስ ቀይር"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"የተሰበሰቡ የባትሪ ስታስቲክሶችን ለመለወጥ ለመተግበሪያው ይፈቅዳሉ፡፡ለመደበኛ ትግበራዎች ጥቅም አይደለም፡፡"</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"ትግበራ ሙሉ የመጠባበቂያ ማረጋገጫ UI ለማስነሳት ይፈቅዳል። በሌላ በማንኛውም እንዳይገለገል።"</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"ያልተፈቀደ Windows አሳይ"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"በውስጣዊ የስርዓት የተጠቃሚ በይነገፅ ለመጠቀም የተዘጋጁ መስኮቶችን ለመፍጠር ለመተግበሪያው ይፈቅዳሉ። ለመደበኛ መተግበሪያዎች አገልግሎት አይደለም።"</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"የስርዓት-ደረጃ ማንቂያ አሳይ"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"በሌሎች መተግበሪያዎች ላይ ሳል"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"የስርዓት ማንቂያ መስኮትን ለማሳየት ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች ጠቅላላውን ማሳያ ሊቆጣጠሩት ይችላሉ፡፡"</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"የሁሉንም እነማ ፍጥነት ቀይር"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"የአለም አቀፍ ተልወስዋሽ ምስሎች ፍጥነት(ፈጣን ወይም ቀርፋፋ ተልወስዋሽ ምስሎችን) በማንኛውም ጊዜ ለመለወጥ ለመተግበሪያው ይፈቅዳሉ።"</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"የተወሰነ ፍቃዶች እንዲሰጥ ወይም እንዲከለክል ለመተግበሪያ ይፈቅዳል ወይም ሌላ መተግበሪያዎች። ተንኮል አዘል መተግበሪያዎች ያልፈቀድክላቸውን ባህሪያት ላይ ለመድረስ ይሄንን ሊጠቀሙት ይችላሉ።"</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ተመራጭ መተግበሪያዎች አዘጋጅ"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"ተመራጭ መተግበሪያዎችህን ለመቀየር ለመተግበሪያው ይፈቅዳሉ፡፡ ከአንተ የግል ውሂብ ለመሰብሰብ ያሉትን መተግበሪያዎች በመላክ፤ በመሄድ ላይ ያሉ መተግበሪያዎችን ተንኮል አዘል መተግበሪያዎች በዝምታ ሊለውጡ ይችላሉ፡፡"</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"የሁሉንም ስርዓት ቅንብሮች ቀይር"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"የስርዓት ቅንብሮችን አስተካክል"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"የስርዓት ቅንጅቶችን ውሂብ ለመቀየር ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች የስርዓትህን አወቃቀር ብልሹ ሊያደርጉት ይችላሉ፡፡"</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"የስርዓት ቅንብሮችንደህንነት ቀይር"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"የስርዓቱን ደህንነቱ የተጠበቀ ቅንጅቶችን ውሂብ ለመቀየር ለመተግበሪያው ይፈቅዳሉ፡፡ለመደበኛ ትግበራዎች አያስፈልግም።"</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"የGoogle አገልግሎቶች ካርታን ቀይር"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"ትግበራ የGoogle ካርታ አገልግሎቶችን ለመቀየር ይፈቅዳል።ለመደበኛ ትግበራዎች ጥቅም አይደለም።"</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"በራስ ሰር በአስነሳጀምር"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"መነሻ ላይ አሂድ"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"ስርዓቱ ማስጀመር እንደጨረሰ ወዲያውኑ እራሱን እንዲያስጀምር ለመተግበሪያው ይፈቅዳሉ፡፡ ይሄ ጡባዊ ተኮን ለማስጀመር ብዙ ጊዜ ሊፈጅ ይችላል እና ሁልጊዜ በማስኬድ ጠቅላላውን ጡባዊ ተኮን እንዲቀራፈፍ ለመተግበሪያው ይፈቅዳል፡፡"</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"ወዲያውኑ ስርዓቱ ማስነሳት ሲጨርስ ራሱን እንዲያስጀምር ለመተግበሪያው ይፈቅዳሉ፡፡ ይሄ ስልኩን ለማስጀመር ብዙ ጊዜ እንዲወስድ ሊያደርገው ይችላል እና ሁልጊዜ በማስኬድ ሁሉንም ስልክ ለማንቀራፈፍ ለመተግበሪያው ይፈቅዳል፡፡"</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ልጥፍ ዝርዝር ላክ"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"ስርጭቱ ከተጠናቀቀ በኋላ የሚቀሩ፣ አጣባቂ ስርጭቶችን ለመላክ ለመተግበሪያው ይፈቅዳል፡፡ በጣም ብዙ ማህደረ ትውስታ እንዲጠቀም በማድረግ ተንኮል አዘል መተግበሪያዎች ጡባዊ ተኮን እንዲቀራፈፍ ወይም ያልተረጋጋ እንዲሆን ሊያደርጉት ይችላሉ፡፡"</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"ስርጭቱ ከተጠናቀቀ በኋላ የሚቀሩ፣ አጣባቂ ስርጭቶችን ለመላክ ለመተግበሪያው ይፈቅዳሉ፡፡ በጣም ብዙ ማህደረ ትውስታ እንዲጠቀም በማድረግ ጎጂ መተግበሪያዎች ስልኩን እንዲቀራፈፍ ወይም ያልተረጋጋ እንዲሆን ሊያደርጉት ይችላሉ፡፡"</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"የዕውቂያ ውሂብ አንበብ"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"የእውቂያ ውሂብ ፃፍ"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"እውቂያዎችህን አንብብ"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"መተግበሪያው በጡባዊ ተኮህ ስለተከማቹ ዕውቂያዎች ያሉትን ውሂቦች በሙሉ፤ ጥሪ ያደረግክበትን፣ ኢሜይል የላክበትን ወይም ከተወሰኑ ግለሰቦች ጋር በሌላ መንገድ የተገናኘህበትን ድግምግሞሽ ጨምሮ እንዲያነብ ይፈቅድለታል። ይህ ለኢሜይል አድራሻዎች በራስ-አጠናቅቅ እና ለሌሎች ምቹ ባህሪያት ይረዳል። ጎጂ መተግበሪያዎች ይህንን ፈቃድ የዕውቂያህን ውሂብ ለሌሎች ሰዎች ለመላክ ሊጠቀሙት ይችላሉ።"</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"መተግበሪያው በስልክህ ስለተከማቹ ዕውቂያዎች ያሉትን ውሂቦች በሙሉ ጥሪ ያደረግክበትን፣ ኢሜይል የላክበትን ወይም ከተወሰኑ ግለሰቦች ጋር በሌላ መንገድ የተገናኘህበትን ድግምግሞሽ ጨምሮ መተግበሪያው እንዲያነብ ይፈቅድለታል። ይሄ ለኢሜይል አድራሻዎች በራስ-አጠናቅቅ እና ለሌሎች ምቹ ባህሪያት ይረዳል። ተንኮል-አዘል መተግበሪያዎች ይህንን ፈቃድ የዕውቂያህን ውሂብ ለሌሎች ሰዎች ለመላክ ሊጠቀሙት ይችላሉ።"</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"ዕውቂያዎችህን አስተካክል"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"መተግበሪያው በጡባዊ ቱኮህ ስለተከማቹ ዕውቂያዎች ያሉትን ውሂቦች በሙሉ፤ ጥሪ ያደረግክበትን፣ ኢሜይል የላክበትን ወይም ከተወሰኑ ግለሰቦች ጋር በሌላ መንገድ የተገናኘህበትን ድግምግሞሽ ጨምሮ እንዲቀይር ይፈቅድለታል። ይህ ለኢሜይል አድራሻዎች በራስ-አጠናቅቅ እና ለሌሎች ምቹ ባህሪያት ይረዳል። ተንኮል-አዘል መተግበሪያዎች ይህንን የዕውቂያህን ውሂብ ለመሰረዝ ወይም ለመቀየር ሊጠቀሙበት ይችላሉ።"</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"መተግበሪያው በስልክህ ስለተከማቹ ዕውቂያዎች ያሉትን ውሂቦች በሙሉ፤ ጥሪ ያደረግክበትን፣ ኢሜይል የላክበትን ወይም ከተወሰኑ ግለሰቦች ጋር በሌላ መንገድ የተገናኘህበትን ድግምግሞሽ ጨምሮ እንዲቀይር ይፈቅድለታል። ይህ ለኢሜይል አድራሻዎች በራስ-አጠናቅቅ እና ለሌሎች ምቹ ባህሪያት ይረዳል። ተንኮል-አዘል መተግበሪያዎች ይህንን የዕውቂያህን ውሂብ ለመሰረዝ ወይም ለመቀየር ሊጠቀሙበት ይችላሉ።"</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"የጥሪ ምዝግብ ማስታወሻን አንብብ"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"ስለ ገቢ እና ወጪ ጥሪዎችን ውሂብ ጨምሮ፣ የጡባዊ ተኮህን ምዝግብ ማስታወሻ እንዲያነብ ለመተግበሪያው ይፈቅዳል። ይሄንን ተንኮል አዘል መተግበሪያዎች ለሌሎች ሰዎች ውሂብህን ለመላክ ሊጠቀሙበት ይችላሉ።"</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"ስለ ገቢ እና ወጪ ጥሪዎችን ውሂብ ጨምሮ፣ የስልክ ጥሪህን ምዝግብ ማስታወሻ እንዲያነብ ለመተግበሪያው ይፈቅዳል። ይሄንን ተንኮል አዘል መተግበሪያዎች ለሌሎች ሰዎች ውሂብህን ለመላክ ሊጠቀሙበት ይችላሉ።"</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"የጥሪ ምዝግብ ማስታወሻን ፃፍ"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ስለ ገቢ እና ወጪ ጥሪዎችን ውሂብ ጨምሮ፣ የጡባዊተኮህን ምዝግብ ማስታወሻ ለመቀየር ለመተግበሪያው ይፈቅዳል። ይሄንን ተንኮል አዘል መተግበሪያዎች የስልክህን ምዝግብ ማስታወሻ ለመሰረዝ ወይም ለመለወጥ ሊጠቀሙበት ይችላሉ።"</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"ስለ ገቢ እና ወጪ ጥሪዎችን ውሂብ ጨምሮ፣ የስልክህን ምዝግብ ማስታወሻ ለመቀየር ለመተግበሪያው ይፈቅዳል። ይሄንን ተንኮል አዘል መተግበሪያዎች የስልክህን ምዝግብ ማስታወሻ ለመሰረዝ ወይም ለመለወጥ ሊጠቀሙበት ይችላሉ።"</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"የመገለጫ ውሂብዎን ያንብቡ"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"የራስህን የእውቂያ ካርድ አንብብ"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"ልክ እንደ አንተ ስም እና የዕውቂያ መረጃ ፣ በአንተ መሳሪያ ወስጥ የተከማቹ የግል መገለጫ መረጃ ለማንበብ ለመተግበሪያው ይፈቅዳሉ፡፡ይሄም ማለት ሌሎች መተግበሪያዎች ሊለዩህ ይችላሉ እና ለሌሎች የመገለጫ መረጃህን ይልካሉ፡፡"</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"የአርስዎ መገለጫ ውሂብ ላይ ይፃፉ"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"የራስህን የዕውቂያ ካርድ አስተካክል"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"ልክ እንደ አንተ ስም እና የዕውቂያ መረጃ ፣ በአንተ መሳሪያ ወስጥ የተከማቹ የግል መገለጫ መረጃ ለመለወጥ ወይም ለማከል ለመተግበሪያው ይፈቅዳሉ፡፡ይሄም ማለት ሌሎች መተግበሪያዎች ሊለዩህ ይችላሉ እና ለሌሎች የመገለጫ መረጃህን ይልካሉ፡፡"</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"የአንተን ማህበራዊ የውይይት ክፍሎች አንብብ"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">" ከአንተ ጓደኞች ማህበራዊ ዝማኔዎችን እንዲደርስባቸው እና እንዲያመሳስል ለመተግበሪያውይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች ይህን መዳረሻ ባንተና በጓደኞችህ መካከል በማህበራዊ አውታረመረቦች ያሉ የግል ተግባቦቶችን ለመዳረስ ሊጠቀሙበት ይችላሉ፡፡"</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"የስልክ በግድ ዳግም አስነሳ"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ጡባዊውን በዳግም አስነሳ ለማስገደድ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"ስልኩ በዳግም አስነሳ ለማስገደድ ለመተግበሪያው ይፈቅዳሉ።"</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"ስርዓተፋይል ሰካ/ንቀል"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"የUSB ማከማቻ ስርዓተ ፋይል ድረስበት"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"የSD ካርድ ስርዓተ ፋይል ድረስበት"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"መወገድ ለሚችል ማከማቻ ስርዓተ ፋይል ለመሰካት እና ለመንቀል ለመተግበሪያ ይፈቅዳል።"</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"ውጫዊ ማከማቻ ቅረፅ"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"የUSB ማከማቻ አጥፋ"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"የSD ካርድ አጥፋ"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"መወገድ የሚችል ማከማቻ ለመቅረጽ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permlab_asec_access" msgid="3411338632002193846">"በውስጥ ማከማቻ ላይ መረጃ አግኝ"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"መተግበሪያ በውስጥ ማከማቻ መረጃ ለማግኘት ይፈቅዳሉ።"</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">" በውስጥ ማከማቻ ለመሰካት/ለመንቀል ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"የውስጥ ማከማቻ ድጋሚ ሰይም"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"መተግበሪያ የውስጥ ማከማቻ ዳግም ለመሰየም ይፈቅዳል።"</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"ነዛሪ ተቆጣጠር"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"ነዛሪ ተቆጣጠር"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"ነዛሪውን ለመቆጣጠር ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_flashlight" msgid="2155920810121984215">"የብርሃንብልጭታ ተቆጣጠር"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"የብልጭታ ብርሃኑን ለመቆጣጠር ለመተግበሪያው ይፈቅዳሉ።"</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"የትኛው መተግበሪያ በየትኛው ምግብሮች መጠቀም እንደሚቻል ለስርዓቱ ለመንገር ለመተግበሪያው ይፈቅዳሉ፡፡መተግበሪያ በዚህ ፍቃድ ሌሎች መተግበሪያዎች ከግል ውሂብ ለመዳረስ እንዲቻል ያስችላል፡፡ ለመደበኛ መተግበሪያዎች አጠቃቀም አይሆንም፡፡"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"የስልክ ሁኔታን ቀይር"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"የመገልገያ መሳሪያውን የስልክ ባህሪያት ለመቆጣጠር ለመተግበሪያው ይፈቅዳል፡፡ ከዚህ ፍቃድ ጋር መተግበሪያ አውታረ መረቦችን ሊለውጥ ይችላል፤አንተን ምንም ሳያሳውቅ የስልኩን ሬድዮ አብራ እና አጥፋ እና የመሳሰሉትን ሊያበራ ይችላል፡፡"</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"የስልክ ሁኔታ እና መገለጫ አንብብ"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"የስልክ ሁኔታና ማንነት አንብብ"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"የመሳሪያውን የስልክ ባህሪያት ላይ ለመድረስ ለመተግበሪያው ይፈቅዳሉ፡፡ በዚህ ፍቃድ መተግበሪያ ስልክ ቁጥሩን መወሰን ይችላል እና የዚህን ስልክ ተከታታይ ቁጥር፣ስልኩ የነቃ ሆነ ፣ ያ ጥሪ የተገናኘው ቁጥር እና የመሳሰሉት፡፡"</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ጡባዊ ከማንቀላፋት ተከላከል"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ስልክ ከማንቀላፋት ተከላከል"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"ለስልኩ ሀርድዌር ሙሉመድረስበመፍቀድእንደ ዝቅተኛ-ደረጃ አምራች ሙከራ አሂድ። የሚገኘው ስልኩ በአምራች ሙከራ ሁነታ ላይ ሲአሄድ ብቻ ነው።"</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"ልጣፍአዘጋጅ"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"የስረዓቱን ልጥፍ ለማዘጋጀት ለመተግበሪያው ይፈቅዳሉ ።"</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"የልጣፍአዘጋጅ መጠን ፍንጮች"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"የልጣፍህን መጠን አስተካክል"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"የስርዓቱን ልጥፍ መጠንለማዘጋጀት ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permlab_masterClear" msgid="2315750423139697397">"ስርዓትን ወደ ፋብሪካ ነባሪዎች ዳግም አስጀምር"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"ወደ ፋብሪካው ቅንብሮች ሙሉ በሙሉ ስርዓቱን ዳግም ለማስጀመር ለመተግበሪያው ይፈቅዳሉ ፤ ሁሉንም ውሂብ፣ አወቃቀር፣ እና የተጫኑ መተግበሪያዎችን በማጥፈት፡፡"</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">" የስልኩን ሰዓት መለወጥ ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"እንደ አውርድአዸራጅአገልግሎት"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">" ወደ መለያ አረጋጋጮች ጥሪ ለማድረግ ለመተግበሪያ ይፈቅዳሉ።"</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"የታወቁ መለያዎችን አግኝ"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"መሣሪያው ላይ ያሉ መለያዎችን አግኝ"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"በጡባዊ ተኮ የሚታወቁ ዝርዝር መለያዎች ለማግኘት ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">" በስልክ የሚታወቁ ዝርዝር መለያዎች ለማግኘት ለመተግበሪያይፈቅዳሉ።"</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"እንደ መለያ አረጋጋጭ"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"መለያዎችን ፍጠርና የይለፍ ቃላትን አስቀምጥ"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"የመለያ አረጋጋጭ መለያ መናጅ ችሎታን ለመጠቀም፣ መለያ መፍጠር እና የይለፍ ቃሎችን ለማግኘት እና ለማቀናጀት አክሎ ለመተግበሪያው ይፈቅዳሉ ።"</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"የመለያዎች ዝርዝርአዸራጅ"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"መለያዎችን አክል ወይም አስወግድ"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"መለያዎችን እንደ ማከል እና ማስወገድ ክወናዎችን እና የይለፍ ቃልን መሰረዝ ለማከናወን ለመተግበሪያው ይፈቅዳሉ፡፡"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"የመለያ መረጃዎች ማረጋገጫ ተጠቀም"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"በመሣሪያው ላይ ያሉ መለያዎችን ተጠቀም"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"የማረጋገጫ የምስጋና የምስክር ወረቀትን ለመጠየቅ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"የአውታረ መረብ ሁኔታ እይ"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"የአውታረ መረብ ግኑኝነቶችን እይ"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"የሁሉንም አውታረመረቦች ሁኔታ ለማየት ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"ሙሉ በይነመረብ ድረስ"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"መተግበሪያ የአውታረመረብ ሶኬቶችን እንዲፈጥር ለመተግበሪያው ይፈቅዳሉ ።"</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"መተግበሪያ የእውታረ መረቡን ግንኙነት ትይይዝ ሁኔታ ለመለወጥ ይፈቅዳል።"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"የዳራ ውሂብ አጠቃቀም ቅንብር ለውጥ"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"የዳራ ውሂብ አጠቃቀም ቅንብሮች ለመለወጥ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"የWi-Fi ሁኔታ እይ"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"የገመድ አልባ ግኑኝነቶችን እይ"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"ስለWi-Fi ሁኔታ መረጃን ለማየት ለመተግበሪያው ይፈቅዳሉ፡፡"</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"የWi-Fi ሁኔታን ለውጥ"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"ከገመድ አልባ ጋር ተገናኝና ተላቀቅ"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"ከWi-Fi መድረስ ነጥቦች ጋር ለማያያዝ እና ላለማያያዝ ፣ እና ለተዋቀሩ የWi-Fi አውታረ መረቦች ለውጦች ለማድረግ ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"የWi-Fi ብዙስምሪትተቀባይፍቀድ"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"ወደ እንተ መሣሪያ በቀጥታ ያልተመለከቱ ፓኬቶችን ለመቀበል ለመተግበሪያው ይፈቅዳሉ፡፡ ይህ አቅራቢያህ የሚቀርቡ አገልገሎቶች ሲገኙ ጠቃሚ መሆን ይችላል።ብዙስምሪት ካልሆነ ሁኔታ የበለጠ ተጨማሪ ኃይል ይጠቀማል።"</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"የብሉቱዝ አስተዳደር"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"የብሉቱዝ ቅንብሮችን ድረስባቸው"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"የአካባቢውን ብሉቱዝ ጡባዊ ለማዋቀር እና አግኝቶ ከሩቅ መሣሪያዎች ጋር ለማጣመር ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"የአካባቢውን ብሉቱዝ ጡባዊ ለማዋቀር እና አግኝቶ ከሩቅ መሣሪያዎች ጋር ለማጣመር ለመተግበሪያው ይፈቅዳሉ።"</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"የ WiMAX ሁኔታን ዕይ"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"የWiMAX ግኑኝነቶችን እይ"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"ስለ WiMAX ሁኔታ መረጃን ለማየት ለመተግበሪያው ይፈቅዳል።"</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"የWiMAX ሁኔታ ለውጥ"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"ከWiMAX አውታረመረብ ለማገናኘት እና ግንኙነት ለማቋረጥ ለመተግበሪያው ይፈቅዳል።"</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"የብሉቱዝ ተያያዦችን ፍጠር"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"ከብሉቱዝ መሣሪያዎች ጋር ተጣመር"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"የአካባቢውን ብሉቱዝ ጡባዊ ተኮ ውቅር ለማየት፣ እና ከተጣመረው መሣሪያ ጋር ግንኙነት ለማድረግ እና ለመቀበል ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">" የአካባቢውን ብሉቱዝ ስልክ ውቅር ለማየት፣ እና ከተጣመረው መሣሪያ ጋር ትይይዝ ለመቀበል እና ለማድረግ ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_nfc" msgid="4423351274757876953">"ቅርብ የግኑኙነትመስክ (NFC) ተቆጣጠር"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"ከቅርብ ግኑኙነት መስክ (NFC) መለያዎች፣ ካርዶች እና አንባቢ ጋር ለማገናኘት ለመተግበሪያው ይፈቅዳሉ።"</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"ቁልፍመቆለፊያአቦዝን"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"የማያ ገጽህን መቆለፊያ አሰናክል"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"የቁልፍ ሽንጉር እና ማንኛውም ተያያዥ የይለፍ ቃል ደህንነት ለማቦዘን ለመተግበሪያው ይፈቅዳሉ። ለዚህ ህጋዊ ምሳሌ የገቢ ስልክ ጥሪ ሲቀበሉ የቁልፍ ሽንጉር ማቦዘን፣ ከዛም ጥሪው ሲጨርስ የቁልፍ ሽንጉሩን ድጋሚ ማንቃት።"</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"የሥምሪያ ቅንብሮች አንብብ"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"ለሰዎች መተግበሪያ አመሳስል ልክ እንደነቃ ከሆነ፣ የአመሳስል ቅንጅቶችን ለማንበብ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"የሥምሪያ ቅንብሮችን ፃፍ"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ማመሳሰያ በማብራትና በማጥፋት መካከል ቀያይር"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"ለሰዎች መተግበሪያ አመሳስል ልክ እንደነቃ ከሆነ፣ የአመሳስል ቅንጅቶችን ለመቀየር ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"የሥምሪያ ስታስቲክስ አንብብ"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"የአስምር ስታስቲክ ለምሳሌ የተከሰተ የአስምር ታሪክ ለማንበብ ለመተግበሪያው ይፈቅዳሉ።"</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"ስለ አሁኑ ጊዜ አስምር ምላሾች ዝርዝሮች ለማግኘት ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"የተመዝጋቢዎች ምላሾች ፃፍ"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"በአሁኑ ጊዜ የተመሳሰሉ ምግቦችን ለመቀየር ለመተግበሪያው ይፈቅዳሉ፡፡ የተመሳሰሉ ምግቦችህን ተንኮል አዘል መተግበሪያዎች ሊለውጡ ይችላሉ፡፡"</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"በተጠቃሚ የተበየኑ መዝገበ ቃላት አንብብ"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"መዝገበ ቃላቱ ላይ ያከልካቸውን ቃላት አንብብ"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">" ተጠቃሚው በተጠቃሚ መዝገበ ቃላት ሊያከማች የቻለውን ማንኛውም የግል ቃላት፣ ስሞች፣እና ሀረጎች ለማንበብ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"በተጠቃሚ በተወሰነ መዝገበ ቃላት ፃፍ"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"በተጠቃሚ መዝገበ ቃላት ውስጥ አዲስ ቃል እንዲጽፍ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"የUSB ካርድ ይዘቶችን አንብብ"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"የSD ካርድ ይዘቶችን አንብብ"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"መተግበሪያው ከUSB ካርድ ላይ ያሉ ይዘቶችን እንዲያነብ ይፈቅድለታል።"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"መተግበሪያው ከSD ካርድ ላይ ያሉ ይዘቶችን እንዲያነብ ይፈቅድለታል።"</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"የUSB ማከማቻ ይዘቶችን ቀይር/ሰርዝ"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"የSD ካርድ ይዘትንቀይር/ሰርዝ"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"የUSB ማከማቻህን ይዘቶች አንብብ"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"የSD ካርድህን ይዘቶች አንብብ"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"መተግበሪያው የUSB ማከማቻ ይዘቶችን እንዲያነብ ይፈቅዳል፣ ይህም ፎቶዎችና ሚዲያ ሊያካትት ይችላል።"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"መተግበሪያው የSD ካርድ ይዘቶችን እንዲያነብ ይፈቅዳል፣ ይህም ፎቶዎችና ሚዲያ ሊያካትት ይችላል።"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"የUSB ማከማቻህን ይዘቶች ቀይር ወይም ሰርዝ"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"የSD ካርድህን ይዘቶች ቀይር ወይም ሰርዝ"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ወደ USB ማህደረ ትውስታው ለመፃፍ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"መተግበሪያውን ወደ SD ካርድ ለመፃፍ ይፈቅዳል።"</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"የውስጥ ማህደረ መረጃ ማከማቻ ይዘቶችን ቀይር/ሰርዝ"</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"በስልክ ውስጥ ምንም SIM ካርድ የለም።"</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"ሲም ካርድ አስገባ፡፡"</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM ካርዱ ጠፍቷል ወይም መነበብ አይችልም።እባክህ SIM ካርድ አስገባ።"</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM ካርድህ በቋሚነት ቦዝኗል።"\n" ለሌላ SIM ካርድ የገመድ አልባ አገልግሎት አቅራቢህ ጋር ተገናኝ።"</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"የቀድሞ ዝርዝር አዝራር"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ቀጣይ ዝርዝር አዝራር"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"ፓሪሽ"</string> <string name="autofill_area" msgid="3547409050889952423">"አካባቢ"</string> <string name="autofill_emirate" msgid="2893880978835698818">"ኢሚሬት"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"የአሳሽ ታሪኮች እና ዕልባቶች አንብብ።"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"የድር ዕልባቶችህንና ታሪክህን አንብብ"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"ማሰሻው የጎበኛቸውን ሁሉ URL ኦች፣ እና የማሰሻውን ዕልባቶች ሁሉ ለማንበብ ለመተግበሪያው ይፈቅዳሉ።"</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"የአሳሾች ታሪክ እና ዕልባቶች ፃፍ"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"የድር ዕልባቶችንና ታሪክ ጻፍ"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"በጡባዊ ተኮህ ላይ የተቀመጠውን የአሳሹ ታሪክ ወይም እልባቶችን ለመለወጥ ለመተግበሪያው ይፈቅዳል፡፡ጎጂ መተግበሪያዎች የአሳሽህን ውሂብ ለማጥፋት ወይም ለመለወጥ ይሄንን ሊጠቀሙበት ይችላሉ፡፡"</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"ስልክህ ላይ የተቀመጠውን የአሳሹ ታሪክ ወይም እልባቶችን ለመለወጥ ለመተግበሪያው ይፈቅዳል፡፡ጎጂ መተግበሪያዎች የአሳሽህን ውሂብ ለማጥፋት ወይም ለመለወጥ ይሄንን ሊጠቀሙበት ይችላሉ፡፡"</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"በማንቂያ ሰዓት ውስጥ ማንቂያ አዘጋጅ"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"ማንቂያ አስቀምጥ"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"በተጫነው የማንቂያ ሰዓት መተግበሪያ ውስጥ ማንቅያን ለማደራጀት ለመተግበሪያው ይፈቅዳሉ፡፡አንዳንድ የማንቂያ ሰዓት መተግበሪያዎች ይሄንን ባህሪ ላይፈፅሙ ይችላሉ፡፡"</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"የድምፅ መልዕክት አክል"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ወደ ድምፅ መልዕክት የገቢ መልዕክትህ መልዕክቶች ለማከል ለመተግበሪያው ይፈቅዳሉ።"</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"አዘጋጅ"</string> <string name="date_time_done" msgid="2507683751759308828">"ተጠናቋል"</string> <string name="default_permission_group" msgid="2690160991405646128">"ነባሪ"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"አዲስ፦ "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"አዲስ፦ "</font></string> <string name="no_permissions" msgid="7283357728219338112">"ምንም ፍቃዶች አይጠየቁም"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"ደብቅ "</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"ሁሉንም አሳይ"</b></string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index b7dc5bc92ec5..8c2e361c237f 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"سيتم إيقاف تشغيل الجهاز اللوحي."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"سيتم إيقاف تشغيل هاتفك."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"هل تريد إيقاف التشغيل؟"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"إعادة تشغيل في الوضع الآمن"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"هل تريد إعادة تشغيل الكمبيوتر في الوضع الآمن؟ سيؤدي ذلك إلى تعطيل جميع تطبيقات الجهات الخارجية التي تم تثبيتها. ستتم استعادتها عند إعادة التشغيل مرة أخرى."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"حديثة"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"ليست هناك تطبيقات حديثة."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"خيارات الجهاز اللوحي"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"رسائلك"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"قراءة وكتابة الرسائل القصيرة SMS والرسائل الإلكترونية والرسائل الأخرى."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"معلوماتك الشخصية"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"الدخول المباشر إلى جهات اتصالك والتقويم المخزنين على الجهاز اللوحي."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"الدخول المباشر إلى التقويم وجهات الاتصال المخزّنة على الهاتف."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"موقعك"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"يمكنك مراقبة موقعك الفعلي."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"اتصال الشبكة"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"يمكنك الدخول إلى ميزات متعددة عبر الشبكة."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"حساباتك"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"الوصول إلى الحسابات المتاحة."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"عناصر التحكم بالأجهزة"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"دخول المستوى الأقل والتحكم بالنظام."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"أدوات التطوير"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"الميزات مطلوبة لمطوّري التطبيقات فقط."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"التخزين"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"الدخول إلى وحدة تخزين USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"الدخول إلى بطاقة SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"للسماح للتطبيق بأن يكون شريط الحالة."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"توسيع/تصغير شريط الحالة"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"للسماح للتطبيق بتوسيع شريط الحالة أو تصغيره."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"اعتراض المكالمات الصادرة"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"إعادة توجيه المكالمات الصادرة"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"للسماح للتطبيق بمعالجة المكالمات الصادرة وتغيير الرقم المطلوب. قد تراقب التطبيقات الضارة المكالمات الصادرة أو تعيد توجيهها أو تمنعها."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"تلقي الرسائل القصيرة SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"تلقي رسائل نصية (رسائل قصيرة SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"للسماح للتطبيق بتلقي الرسائل القصيرة SMS ومعالجتها. قد تراقب بعض التطبيقات الضارة رسائلك أو تحذفها بدون عرضها لك."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"استلام رسالة وسائط متعددة (MMS)"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"تلقي رسائل نصية (رسائل وسائط متعددة)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"للسماح للتطبيق بتلقي رسائل الوسائط المتعددة ومعالجتها. قد تراقب بعض التطبيقات الضارة رسائلك أو تحذفها بدون عرضها لك."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"تلقي بث الطوارئ"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"للسماح للتطبيق بتلقي رسائل بث الطوارئ ومعالجتها. لا يتوفر هذا الإذن سوى لتطبيقات النظام."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"للسماح للتطبيق بإرسال رسائل قصيرة SMS. قد تكلفك التطبيقات الضارة المال من خلال إرسال رسائل بدون تأكيدك."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"إرسال رسائل قصيرة SMS بدون تأكيد"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"للسماح للتطبيق بإرسال رسائل قصيرة SMS. قد تكلفك التطبيقات الضارة المال من خلال إرسال رسائل بدون تأكيدك."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"قراءة الرسائل القصيرة SMS أو رسائل الوسائط المتعددة"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"قراءة الرسائل النصية (الرسائل القصيرة SMS أو رسائل الوسائط المتعددة)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"للسماح للتطبيق بقراءة الرسائل القصيرة SMS المخزنة على الجهاز اللوحي أو بطاقة SIM. قد تقرأ التطبيقات الضارة رسائلك السرية."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"للسماح للتطبيق بقراءة الرسائل القصيرة SMS المخزنة على الهاتف أو بطاقة SIM. قد تقرأ التطبيقات الضارة رسائلك السرية."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"تعديل الرسائل القصيرة SMS أو رسائل الوسائط المتعددة"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"تعديل الرسائل النصية (الرسائل القصيرة SMS أو رسائل الوسائط المتعددة)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"للسماح للتطبيق بالكتابة إلى الرسائل القصيرة SMS المخزّنة على الجهاز اللوحي أو بطاقة SIM. قد تحذف التطبيقات الضارة رسائلك."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"للسماح للتطبيق بالكتابة إلى الرسائل القصيرة SMS المخزّنة على الهاتف أو بطاقة SIM. قد تحذف التطبيقات الضارة رسائلك."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"تلقي WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"تلقي رسائل نصية (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"للسماح للتطبيق بتلقي رسائل WAP ومعالجتها. قد تراقب بعض التطبيقات الضارة رسائلك أو تحذفها بدون عرضها لك."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"استرداد التطبيقات التي قيد التشغيل"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"للسماح للتطبيق باسترداد معلومات حول المهام المُشغلة الحالية والحديثة. قد تكتشف التطبيقات الضارة معلومات خاصة حول التطبيقات الأخرى."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"استرداد تفاصيل التطبيقات قيد التشغيل"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"يسمح للتطبيق باسترداد معلومات تفصيلية حول المهام قيد التشغيل حاليًا ومؤخرًا. قد تكتشف التطبيقات الضارة معلومات خاصة حول التطبيقات الأخرى."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"إعادة ترتيب التطبيقات قيد التشغيل"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"للسماح لتطبيق ما بنقل المهام إلى المقدمة والخلفية. قد تفرض التطبيقات الضارة نفسها إلى المقدمة بدون تحكم منك."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"إيقاف التطبيقات التي قيد التشغيل"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"السماح للتطبيق بالتحكم في وضع التوافق مع شاشة التطبيقات الأخرى. قد تتسبب التطبيقات الضارة في تعطيل سلوك التطبيقات الأخرى."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"تمكين تصحيح أخطاء التطبيق"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"للسماح للتطبيق بتشغيل تصحيح الأخطاء لتطبيق آخر. قد تستخدم التطبيقات الضارة هذا لإنهاء التطبيقات الأخرى."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"تغيير إعدادات واجهة المستخدم"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"تغيير إعدادات عرض النظام"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"للسماح للتطبيق بتغيير التهيئة الحالية، مثل اللغة أو حجم الخط العام."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"تمكين وضع السيارة"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"للسماح للتطبيق بتمكين وضع السيارة."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"إنهاء عمليات الخلفية"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"إغلاق التطبيقات الأخرى"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"للسماح للتطبيق بإنهاء عمليات التطبيقات الأخرى بالخلفية، حتى إذا لم تكن الذاكرة منخفضة."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"فرض إيقاف التطبيقات الأخرى"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"للسماح للتطبيق بفرض إيقاف التطبيقات الأخرى بالقوة."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"للسماح للتطبيق ببث إشعار باستلام رسالة WAP PUSH. يمكن أن تستخدم التطبيقات الضارة هذا لتزيف استلام رسالة وسائط متعددة أو لاستبدال محتوى أي صفحة ويب بمتغيرات ضارة بشكل غير ملحوظ."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"تحديد عدد العمليات قيد التشغيل"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"للسماح للتطبيق بالتحكم في الحد الأقصى لعدد العمليات التي سيتم تشغيلها. غير مطلوب على الإطلاق للتطبيقات العادية."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"جعل جميع تطبيقات الخلفية تغلق"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"فرض إغلاق تطبيقات الخلفية"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"للسماح للتطبيق بالتحكم في ما إذا كانت الأنشطة ستنتهي دائمًا عقب انتقالها إلى الخلفية. غير مطلوب على الإطلاق للتطبيقات العادية."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"تعديل إحصاءات البطارية"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"للسماح للتطبيق بتعديل إحصاءات البطارية المجمّعة. ليس للاستخدام بواسطة التطبيقات العادية."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"للسماح للتطبيق بتشغيل واجهة المستخدم لتأكيد عملية النسخ الاحتياطي الكاملة. ليس للاستخدام بواسطة أي تطبيق."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"عرض النوافذ غير المصرح بها"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"للسماح للتطبيق بإنشاء نوافذ بقصد استخدامها بواسطة واجهة مستخدم النظام الداخلي. ليس للاستخدام بواسطة التطبيقات العادية."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"عرض تنبيهات مستوى النظام"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"التغطية على تطبيقات أخرى"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"للسماح للتطبيق بعرض نوافذ تنبيه النظام. يمكن أن تستحوذ التطبيقات الضارة على الشاشة بالكامل."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"تعديل سرعة الرسوم المتحركة العمومية"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"للسماح للتطبيق بتغيير سرعة الرسوم المتحركة العمومية (رسوم متحركة أسرع أو أبطأ) في أي وقت."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"للسماح لأحد التطبيقات بمنح أذونات محددة أو إلغائها لنفسه أو لتطبيقات أخرى. قد تستخدم التطبيقات الضارة هذا للدخول إلى ميزات لم تمنحها إذنًا لدخولها."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"تعيين التطبيقات المفضلة"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"للسماح للتطبيق بتعديل التطبيقات المفضلة. يمكن أن تغيّر التطبيقات الضارة التطبيقات قيد التشغيل بشكل غير ملحوظ، وانتحال صفة التطبيقات الحالية لجمع بيانات خاصة منك."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"تعديل إعدادات النظام العمومية"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"تعديل إعدادات النظام"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"للسماح للتطبيق بتعديل بيانات إعدادات النظام. يمكن أن تتلف التطبيقات الضارة تهيئة نظامك."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"تعديل إعدادات النظام الآمنة"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"للسماح للتطبيق بتعديل بيانات الإعدادات الآمنة للنظام. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"تعديل خريطة خدمات Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"للسماح للتطبيق بتعديل خريطة خدمات Google. ليس للاستخدام بواسطة التطبيقات العادية."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"البدء تلقائيًا عند التشغيل"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"العمل عند بدء التشغيل"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"للسماح للتطبيق ببدء تشغيل نفسه عقب انتهاء النظام من التشغيل. قد يؤدي ذلك إلى استغراق المزيد من الوقت عند بدء الجهاز اللوحي والسماح للتطبيق بإبطاء الأداء الإجمالي للجهاز اللوحي من خلال تشغيله دائمًا."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"للسماح للتطبيق ببدء تشغيل نفسه عقب انتهاء النظام من التشغيل. قد يؤدي ذلك إلى استغراق المزيد من الوقت عن بدء الهاتف والسماح للتطبيق بإبطاء الأداء الإجمالي للهاتف حيث يتم تشغيله دائمًا."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"إرسال بث طويل الزيارة"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"للسماح للتطبيق بإرسال بث طويل الزيارة، والذي يظل بعد انتهاء البث. قد تجعل التطبيقات الضارة الجهاز اللوحي بطيئًا أو غير مستقر من خلال التسبب في استخدامه لمساحة كبيرة للغاية من الذاكرة."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"للسماح للتطبيق بإرسال بث طويل الزيارة، والذي يظل بعد انتهاء البث. قد تجعل التطبيقات الضارة الهاتف بطيئًا أو غير مستقر من خلال التسبب في استخدامه لمساحة كبيرة للغاية من الذاكرة."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"قراءة بيانات جهة الاتصال"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"كتابة بيانات جهة الاتصال"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"قراءة جهات الاتصال"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"للسماح للتطبيق بقراءة جميع البيانات عن جهات الاتصال المخزنة على جهازك اللوحي، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا الإذن لإرسال بيانات الاتصال إلى أشخاص آخرين."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"يسمح للتطبيق بقراءة جميع البيانات عن جهات الاتصال المخزنة على هاتفك، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا الإذن لإرسال بيانات الاتصال إلى أشخاص آخرين."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"تعديل جهات الاتصال"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"يسمح للتطبيق بتعديل البيانات عن جهات الاتصال المخزنة على جهازك اللوحي، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا لمسح أو تعديل بيانات الاتصال."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"يسمح للتطبيق بتعديل البيانات عن جهات الاتصال المخزنة على هاتفك، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا لمسح أو تعديل بيانات الاتصال."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"قراءة سجل المكالمات"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"للسماح للتطبيق بقراءة سجل المكالمات، بما في ذلك البيانات عن المكالمات الواردة والصادرة. وربما تستخدم التطبيقات الضارة هذا لإرسال بياناتك إلى أشخاص آخرين."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"للسماح للتطبيق بقراءة سجل مكالمات الهاتف، بما في ذلك البيانات عن المكالمات الواردة والصادرة. وربما تستخدم التطبيقات الضارة هذا لإرسال بياناتك إلى أشخاص آخرين."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"كتابة سجل المكالمات"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"للسماح للتطبيق بتعديل سجل مكالمات الجهاز اللوحي، بما في ذلك البيانات عن المكالمات الواردة والصادرة. وربما تستخدم التطبيقات الضارة هذا لمسح سجل المكالمات أو تعديله."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"للسماح للتطبيق بتعديل سجل مكالمات الهاتف، بما في ذلك البيانات عن المكالمات الواردة والصادرة. وربما تستخدم التطبيقات الضارة هذا لمحو سجل المكالمات أو تعديله."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"قراءة بيانات ملفك الشخصي"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"قراءة بطاقة الاتصال الخاصة"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"للسماح للتطبيق بقراءة معلومات الملف الشخصي الشخصية المخزنة على الجهاز، مثل اسمك ومعلومات جهات الاتصال. يعني ذلك أنه يمكن للتطبيق التعرف عليك وإرسال معلومات ملفك الشخصي إلى الآخرين."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"الكتابة إلى بيانات ملفك الشخصي"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"تعديل بطاقة جهة الاتصال الخاصة"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"للسماح للتطبيق بتغيير معلومات الملف الشخصي الشخصية المخزنة على الجهاز أو الإضافة إليها، مثل اسمك ومعلومات جهات الاتصال. يعني ذلك أنه يمكن للتطبيقات الأخرى التعرف عليك وإرسال معلومات ملفك الشخصي إلى الآخرين."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"قراءة المشاركات الاجتماعية"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"للسماح للتطبيق بالدخول إلى التحديثات الاجتماعية منك ومن أصدقائك ومزامنتها. يمكن أن تستخدم التطبيقات الضارة هذا لقراءة الاتصالات الخاصة بينك وبين أصدقائك على الشبكات الاجتماعية."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"فرض إعادة تشغيل الهاتف"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"للسماح للتطبيق بفرض إعادة تشغيل الجهاز اللوحي."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"للسماح للتطبيق بفرض إعادة تشغيل الهاتف."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"تحميل أنظمة الملفات وإلغاء تحميلها"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"الدخول إلى نظام ملفات وحدة تخزين USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"الدخول إلى نظام ملفات بطاقة SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"للسماح للتطبيق بتحميل أنظمة الملفات وإلغاء تحميلها إلى وحدة التخزين القابلة للإزالة."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"تنسيق سعة التخزين الخارجية"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"محو وحدة تخزين USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"محو بطاقة SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"للسماح للتطبيق بتنسيق وحدة التخزين القابلة للإزالة."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"الحصول على معلومات حول وحدة التخزين الداخلية"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"للسماح للتطبيق بالحصول على معلومات حول سعة التخزين الداخلية."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"للسماح للتطبيق بتحميل/إلغاء تحميل وحدة التخزين الداخلية."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"إعادة تسمية وحدة التخزين الداخلية"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"للسماح للتطبيق بإعادة تسمية وحدة التخزين الداخلية."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"التحكم بالهزاز"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"التحكم في الاهتزاز"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"للسماح للتطبيق بالتحكم في الهزّاز."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"التحكم في الضوء الوامض"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"للسماح للتطبيق بالتحكم في الضوء الوامض."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"للسماح للتطبيق بإخبار النظام بالأدوات التي يمكن استخدامها مع أي من التطبيقات. من خلال هذا الإذن، يمكن للتطبيق منح إمكانية دخول التطبيقات الأخرى إلى البيانات الشخصية. ليس للاستخدام بواسطة التطبيقات العادية."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"تعديل حالة الهاتف"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"للسماح للتطبيق بالتحكم في ميزات الهاتف بالجهاز. يمكن لأحد التطبيقات بهذا الإذن تبديل الشبكات وتشغيل لاسلكي الهاتف وإيقاف تشغيله وما إلى ذلك بدون إعلامك على الإطلاق."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"قراءة حالة الهاتف وهويته"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"قراءة حالة الهاتف والهوية"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"للسماح للتطبيق بالدخول إلى ميزات الهاتف للجهاز. يمكن أن يحدد تطبيق، باستخدام هذا الإذن، رقم الهاتف والرقم التسلسلي لهذا الهاتف وما إذا كانت هناك مكالمة نشطة والرقم الذي يجري الاتصال به وما إلى ذلك."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"منع الجهاز اللوحي من الدخول في وضع السكون"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"منع الهاتف من الدخول في وضع السكون"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"للتشغيل كاختبار مصنِّع بمستوى أدنى، مما يسمح بالدخول الكامل إلى جهاز الهاتف. لا يتوفر سوى عند تشغيل الهاتف في وضع اختبار المصنِّع."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"تعيين الخلفية"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"للسماح للتطبيق بتعيين خلفية النظام."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"تعيين تلميحات حجم الخلفية"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"تعديل حجم الخلفية"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"للسماح للتطبيق بتعيين تلميحات حجم خلفية النظام."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"إعادة تعيين النظام إلى الإعدادات الافتراضية للمصنع"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"للسماح للتطبيق بإعادة تعيين النظام بالكامل على إعدادات المصنع، ومسح جميع البيانات والتهيئة والتطبيقات المثبّتة."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"للسماح للتطبيق بتغيير المنطقة الزمنية للهاتف."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"العمل كخدمة مدير حساب"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"للسماح للتطبيق بإجراء مكالمات مع مصدِّقي الحساب."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"اكتشاف الحسابات المعروفة"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"البحث عن حسابات على الجهاز"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"للسماح للتطبيق بالحصول على قائمة الحسابات المعروفة بواسطة الجهاز اللوحي."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"للسماح للتطبيق بالحصول على قائمة الحسابات المعروفة بواسطة الهاتف."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"العمل كمصدِّق للحساب"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"إنشاء حسابات وتعيين كلمات مرور"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"للسماح للتطبيق باستخدام إمكانيات مصدِّق الحساب لـ AccountManager، بما في ذلك إنشاء حسابات والحصول على كلمات مرورها وتعينها."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"إدارة قائمة الحسابات"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"إضافة حسابات أو إزالتها"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"للسماح للتطبيق بإجراء عمليات مثل إضافة حسابات وإزالتها وحذف كلمات مرورها."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"استخدام بيانات اعتماد المصادقة لأحد الحسابات"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"استخدام الحسابات على الجهاز"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"للسماح للتطبيق بطلب الرموز المميزة للمصادقة."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"عرض حالة الشبكة"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"عرض اتصالات الشبكة"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"للسماح للتطبيق بعرض حالة جميع الشبكات."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"دخول كامل إلى الإنترنت"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"للسماح للتطبيق بإنشاء مقابس للشبكة."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"للسماح للتطبيق بتغيير حالة اتصال الشبكة المربوطة."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"تغيير إعداد استخدام بيانات الخلفية"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"للسماح للتطبيق بتغيير إعداد استخدام بيانات الخلفية."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"عرض حالة Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"عرض اتصالات Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"للسماح للتطبيق بعرض معلومات حول حالة Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"تغيير حالة Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"التوصيل والفصل من Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"للسماح للتطبيق بالاتصال بنقاط الدخول إلى Wi-Fi وقطع الاتصال عنها، وإجراء تغييرات على شبكات Wi-Fi التي تمت تهيئتها."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"السماح باستقبال بث Wi-Fi متعدد"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"للسماح للتطبيق باستلام حزم غير موجهة مباشرة إلى جهازك. يمكن أن يكون ذلك مفيدًا عند اكتشاف خدمات معروضة بالقرب منك. يستخدم ذلك الطاقة أكثر من وضع البث غير المتعدد."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"إدارة البلوتوث"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"الدخول إلى إعدادات بلوتوث"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"للسماح للتطبيق بتهيئة لوحة البلوتوث المحلي، واكتشاف أجهزة التحكم عن بعد والاقتران بها."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"للسماح للتطبيق بتهيئة هاتف البلوتوث المحلي، واكتشاف أجهزة التحكم عن بعد والاقتران بها."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"عرض حالة WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"عرض اتصالات WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"للسماح للتطبيق بعرض معلومات حول حالة WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"تغيير حالة WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"للسماح للتطبيق بالاتصال بشبكة WiMAX وقطع الاتصال بها."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"إنشاء اتصالات بلوتوث"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"الاتصال بأجهزة بلوتوث"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"للسماح للتطبيق بعرض تهيئة جهاز البلوتوث اللوحي المحلي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"للسماح للتطبيق بعرض تهيئة هاتف البلوتوث المحلي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string> <string name="permlab_nfc" msgid="4423351274757876953">"التحكم في اتصال الحقل القريب"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"للسماح للتطبيق بالاتصال بعلامات الاتصال قريب المدى (NFC)، والبطاقات وبرامج القراءة."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"تعطيل تأمين المفاتيح"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"تعطيل قفل الشاشة"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"للسماح للتطبيق بتعطيل تأمين المفاتيح وأي أمان لكلمة المرور المرتبطة. ومثال صحيح لذلك هو تعطيل الهاتف لتأمين المفاتيح عند استلام مكالمة هاتفية واردة، ثم إعادة تمكين تأمين المفاتيح عند انتهاء المكالمة."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"قراءة إعدادات المزامنة"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"للسماح للتطبيق بقراءة إعدادات المزامنة، مثل تمكين المزامنة لتطبيق الأشخاص."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"كتابة إعدادات المزامنة"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"التبديل بين تشغيل المزامنة وإيقافها"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"للسماح للتطبيق بتعديل إعدادات المزامنة، مثل تمكين المزامنة لتطبيق الأشخاص."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"قراءة إحصاءات المزامنة"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"للسماح للتطبيق بقراءة حالة المزامنة؛ مثل سجل المزامنات التي حدثت."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"للسماح للتطبيق بالحصول على تفاصيل حول الخلاصات المتزامنة في الوقت الحالي."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"كتابة الخلاصات المشتركة"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"للسماح للتطبيق بتعديل خلاصاتك المتزامنة في الوقت الحالي. قد تغيّر التطبيقات الضارة خلاصاتك المتزامنة."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"قراءة القاموس المعرّف بواسطة المستخدم"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"قراءة المصطلحات التي أضفتها إلى القاموس"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"للسماح للتطبيق بقراءة أي كلمات وأسماء وعبارات خاصة ربما خزنها المستخدم في قاموس المستخدم."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"كتابة إلى القاموس المعرّف بواسطة المستخدم"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"للسماح للتطبيق بكتابة كلمات جديدة في قاموس المستخدم."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"قراءة محتويات وحدة تخزين USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"قراءة محتويات بطاقة SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"للسماح للتطبيق بقراءة محتويات وحدة تخزين USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"للسماح للتطبيق بقراءة محتويات بطاقة SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"تعديل/حذف محتويات وحدة تخزين USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"تعديل/حذف محتويات بطاقة SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"قراءة محتويات وحدة تخزين USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"قراءة محتويات بطاقة SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"يسمح للتطبيق بقراءة محتويات وحدة تخزين USB، والتي قد تتضمن صورًا ووسائط."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"يسمح للتطبيق بقراءة محتويات بطاقة SD، والتي قد تتضمن صورًا ووسائط."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"تعديل محتويات وحدة تخزين USB أو حذفها"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"تعديل محتويات بطاقة SD أو حذفها"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"للسماح للتطبيق بالكتابة إلى وحدة تخزين USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"للسماح للتطبيق بالكتابة إلى بطاقة SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"تعديل/حذف محتويات وحدة تخزين الوسائط الداخلية"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"ليس هناك بطاقة SIM في الهاتف."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"أدخل بطاقة SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"بطاقة SIM مفقودة أو غير قابلة للقراءة. أدخل بطاقة SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"تم تعطيل بطاقة SIM بشكل دائم."\n" اتصل بمقدم خدمة اللاسلكي للحصول على بطاقة SIM أخرى."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"زر المقطع الصوتي السابق"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"زر المقطع الصوتي التالي"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ب ت ث"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"حرف"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"كلمة"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"رابط"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"سطر"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"أخفق اختبار المصنع"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"الدائرة"</string> <string name="autofill_area" msgid="3547409050889952423">"المنطقة"</string> <string name="autofill_emirate" msgid="2893880978835698818">"الإمارة"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"قراءة سجل المتصفح والإشارات"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"قراءة إشارات ويب والسجل"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"للسماح للتطبيق بقراءة جميع عناوين URL التي انتقل إليها المتصفح وجميع الإشارات المرجعية للمتصفح."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"كتابة سجل المتصفح والإشارات"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"كتابة إشارات ويب والسجل"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"للسماح للتطبيق بتعديل سجل المتصفح أو الإشارات المرجعية المخزّنة على الجهاز اللوحي. يمكن أن تستخدم التطبيقات الضارة ذلك لمسح بيانات المتصفح أو تعديلها."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"للسماح للتطبيق بتعديل سجل المتصفح أو الإشارات المرجعية المخزّنة على الهاتف. يمكن أن تستخدم التطبيقات الضارة ذلك لمسح بيانات المتصفح أو تعديلها."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"تعيين المنبه في ساعة المنبه"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"تعيين منبه"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"للسماح للتطبيق بضبط المنبه في تطبيق المنبه المثبّت. ربما لا تنفذ بعض تطبيقات المنبه هذه الميزة."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"إضافة بريد صوتي"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"للسماح للتطبيق بإضافة رسائل إلى صندوق البريد الصوتي."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"تعيين"</string> <string name="date_time_done" msgid="2507683751759308828">"تم"</string> <string name="default_permission_group" msgid="2690160991405646128">"افتراضي"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"جديد: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"جديد: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"لا أذونات مطلوبة"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"إخفاء"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"عرض الكل"</b></string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index bb70672d3a4e..1a4d0d55f44d 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Планшэт будзе адключаны."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Ваш тэлефон будзе выключаны."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Закрыць?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Перазагрузка ў бяспечным рэжыме"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Хочаце перазагрузіцца ў бяспечным рэжыме? Гэта дазволіць адключыць усе іншыя ўсталяваныя прыкладанні. Пасля перазагрузкi iх праца будзе адноўлена."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Апошнія"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Няма апошніх прыкладанняў."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Параметры планшэта"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Вашыя паведамленні"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Счытваць і запісваць вашы SMS-паведамленні, паведамленні электроннай пошты і іншыя паведамленні."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Вашая персанальная інфармацыя"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Прамы доступ да кантактаў і календара, якія захоўваюцца на планшэце."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Прамы доступ да кантактаў і календара, захаваных на тэлефоне."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Ваша месцазнаходжанне"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Кантраляваць сваё фізічнае месцазнаходжанне."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Сеткавая сувязь"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Доступ да розных функцый сеткі."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Вашыя ўліковыя запісы"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ да дзеючых уліковых запісаў."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Кіраванне апаратным забеспячэннем"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Ніжні ўзровень доступу і кіравання сістэмай."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Сродкі распрацоўкі"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функцыi, патрэбныя толькі для распрацоўшчыкаў прыкладанняў."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Сховішча"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Атрымаць доступ да USB-назапашвальнiка."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ да SD-карты."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Дазваляе прыкладанням быць радком стану."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"разгарнуць/згарнуць радок стану"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Дазваляе прыкладанню разгортваць ці згортваць радок стану."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"перахапляць выходныя выклікі"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"перанакіраванне зыходзячых выклікіаў"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Дазваляе прыкладанням апрацоўваць выходныя выклікі і змяняць набіраны нумар. Шкоднасныя прыкладаннi могуць адсочваць, перанакіроўваць ці прадухіляць выходныя выклікі."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"атрымліваць SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"атрыманне тэкставых паведамленняў (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Дазваляе прыкладанням атрымліваць і апрацоўваць SMS-паведамленні. Шкоднасныя прыкладанні могуць адсочваць вашыя паведамленні або выдаляць іх, не паказваючы вам."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"атрымліваць MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"атрыманне тэкставых паведамленняў (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Дазваляе прыкладанням атрымліваць і апрацоўваць MMS-паведамленні. Шкоднасныя прыкладанні могуць адсочваць вашы паведамленні або выдаляць іх, не паказваючы вам."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"атрымліваць экстраныя трансляцыі"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Дазваляе прыкладанням атрымліваць і апрацоўваць экстраныя паведамленні. Гэты дазвол даступны толькі для сістэмных прыкладанняў."</string> @@ -209,31 +275,33 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Дазваляе прыкладанням дасылаць SMS-паведамленні. Шкоднасныя прыкладанні могуць каштаваць вам грошай з-за адпраўкі паведамленняў без вашага пацвярджэння."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"адпраўляць SMS-паведамленні без пацверджання"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Дазваляе прыкладанню дасылаць SMS-паведамленні. Шкоднасныя прыкладанні могуць каштаваць вам грошай з-за адпраўкі паведамленняў без вашага пацверджання."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"чытаць SMS або MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"чытанне сваiх тэкставых паведамленняў (SMS ці MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Дазваляе прыкладанням чытаць SMS-паведамленні, якія захоўваюцца на планшэце ці SIM-карце. Шкоднасныя прыкладанні могуць чытаць вашы канфідэнцыйныя паведамленні."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Дазваляе прыкладанню счытваць SMS-паведамленні, якія захоўваюцца ў тэлефоне або на SIM-карце. Шкоднасныя прыкладанні могуць чытаць вашы канфідэнцыйныя паведамленні."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"рэдагаваць SMS ці MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"рэдагаванне тэкставых паведамленняў (SMS ці MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Дазваляе прыкладанню запісваць дадзеныя ў SMS-паведамленні, якія захоўваюцца на планшэце або на SIM-карце. Шкоднасныя прыкладанні могуць выдаляць вашы паведамленні."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Дазваляе прыкладанням запісваць дадзеныя ў SMS-паведамленні, якія захоўваюцца ў тэлефоне або на SIM-карце. Шкоднасныя прыкладанні могуць выдаляць вашы паведамленні."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"атрымліваць WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"атрыманне тэкставых паведамленняў (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Дазваляе прыкладанням атрымліваць і апрацоўваць WAP-паведамленні. Шкоднасныя прыкладанні могуць адсочваць вашы паведамленні або выдаляць іх, не паказваючы вам."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"атрымаць запушчаныя прыкладанні"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Дазваляе прыкладанням атрымліваць інфармацыю пра бягучыя і нядаўна запушчаныя заданнi. Шкоднасныя прыкладанні могуць атрымліваць асабістую інфармацыю пра іншыя прыкладаннi."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"атрымаць падрабязныя дадзеныя пра запушчаныя прыкладаннi"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Дазваляе прыкладанню атрымліваць падрабязную інфармацыю пра бягучыя і нядаўна запушчаныя задачы. Шкоднасныя прыкладанні могуць атрымліваць асабістую інфармацыю пра іншыя прыкладаннi."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"змяніць парадак запушчаных прыкладанняў"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Дазваляе прыкладанням перамяшчаць заданні на пярэдні план і фон. Шкоднасныя прыкладанні могуць прымусова рабіць сябе асноўнымі без вашага ведама."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"спыніць запушчаныя прыкладанні"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Дазваляе прыкладанням выдаляць заданні і спыняць прыкладанні, якія іх выкарыстоўваюць. Шкоднасныя прыкладаннi могуць перашкодзiць працы іншых прыкладанняў."</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"пачынаць любы працэс"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Дазваляе прыкладанню пачынаць любы працэс, незалежна ад абароны дазволам ці стану экспартавання."</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Дазваляе прыкладанню пачынаць любы працэс, незалежна ад абароны дазволам ці стану экспарту."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"усталяваць сумяшчальнасць экранаў"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Дазваляе прыкладанню кіраваць рэжымам сумяшчальнасці экранаў іншых прыкладанняў. Шкоднаснае ПЗ можа перашкодзiць працы іншых прыкладанняў."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"уключыць адладку прыкладання"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Дазваляе прыкладанням уключаць адладку для іншага прыкладання. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб спыняць іншыя прыкладанні."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"змяняць налады карыстальніцкага інтэрфейса"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"змена налад адлюстравання ў сістэме"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Дазваляе прыкладанням змяняць бягучую канфігурацыю, напрыклад мову цi агульны памер шрыфта."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"дазваляць рэжым \"У аўтамабілі\""</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Дазваляе прыкладанню ўключаць рэжым гучнай сувязi."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"выдаліць фонавыя працэсы"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"закрыццё іншых прыкладанняў"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Дазваляе прыкладанням спыняць фонавыя працэсы іншых прыкладанняў, нават калі памяці дастаткова."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"прымусова спыніць іншыя прыкладанні"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Дазваляе прыкладанням прымусова спыняць іншыя прыкладанні."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Дазваляе прыкладанням перадаваць апавяшчэнне, што паведамленне WAP PUSH не было атрымана. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб падрабляць атрыманне MMS-паведамлення або непрыкметна замяняць змесціва любой вэб-старонкі на шкоднасную версiю."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"абмяжоўваць колькасць запушчаных працэсаў"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Дазваляе прыкладанням кантраляваць максімальную колькасць запушчаных працэсаў. Не патрабуецца для звычайных прыкладанняў."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"закрывае ўсе фонавыя прыкладанні"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"прымусовае закрыццё фонавых прыкладанняў"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Дазваляе прыкладанням кантраляваць, ці будуць працэсы заўсёды завяршацца, як толькі яны пераходзяць у фонавы рэжым. Не патрабуецца для звычайных прыкладанняў."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"змяняць статыстыку батарэі"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Дазваляе прыкладанням змяняць сабраную статыстыку акумулятара. Не для выкарыстання звычайнымі прыкладаннямі."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Дазваляе прыкладанням запускаць поўны інтэрфейс карыстальніка пацвярджэння рэзервавання. Не для выкарыстання звычайнымі прыкладаннямі."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"паказваць несанкцыянаваныя вокны"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Дазваляе прыкладанням ствараць вокны, прызначаныя для выкарыстання ўнутраным інтэрфейсам карыстальніка сістэмы. Не для выкарыстання звычайнымі прыкладаннямі."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"паказваць абвесткі стану сістэмы"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"прыарытэт перад іншымі прыкладаннямі"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Дазваляе прыкладанням паказваць вокны апавяшчэння сістэмы. Шкоднасныя прыкладанні могуць захоплiваць увесь экран."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"зменяць агульную хуткасць анімацыі"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Дазваляе прыкладанням у любы час змяняць агульную хуткасць анімацыі (хутчэй ці павольней)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Дазваляе прыкладанню прадастаўляць або адмяняць пэўныя дазволы для гэтага або іншых прыкладанняў. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб атрымаць доступ да функцый, якiя вы iм не прадаставiлi."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"усталяваць пажаданыя прыкладанні"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Дазваляе прыкладанням змяняць вашы пажаданыя прыкладанні. Шкоднасныя прыкладанні могуць непрыкметна змяняць запушчаныя прыкладанні, падмяняючы існуючыя прыкладанні, каб збiраць вашы асабістыя дадзеныя."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"змена глабальных параметраў сістэмы"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"змена сістэмных налад"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Дазваляе прыкладаннем змяняць дадзеныя налад сістэмы. Шкоднасныя прыкладанні могуць пашкодзіць канфігурацыю вашай сістэмы."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"змяняць параметры бяспекі сістэмы"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Дазваляе прыкладанням змяняць дадзеныя параметраў бяспекі сістэмы. Не для выкарыстання звычайнымі прыкладаннямі."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"змяняць карту службаў Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Дазваляе прыкладанням змяняць карту службаў Google. Не для выкарыстання звычайнымі прыкладаннямі."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"аўтаматычна запускаць пры загрузцы"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"запуск пры загрузцы сістэмы"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Дазваляе прыкладанню самастойна запускацца, як толькі сістэма будзе цалкам загружана. Гэта можа павялічыць час запуску планшэту і дазволіць прыкладанню запаволіць увесь планшэт, прымушаючы яго працаваць заўсёды."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Дазваляе прыкладанням самастойна запускацца, як толькі сістэма будзе цалкам запушчана. Гэта можа павялічыць час запуску тэлефону і дазволіць прыкладанню запаволіць увесь тэлефон, прымушаючы яго працаваць заўсёды."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"адпраўляць нетэрмiновую рассылку"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Дазваляе прыкладанням дасылаць далейшыя звязаныя перадачы, якія застаюцца пасля заканчэння асноўнай перадачы. Шкоднасныя прыкладанні могуць зрабіць працу планшэта павольнай або няўстойлівай, прымушаючы яго выкарыстоўваць занадта шмат памяці."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Дазваляе прыкладанню дасылаць далейшыя звязаныя перадачы, якія застаюцца пасля заканчэння асноўнай перадачы. Шкоднасныя прыкладанні могуць зрабіць працу тэлефона павольнай або няўстойлівай, прымушаючы яго выкарыстоўваць занадта шмат памяці."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"чытаць кантактныя дадзеныя"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"запісваць кантактныя дадзеныя"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"чытанне кантактаў"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца на планшэце, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці ці з якiмi звязвалiся іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца ў тэлефоне, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці звязвалiся з iмi іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"змена кантактаў"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца ў тэлефоне, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці з якiмi звязвалiся іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца ў тэлефоне, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці з якiмi звязвалiся іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"чытанне гiсторыi выклікаў"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Дазваляе прыкладанню чытаць гiсторыю выклiкаў планшэту, у тым лiку дадзеныя пра ўваходныя і зыходныя выклiкi. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб адпраўляць вашы дадзеныя іншым людзям."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Дазваляе прыкладанню чытаць гiсторыю выклiкаў, у тым лiку ўваходныя і зыходныя выклiкi. Шкоднасныя праграмы могуць выкарыстоўваць гэта, каб адпраўляць вашы дадзеныя іншым людзям."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"запіс гiсторыi выклікаў"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Дазваляе прыкладанню змяняць гiсторыю выклiкаў планшэта, у тым лiку дадзеныя пра ўваходныя i зыходныя выклiкi. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб выдаляць або змяняць гiсторыю выклікаў."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Дазваляе прыкладанням змяняць гiсторыю выклiкаў тэлефону, у тым лiку дадзеныя пра ўваходныя і зыходныя выклiкi. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб выдаляць або змяняць гiсторыю выклікаў."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"чытаць дадзеныя вашага профілю"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"чытанне сваёй кантактнай карты"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Дазваляе прыкладанням счытваць асабістую інфармацыю ў профілях, якая захоўваецца на вашай прыладзе, напрыклад, ваша імя і кантактную інфармацыю. Гэта азначае, што прыкладанне можа ідэнтыфікаваць вас і адправіць інфармацыю вашага профілю трэцім асобам."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"увядзіце дадзеныя вашага профілю"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"змена сваёй кантактнай карты"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Дазваляе прыкладанням змяняць ці дадаваць асабістую інфармацыю профіляў, захаваных на прыладзе, напрыклад ваша імя і кантактную інфармацыю. Такім чынам, іншыя прыкладанні могуць ідэнтыфікаваць вас і адпраўляць інфармацыю вашага профіля трэцім асобам."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"чытаць мой паток абнаўленняў"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Дазваляе прыкладанням атрымліваць доступ і сінхранізаваць абнаўленнi ад вас i вашых сяброў у сацыяльных сетках. З дапамогай шкоднасных прыкладанняў хтосьцi можа чытаць вашу асабiстую перапiску з сябрамі ў сацыяльных сетках."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"прымусова перазагружаць тэлефон"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Дазваляе прыкладанням прымусова перазагружаць планшэт."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Дазваляе прыкладанням прымусова перазагружаць тэлефон."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"уключэнне і адключэнне файлавых сістэм"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"файлавая сіст. USB-назапашв."</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"доступ да файлавай сістэмы SD-карты"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Дазваляе прыкладанням падключаць і адключаць файлавыя сістэмы для здымных назапашвальнікаў."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"фарматаваць знешнія назапашвальнікі"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"выдаленне дадзеных з USB-назапашвальніка"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"выдаленне дадзеных з SD-карты"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Дазваляе прыкладанням фарматаваць здымны назапашвальнiк."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"атрымаць інфармацыю аб унутранай памяці"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Дазваляе прыкладанню атрымліваць інфармацыю пра ўнутраную памяць."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Дазваляе прыкладанням падлучаць i адлучаць унутраную памяць."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"перайменаваць унутраную памяць"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Дазваляе прыкладанням змяняць імя ўнутранай памяці."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"кіраваць вібрацыяй"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"кіраванне вібрацыяй"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Дазваляе прыкладанням кіраваць вібрацыяй."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"кіраваць ўспышкай"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Дазваляе прыкладанню кіраваць ліхтарыкам."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Дазваляе прыкладанням паведамляць сістэме, якая віджэты могуць быць выкарыстаны пэўнымі прыкладаннямі. Прыкладанне з гэтым дазволам можа прадастаўляць доступ да персанальных дадзеных іншым прыкладанням. Не для выкарыстання звычайнымі прыкладаннямі."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"змяняць стан тэлефона"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Дазваляе прыкладанням кіраваць тэлефоннымі функцыямі прылады. Прыкладанне з гэтым дазволам можа пераключаць сеткі, уключаць і выключаць радыё на тэлефоне і г. д., нават не паведамляючы пра гэта."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"чытаць стан тэлефона і ідэнтыфікацыйныя дадзеныя"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"чытанне статусу тэлефона і ідэнтыфікацыя"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Дазваляе прыкладанням атрымліваць доступ да тэлефонных функцый прылады. Прыкладанне з гэтым дазволам можа вызначаць нумар тэлефона і серыйны нумар гэтага тэлефона ці актыўны выклік, нумар выкліканага абанента і г. д."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"прадухіліць планшэт ад пераходу ў рэжым сну"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"забараняць тэлефону пераходзіць ў рэжым сну"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Запусціць як нізкаўзроўневы тэст вытворцы, што дазваляе атрымаць поўны доступ да абсталявання тэлефона. Даступна, толькі калі прылада працуе ў рэжыме тэста вытворцы."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"усталёўваць шпалеры"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Дазваляе прыкладанням ксталёўваць сiстэмныя шпалеры."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"усталёўваць падказкі памераў шпалер"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"наладка памеру шпалер"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дазваляе прыкладанням задаваць падказкі па памеры сістэмных шпалер."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"скідаць сістэму да завадскіх наладаў"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Дазваляе прыкладанню цалкам скідваць сістэму да заводскіх налад, выдаляючы ўсе дадзеныя, налады і ўсталяваныя прыкладанні."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Дазваляе прыкладанню змяняць гадзінны пояс тэлефона."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"выступаць у якасці службы AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Дазваляе прыкладанням тэлефанаваць на AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"выяўляць вядомыя ўліковыя запісы"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"пошук уліковых запісаў на прыладзе"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Дазваляе прыкладанню атрымліваць спіс уліковых запісаў, вядомых планшэту."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Дазваляе прыкладанню атрымліваць спіс уліковых запісаў, вядомых тэлефону."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"выступаць у якасці аўтэнтыфікатара ўліковага запісу"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"стварэнне ўліковых запісаў і ўсталёўка пароляў"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Дазваляе прыкладанням выкарыстоўваць магчымасці сродку праверкі сапраўднасці ўліковых запісаў AccountManager, у тым ліку ствараць уліковыя запісы, атрымліваць і наладжваць паролі для іх."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"кіраванне спісам уліковых запісаў"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"даданне або выдаленне ўліковых запісаў"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Дазваляе прыкладанням выконваць даданне і выдаленне ўліковых запісаў або выдаленне іх пароляў."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"выкарыстоўваць уліковыя дадзеныя ўліковага запісу"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"выкарыстанне ўліковых запісаў на прыладзе"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Дазваляе прыкладанням запытваць ключы аўтэнтыфікаціі."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"праглядаць стан сеткі"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"прагляд сеткавых злучэнняў"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Дазваляе прыкладанню праглядаць стан усіх сетак."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"поўны доступ да інтэрнэту"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Дазваляе прыкладанню ствараць сеткавыя сокеты."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Дазваляе прыкладанням змяняць стан прывязкі да сеткі."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"змяняць налады выкарыстання фонавых дадзеных"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Дазваляе прыкладанням змяняць налады выкарыстання зыходных дадзеных."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"праглядаць стан Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"прагляд злучэнняў Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Дазваляе прыкладанням праглядаць інфармацыю аб стане Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"змяняць стан Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"падключэнне да сеткі Wi-Fi і адключэнне ад яе"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Дазваляе прыкладанням падлучацца і адключацца ад кропак доступу Wi-Fi і ўносіць змяненні ў наладжаныя сеткі Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"дазваляе прыём Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Дазваляе прыкладаннямм атрымліваць пакеты, якія не былі адрасаваня непасрэдна вашай прыладзе. Гэта можа быць карысна пры выяўленні службаў, даступных побач. У гэтым рэжыме выкарыстоўваецца больш энергіі, чым у рэжыме аднаадраснай перадачы."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"адмiнiстраванне Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"атрыманне доступу да налад прылады Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Дазваляе прыкладанням наладжваць лакальны планшэт Bluetooth, выяўляць і падлучаць выдаленыя прылады."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Дазваляе прыкладанням наладжваць лакальны тэлефон Bluetooth, а таксама знаходзіць выдаленыя прылады i падлучацца да ix."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Прагляд стану WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Прагляд злучэнняў WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Дазваляе прыкладанням праглядаць інфармацыю пра стан WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Змяніць стан WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Дазваляе прыкладанням падключацца і адключацца ад сеткі WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"ствараць злучэнні Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"падлучэнне да прылады Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Дазваляе прыкладанню праглядаць канфігурацыю лакальнага планшэту Bluetooth, а таксама здзяйсняць і прымаць злучэнні са спалучанымі прыладамі."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Дазваляе прыкладанню праглядаць канфігурацыю лакальнага тэлефона Bluetooth, а таксама здзяйсняць і прымаць злучэнні са спалучанымі прыладамі."</string> <string name="permlab_nfc" msgid="4423351274757876953">"кантроль Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Дазваляе прыкладаннzv спалучацца з тэгамі, картамі і счытваючымі прыладамі Near Field Communication (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"адключаць блакаванне клавіятуры"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"адключэнне блакiроўкi экрана"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Дазваляе прыкладанням адключаць блакаванне клавіятуры і любыя сродкі абароны, звязаныя з паролем. Прыкладам гэтага з\'яўляецца адключэнне тэлефонам блакавання клавіятуры пры атрыманні ўваходнага выкліку і паўторнае ўключэнне блакавання клавіятуры, калі выклік завершаны."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"чытаць параметры сінхранізацыі"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Дазваляе прыкладанням змяняць налады сінхранізацыі, напрыклад, ці будзе сінхранізацыя ўключана для прыкладання People."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"запісваць параметры сінхранізацыі"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"уключэнне ці адключэнне сінхранізацыi"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Дазваляе прыкладанню змяняць налады сінхранізацыі, напрыклад, ці будзе сінхранізацыя ўключана для прыкладання People."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"чытаць статыстыку сінхранізацыі"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Дазваляе прыкладанню счытваць статыстыку сінхранізацыі, напрыклад гісторыю здзейсненых сінхранізацый."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Дазваляе прыкладанням атрымліваць інфармацыю пра каналы, якія сінхранізуюцца ў бягучы момант."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"запісваць каналы, на якія ёсць падпіска"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Дазваляе прыкладанням змяняць бягучыя каналы сінхранізавання. Шкоднасныя прыкладанні могуць змяняць вашы каналы сінхранізацыi."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"чытаць карыстальніцкі слоўнік"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"чытанне тэрмінаў, дададзеных у слоўнік"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Дазваляе прыкладанню счытваць любыя прыватныя словы, імёны і фразы, якія карыстальнік можа захоўваць у карыстальніцкім слоўніку."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"запісаць у карыстальніцкі слоўнік"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дазваляе прыкладанням запісваць новыя словы ў карыстальніцкі слоўнік."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"чытанне змесціва USB-назапашвальнiка"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"чытанне змесціва SD-карты"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Дазваляе прыкладаню счытваць змесцiва USB-назапашвальніка."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Дазваляе прыкладанню счытваць змесціва SD-карты."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"змяніць/выдаліць змесціва USB-назапашвальнiка"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"змяняць/выдаляць змесціва SD-карты"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"чытанне змесціва USB-назапашв."</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"чытанне змесціва SD-карты"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Дазваляе прыкладанням чытаць змесціва USB-назапашвальніка, які можа змяшчаць фатаграфіі і мультымедыйныя файлы."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Дазваляе прыкладанням чытаць змесціва карты памяці SD-карты, якая можа ўключаць фатаграфіі і мультымедыйныя файлы."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"зм. або выд. змес. USB-назап."</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"змена або выдаленне змесціва SD-карты"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дазваляе прыкладаням выконваць запіс ва USB-назапашвальнік."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Дазваляе прыкладанням запісваць на SD-карту."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"змяніць/выдаліць унутраныя носьбіты змесціва"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"У тэлефоне няма SIM-карты."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Усталюйце SIM-карту."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-карта адсутнічае ці не чытаецца. Устаўце SIM-карту."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ваша SIM-карта была адключана назаўсёды."\n" Звяжыцеся з аператарам бесправадной сувязі, каб атрымаць іншую SIM-карту."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Кнопка папярэдняй кампазiцыi"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Кнопка наступнай кампазiцыi"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"Знак"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"слова"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"спасылка"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"радок"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Не атрымалася выканаць заводскую праверку"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Прыход"</string> <string name="autofill_area" msgid="3547409050889952423">"Плошча"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Эмірат"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"чытаць гісторыю браўзэра і закладак"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"чытанне вэб-закладак і гісторыi"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Дазваляе прыкладанням счытваць усе URL, якія наведвалiся з браўзэра, а таксама ўсе закладкi браўзэра."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"пісаць гісторыю браўзэра і закладак"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"запіс вэб-закладак і гісторыi"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Дазваляе прыкладанням змяняць гісторыю браўзэра або закладкі, якія захоўваюцца на планшэце. Шкоднасныя прыкладанні могуць выкарыстоўваць гэту магчымасць для выдалення або змены дадзеных вашага браўзэра."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Дазваляе прыкладанням змяняць гісторыю браўзэра або закладак, захаваных у тэлефоне. Шкоднасныя прыкладанні могуць выкарыстоўваць гэту магчымасць для выдалення або змены дадзеных вашага браўзэра."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"Усталяваць сігнал у будзільніку"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"усталёўка сігналу"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Дазваляе прыкладанню ўсталёўваць сігнал на ўсталяваным прыкладанні будзільніка. Пэўныя прыкладанні будзільніка не могуць рэалізоўваць гэтую магчымасць."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"дадаць галасавое паведамленне"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Дазваляе прыкладанням дадаваць паведамленні ў вашу скрыню галасавой пошты."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Задаць"</string> <string name="date_time_done" msgid="2507683751759308828">"Гатова"</string> <string name="default_permission_group" msgid="2690160991405646128">"Па змаўчанні"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВАЕ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВАЕ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Дазволу не патрабуецца"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Не паказваць"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Паказаць усе"</b></string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index f29bd972d2ab..0ab08d4f8d78 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Таблетът ви ще се изключи."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Телефонът ви ще се изключи."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Искате ли да изключите?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Рестартиране в безопасен режим"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Искате ли да рестартирате в безопасен режим? Това ще деактивира всички инсталирани от вас приложения на трети страни. Те ще бъдат възстановени, когато рестартирате отново."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Скорошни"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Няма скорошни приложения."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Опции за таблета"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Вашите съобщения"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Четене и запис на вашите SMS, имейли и други съобщения."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Вашите лични данни"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Пряк достъп до контактите и календара ви, съхранени в таблета."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Пряк достъп до контактите и календара ви, съхранени в телефона."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Местоположение"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Наблюдавайте физическото си местоположение."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Мрежова комуникация"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Осъществявайте достъп до различни мрежови функции."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Вашите профили"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Достъп до наличните профили."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Контрол върху хардуера"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Достъп и контрол на системата на ниско ниво."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Инструменти за програмиране"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функции, необходими само за програмисти на приложения."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Съхранение"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Достъп до USB хранилището."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Достъп до SD картата."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Разрешава на приложението да бъде лентата на състоянието."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"разгъване или свиване на лентата на състоянието"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Разрешава на приложението да разгъва или свива лентата на състоянието."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"прехващане на изходящи обаждания"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"пренасочване на изходящите обаждания"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Разрешава на приложението да обработва изходящите обаждания и да променя номера, който да се набере. Злонамерените приложения могат да наблюдават, пренасочват или не допускат изходящи обаждания."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"получаване на SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"получаване на текстови съобщения (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Разрешава на приложението да получава и обработва SMS съобщения. Злонамерените приложения могат да наблюдават съобщенията ви или да ги изтрият, без да ви ги покажат."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"получаване на MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"получаване на текстови съобщения (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Разрешава на приложението да получава и обработва MMS съобщения. Злонамерените приложения могат да наблюдават съобщенията ви или да ги изтрият, без да ви ги покажат."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"получаване на спешни излъчвания"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Разрешава на приложението да получава и обработва спешни съобщения за излъчване. Това разрешение е налице само за системни приложения."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Разрешава на приложението да изпраща SMS съобщения. Злонамерените приложения могат да ви въвлекат в разходи, като изпращат съобщения без потвърждение от ваша страна."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"изпращане на SMS съобщения без потвърждаване"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Разрешава на приложението да изпраща SMS съобщения. Злонамерените приложения могат да ви въвлекат в разходи, като изпращат съобщения без потвърждение от ваша страна."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"четене на SMS или MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"четене на текстовите ви съобщения (SMS или MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Разрешава на приложението да чете SMS съобщенията, съхранени в таблета или в SIM картата ви. Злонамерените приложения могат да прочетат поверителните ви съобщения."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Разрешава на приложението да чете SMS съобщенията, съхранени в телефона или в SIM картата ви. Злонамерените приложения могат да прочетат поверителните ви съобщения."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"редактиране на SMS или MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"редактиране на текстовите ви съобщения (SMS или MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Разрешава на приложението да записва в SMS съобщенията, съхранени в таблета или в SIM картата ви. Злонамерените приложения могат да изтрият съобщенията ви."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Разрешава на приложението да записва в SMS съобщенията, съхранени в телефона или в SIM картата ви. Злонамерените приложения могат да изтрият съобщенията ви."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"получаване на WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"получаване на текстови съобщения (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Разрешава на приложението да получава и обработва WAP съобщения. Злонамерените приложения могат да наблюдават съобщенията ви или да ги изтрият, без да ви ги покажат."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"извличане на изпълняваните приложения"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Разрешава на приложението да извлича информация за задачите, изпълнявани понастоящем и неотдавна. Злонамерените приложения могат да открият поверителна информация за други приложения."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"извличане на подробности за изпълняваните прилож."</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Разрешава на приложението да извлича подробна информация за задачите, изпълнявани понастоящем и неотдавна. Злонамерените приложения могат да открият поверителна информация за други приложения."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"пренареждане на изпълняваните приложения"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Разрешава на приложението да прехвърля задачи на преден и на заден план. Злонамерените приложения могат сами да се изведат на преден план без ваша намеса."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"спиране на изпълняваните приложения"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Разрешава на приложението да контролира режима на съвместимост на екрана на други приложения. Злонамерените програми могат да нарушат поведението на други приложения."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"активиране на отстраняването на грешки в приложения"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Разрешава на приложението да включва отстраняването на грешки за друго приложение. Злонамерените приложения могат да използват това, за да прекратят други приложения."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"промяна на настройките ви за потребителския интерфейс"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"промяна на настройките за екрана на системата"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Разрешава на приложението да променя текущата конфигурация, като например локала или цялостния размер на шрифта."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"активиране на мото режима"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Разрешава на приложението да активира моторежима."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"прекратяване на намиращи се на заден план процеси"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"затваряне на другите приложения"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Разрешава на приложението да прекратява намиращи се на заден план процеси на други приложения дори и ако няма недостиг на памет."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"принудително спиране на други приложения"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Разрешава на приложението принудително да спира други приложения."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Разрешава на приложението да излъчва известие, че е получено WAP PUSH съобщение. Злонамерените приложения могат да използват това, за да фалшифицират получаването на MMS или скрито да заменят съдържанието на произволна уеб страница със злонамерен вариант."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ограничаване на броя изпълнявани процеси"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Разрешава на приложението да контролира максималния брой изпълнявани процеси. Нормалните приложения никога не се нуждаят от това."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"затваряне на всички приложения на заден план"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"принудително затваряне на приложенията на заден план"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Разрешава на приложението да контролира дали дейностите винаги се завършват веднага щом минат на заден план. Нормалните приложения никога не се нуждаят от това."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"промяна на статистическите данни за батерията"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Разрешава на приложението да променя събраните статистически данни за батерията. Не е предназначено за нормални приложения."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Разрешава на приложението да стартира потребителски интерфейс за потвърждаването на пълно резервно копие. Да не се използва от никое приложение."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"показване на неупълномощени прозорци"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Разрешава на приложението да създава прозорци, предназначени за употреба от вътрешния системен потребителски интерфейс. Не е предназначено за нормални приложения."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"показване на сигнали на ниво система"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"изобразяване над други приложения"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Разрешава на приложението да показва прозорци за системни сигнали. Злонамерените приложения могат да завладеят целия екран."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"промяна на глобалната скорост на анимациите"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Разрешава на приложението да променя глобалната скорост на анимациите (по-бавни или по-бързи) по всяко време."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Разрешава на приложението да дава или отменя конкретни разрешения за себе си или други приложения. Злонамерените програми могат да използват това, за да осъществяват неразрешен от вас достъп до функции."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"задаване на предпочитани приложения"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Разрешава на приложението да променя предпочитаните ви приложения. Злонамерените приложения могат скрито да променят приложенията, които се изпълняват, като ги фалшифицират, за да се сдобият с ваши лични данни."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"промяна на глобалните системни настройки"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"промяна на системните настройки"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Разрешава на приложението да променя данните на настройките на системата. Злонамерените приложения могат да повредят конфигурацията на системата ви."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"промяна на защитените системни настройки"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Разрешава на приложението да променя данните на защитените настройки на системата. Не е предназначено за нормални приложения."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"промяна на картата на услугите на Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Разрешава на приложението да променя картата на услугите на Google. Не е предназначено за нормални приложения."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"автоматично стартиране при зареждане"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"стартиране при пускане"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Разрешава на приложението да се стартира веднага щом системата завърши зареждането си. Това може да доведе до по-бавно стартиране на таблета и да позволи на приложението да забави таблета като цяло, тъй като се изпълнява постоянно."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Разрешава на приложението да се стартира веднага щом системата завърши зареждането си. Това може да доведе до по-бавно стартиране на телефона и да позволи на приложението да забави телефона като цяло, тъй като се изпълнява постоянно."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"изпращане на оставащи излъчвания"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Разрешава на приложението да изпраща оставащи излъчвания, които се запазват след края на излъчването. Злонамерените приложения могат да причинят бавна или нестабилна работа на таблета, като го накарат да използва твърде много памет."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Разрешава на приложението да изпраща оставащи излъчвания, които се запазват след края на излъчването. Злонамерените приложения могат да причинят бавна или нестабилна работа на телефона, като го накарат да използва твърде много памет."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"четене на данни за контактите"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"запис на данни за контактите"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"четене на контактите ви"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Разрешава на приложението да чете всички данни за съхранените на таблета ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това разрешение, за да изпращат данните за контактите ви на други хора."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Разрешава на приложението да чете всички данни за съхранените на телефона ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това разрешение, за да изпращат данните за контактите ви на други хора."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"промяна на контактите ви"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Разрешава на приложението да променя данните за съхранените на таблета ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това, за да изтриват или променят данните за контактите ви."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Разрешава на приложението да променя данните за съхранените на телефона ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това, за да изтриват или променят данните за контактите ви."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"четене на списъка с обаждания"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Разрешава на приложението да чете списъка с обаждания на таблета ви, включително данните за входящите и изходящите обаждания. Злонамерените приложения могат да използват това, за да изпращат информацията ви на други хора."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Разрешава на приложението да чете списъка с обаждания на телефона ви, включително данните за входящите и изходящите обаждания. Злонамерените приложения могат да използват това, за да изпращат информацията ви на други хора."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"запис на списъка с обаждания"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Разрешава на приложението да променя списъка с обаждания на таблета ви, включително данните за входящите и изходящите обаждания. Злонамерените приложения могат да използват това, за да изтрият или променят този списък."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Разрешава на приложението да променя списъка с обаждания на телефона ви, включително данните за входящите и изходящите обаждания. Злонамерените приложения могат да използват това, за да изтрият или променят този списък."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"четене на данните в профила ви"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"четене на собств. ви карт. с данни за контакт"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Разрешава на приложението да чете информацията от личния потребителски профил, съхранена на устройството ви, например вашето име и данни за връзка. Това означава, че приложението може да ви идентифицира и да изпраща информацията за потребителския ви профил на други хора."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"запис в потр. ви профил"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"промяна на собств. ви карт. с данни за контакт"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Разрешава на приложението да променя или добавя към личния потребителски профил информация, съхранена на устройството ви, като например вашето име и данни за връзка. Това означава, че приложението може да ви идентифицира и да изпраща информацията за потребителския ви профил на други хора."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"четене на социалния ви поток"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Разрешава на приложението да осъществява достъп и да синхронизира социални актуализации от вас и приятелите ви. Злонамерените приложения могат да използват това, за да четат частни съобщения помежду ви в социалните мрежи."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"принудително рестартиране на телефона"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Разрешава на приложението принудително да рестартира таблета."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Разрешава на приложението принудително да рестартира телефона."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"активиране и деактивиране на файлови системи"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"достъп до файл. система на USB хран."</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"достъп до файловата система на SD картата"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Разрешава на приложението да свързва или спира файлови системи за изваждащо се хранилище."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"форматиране на външно устройство за съхранение"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"изтриване на USB хранилището"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"изтриване на SD картата"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Разрешава на приложението да форматира изваждащо се хранилище."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"получаване на информация за вътрешното хранилище"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Разрешава на приложението да получава информация за вътрешното хранилище."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Разрешава на приложението да свързва или спира вътрешното хранилище."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"преименуване на вътрешно хранилище"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Разрешава на приложението да преименува вътрешното хранилище."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"контролиране на вибрацията"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"контролиране на вибрирането"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Разрешава на приложението да контролира устройството за вибрация."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"контролиране на фенерчето"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Разрешава на приложението да контролира фенерчето."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Разрешава на приложението да укаже на системата кои приспособления от кои приложения могат да се използват. Приложение с това разрешение може да предостави на други приложения достъп до лични данни. Не е предназначено за нормални приложения."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"промяна на състоянието на телефона"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Разрешава на приложението да контролира телефонните функции на устройството. Приложение с такова разрешение може да превключва между мрежи, да включва и изключва радиомодула на телефона и други подобни, без изобщо да ви известява."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"четене на състоянието и идентификационните данни на телефона"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"четене на състоянието и идентификационните данни на телефона"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Разрешава на приложението достъп до телефонните функции на устройството. Приложение с такова разрешение може да определи телефонния и серийния номер на телефона, дали обаждането е активно, с кой номер е обаждането и други подобни."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"предотвратяване на спящия режим на таблета"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"предотвратява спящ режим на телефона"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Изпълнява се като тест на ниско ниво от производителя, което позволява пълен достъп до хардуера на телефона. Налице е само когато телефонът работи в режим на тест от производителя."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"задаване на тапет"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Разрешава на приложението да задава системния тапет."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"задаване на подсказванията за размери за тапета"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"коригиране на размера на тапета ви"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Разрешава на приложението да задава подсказките за размерите на системния тапет."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"възстановяване на системата до стандартните фабрични настройки"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Разрешава на приложението изцяло да възстанови системата до фабричните настройки, изтривайки всички данни, конфигурацията и инсталираните приложения."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Разрешава на приложението да променя часовата зона на телефона."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"действие като AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Разрешава на приложението да извиква модули AccountAuthenticator."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"откриване на известните профили"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"намиране на профили на устройството"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Разрешава на приложението да получава списъка с профили, известни на таблета."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Разрешава на приложението да получава списъка с профили, известни на телефона."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"действие като удостоверяващ модул за профили"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"създаване на профили и задаване на пароли"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Разрешава на приложението да използва възможностите на AccountManager за удостоверяване на профили, включително създаване на профили и получаване и задаване на паролите им."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"управление на списъка с профили"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"добавяне или премахване на профили"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Разрешава на приложението да извършва операции като добавяне и премахване на профили и изтриване на паролите им."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"използване на идентификационните данни за удостоверяване на профил"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"използване на профилите на устройството"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Разрешава на приложението да подава заявка за означения за удостоверяване."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"преглед на състоянието на мрежата"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"преглед на връзките с мрежата"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Разрешава на приложението да вижда състоянието на всички мрежи."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"пълен достъп до интернет"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Разрешава на приложението да създава мрежови сокети."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Разрешава на приложението да променя състоянието на споделената връзка с мрежата."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"промяна на настройката за използване на данни на заден план"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Разрешава на приложението да променя настройката за използване на данни на заден план."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"преглед на състоянието на Wi-Fi мрежата"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"преглед на връзките с Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Разрешава на приложението да вижда информацията за състоянието на Wi-Fi мрежата."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"промяна на състоянието на Wi-Fi мрежата"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"установяване и прекратяване на връзката с Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Разрешава на приложението да се свързва към Wi-Fi точки за достъп и да прекратява връзката с тях, както и да извършва промени в конфигурирани Wi-Fi мрежи."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"разрешаване на приемане на мултикаст през Wi-Fi мрежата"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Разрешава на приложението да получава пакети, които не са адресирани директно към устройството ви. Това може да е полезно при откриване на предлагани в района услуги. Консумира се повече енергия, отколкото в режим без мултикаст."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"администриране на Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"достъп до настройките за Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Разрешава на приложението да конфигурира локалния таблет с Bluetooth, както и да открива и да се сдвоява с отдалечени устройства."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Разрешава на приложението да конфигурира локалния телефон с Bluetooth, както и да открива и да се сдвоява с отдалечени устройства."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Преглед на състоянието на WiMAX мрежата"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Преглед на връзките с WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Разрешава на приложението да вижда информацията за състоянието на WiMAX мрежата."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Промяна на състоянието на WiMAX мрежата"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Разрешава на приложението да се свързва към WiMAX мрежа и да прекратява връзката с нея."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"създаване на връзки през Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"сдвояване с устройства с Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Разрешава на приложението да вижда конфигурацията на локалния таблет с Bluetooth и да изгражда и приема връзки със сдвоени устройства."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Разрешава на приложението да вижда конфигурацията на локалния телефон с Bluetooth и да изгражда и приема връзки със сдвоени устройства."</string> <string name="permlab_nfc" msgid="4423351274757876953">"контролиране на комуникацията в близкото поле"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Разрешава на приложението да комуникира с маркери, карти и четци, ползващи комуникация в близкото поле (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"деактивиране на заключването на клавиатурата"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"деактивиране на заключването на екрана ви"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Разрешава на приложението да деактивира заключването на клавиатурата и свързаната защита с парола. Това е допустимо, когато например телефонът деактивира заключването при получаване на входящо обаждане и после го активира отново, когато обаждането завърши."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"четене на настройките за синхронизиране"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Разрешава на приложението да чете настройките за синхронизиране, като например дали то е активирано за приложението Хора."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"запис на настройките за синхронизиране"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"включване и изключване на синхронизирането"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Разрешава на приложението да променя настройките за синхронизиране, като например дали то е активирано за приложението Хора."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"четене на статистическите данни за синхронизиране"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Разрешава на приложението да чете статистическите данни за синхронизирането, напр. историята на извършените синхронизирания."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Разрешава на приложението да получи подробности за текущо синхронизираните емисии."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"запис в емисиите с абонамент"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Разрешава на приложението да променя текущо синхронизираните ви емисии. Злонамерените приложения могат да ги променят."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"четене на дефинирания от потребителя речник"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"четене на думите, които сте добавили в речника"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Разрешава на приложението да чете частни думи, имена и фрази, които потребителят може да е съхранил в потребителския речник."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"запис в дефинирания от потребителя речник"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Разрешава на приложението да записва нови думи в потребителския речник."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"четене на съдържанието на USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"четене на съдържанието на SD картата"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Разрешава на прил. да чете съдърж. на USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Разрешава на приложението да чете съдържанието на SD картата."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"промяна/изтриване на съдържанието в USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"промяна/изтриване на съдържанието на SD картата"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"четене на съдърж. от USB хран. ви"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"четене на съдържанието от SD картата ви"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Разр. на прилож. да чете съдърж. от USB хран., което може да вкл. снимки и мултимедия."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Разрешава на приложението да чете съдържание от SD картата, което може да включва снимки и мултимедия."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"промяна или изтрив. на съдърж. от USB хран. ви"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"промяна или изтриване на съдържанието от SD картата ви"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Разрешава на приложението да записва в USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Разрешава на приложението да записва върху SD картата."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"пром./изтр. на съдърж. на вътр. мултим. хранил."</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"В телефона няма SIM карта."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Поставете SIM карта."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM картата липсва или е нечетлива. Поставете SIM карта."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM картата ви е деактивирана за постоянно."\n"Свържете се с оператора на безжичната си връзка, за да получите друга."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Бутон за предишния запис"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Бутон за следващия запис"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"знак"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"дума"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"връзка"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"ред"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Фабричният тест не бе успешен"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Община"</string> <string name="autofill_area" msgid="3547409050889952423">"Район"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Емирство"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"четене на историята и отметките на браузъра"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"четене на вашите отметки и история в мрежата"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Разрешава на приложението да чете всички URL адреси, посетени от браузъра, и всички негови отметки."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"запис в историята и отметките на браузъра"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"запис на вашите отметки и история в мрежата"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени в таблета ви. Злонамерените приложения може да използват това, за да изтрият или променят данните на браузъра ви."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени в телефона ви. Злонамерените приложения може да използват това, за да изтрият или променят данните на браузъра ви."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"навиване на будилника"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"навиване на будилника"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Разрешава на приложението да навие инсталирано приложение будилник. Някои будилници може да не изпълнят тази функция."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"добавяне на гласова поща"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Разрешава на приложението да добавя съобщения към входящата ви гласова поща."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Задаване"</string> <string name="date_time_done" msgid="2507683751759308828">"Готово"</string> <string name="default_permission_group" msgid="2690160991405646128">"По подразбиране"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВО: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВО: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Не се изискват разрешения"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Скриване"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Показване на всички"</b></string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 19bf7983e6a6..c9d7fe042a5e 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"La tauleta s\'apagarà."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"El telèfon s\'apagarà."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Vols apagar-lo?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reinicia en mode segur"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Vols reiniciar en mode segur? Es desactivaran les aplicacions de tercers que hagis instal·lat. Es restabliran quan tornis a reiniciar."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Recents"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"No hi ha aplicacions recents"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opcions de la tauleta"</string> @@ -170,12 +168,43 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Missatges"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Llegeix i escriu SMS, correus electrònics i altres missatges."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informació personal"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accés directe als contactes i al calendari emmagatzemat a la tauleta."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accés directe als contactes i al calendari emmagatzemats al telèfon."</string> + <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Accés directe a informació sobre tu, emmagatzemada a la targeta de contacte."</string> + <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Informació social"</string> + <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Accés directe a informació sobre els teus contactes i sobre les teves connexions socials."</string> <string name="permgrouplab_location" msgid="635149742436692049">"Ubicació"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Supervisa la teva ubicació física."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicació de xarxa"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Accedeix a diverses funcions de xarxa."</string> + <string name="permgrouplab_shortRangeNetwork" msgid="4504840216096355984">"Bluetooth i NFC"</string> + <string name="permgroupdesc_shortRangeNetwork" msgid="8821013030346680806">"Accés a xarxes i dispositius Bluetooth o NFC."</string> + <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Configuració d\'àudio"</string> + <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Canviar la configuració de l\'àudio."</string> + <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Afectar la bateria"</string> + <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Fer servir funcions que poden consumir bateria ràpidament."</string> + <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendari"</string> + <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Accés directe a calendaris i a esdeveniments."</string> + <string name="permgrouplab_dictionary" msgid="8114410334955871144">"Diccionari de l\'usuari"</string> + <string name="permgroupdesc_dictionary" msgid="40926483968949978">"Accés directe al diccionari de l\'usuari."</string> + <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Marcadors i historial"</string> + <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Accés directe a l\'historial de marcadors i de navegació."</string> + <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarma"</string> + <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Definir l\'alarma."</string> + <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Bústia de veu"</string> + <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Accés directe a la bústia de veu."</string> + <string name="permgrouplab_microphone" msgid="171539900250043464">"Micròfon"</string> + <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Accés directe al micròfon per enregistrar l\'àudio."</string> + <string name="permgrouplab_camera" msgid="4820372495894586615">"Càmera"</string> + <string name="permgroupdesc_camera" msgid="2933667372289567714">"Accés directe a la càmera per a la captura d\'imatges o de vídeos."</string> + <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informació de les aplicacions"</string> + <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacitat d\'afectar el rendiment d\'altres aplicacions del dispositiu."</string> + <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fons de pantalla"</string> + <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Canviar la configuració del fons de pantalla del dispositiu."</string> + <string name="permgrouplab_systemClock" msgid="406535759236612992">"Rellotge"</string> + <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Canviar l\'hora o la zona horària del dispositiu."</string> + <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra d\'estat"</string> + <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Canviar la configuració de la barra d\'estat del dispositiu."</string> + <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Configuració de sincronització"</string> + <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Accedir a la configuració de sincronització."</string> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Comptes"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accedeix als comptes disponibles."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controls de maquinari"</string> @@ -186,6 +215,8 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Accés de nivell inferior i control del sistema."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Eines de desenvolupament"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funcions que només necessiten els desenvolupadors d\'aplicacions."</string> + <string name="permgrouplab_display" msgid="4279909676036402636">"IU d\'altres aplicacions"</string> + <string name="permgroupdesc_display" msgid="6051002031933013714">"Afectar la IU d\'altres aplicacions."</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Emmagatzematge"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accedeix a l\'emmag. USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accedeix a la targeta SD."</string> @@ -195,11 +226,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permet que l\'aplicació sigui la barra d\'estat."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ampliar/reduir la barra d\'estat"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permet que l\'aplicació ampliï o redueixi la barra d\'estat."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptar les trucades de sortida"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"desviació de les trucades sortints"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permet que l\'aplicació processi les trucades sortints i que canviï el número que es marcarà. Les aplicacions malicioses poden supervisar, redirigir o bloquejar les trucades sortints."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"rebre SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"recepció de missatges de text (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permet que l\'aplicació rebi i processi missatges SMS. Les aplicacions malicioses poden supervisar els missatges o suprimir-los sense mostrar-te\'ls."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"rebre MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"recepció de missatges de text (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permet que l\'aplicació rebi i processi missatges MMS. Les aplicacions malicioses poden supervisar els missatges o suprimir-los sense mostrar-te\'ls."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recepció d\'emissions d\'emergència"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permet que l\'aplicació rebi i processi missatges de difusió d\'emergència. Aquest permís només està disponible per a les aplicacions del sistema."</string> @@ -209,16 +240,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Permet que l\'aplicació enviï missatges SMS. Les aplicacions malicioses poden enviar missatges sense la teva confirmació, cosa que et pot fer gastar diners."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviament de missatges SMS sense confirmació"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permet que l\'aplicació enviï missatges SMS. Les aplicacions malicioses poden enviar missatges sense la teva confirmació, cosa que et pot fer gastar diners."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"llegir SMS o MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"lectura dels missatges de text (SMS o MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats a la tauleta o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats al telèfon o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"editar SMS o MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"edició dels missatges de text (SMS o MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats a la tauleta o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats al telèfon o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"rebre WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recepció de missatges de text (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permet que l\'aplicació rebi i processi missatges WAP. Les aplicacions malicioses poden supervisar els missatges o suprimir-los sense mostrar-te\'ls."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"recupera les aplicacions en execució"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permet que l\'aplicació recuperi informació sobre les tasques que s\'estan executant actualment i que s\'han executat recentment. Les aplicacions malicioses poden descobrir informació privada sobre altres aplicacions."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recupera els detalls d\'aplicacions en execució"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permet que l\'aplicació recuperi informació detallada sobre les tasques que s\'estan executant actualment i que s\'han executat recentment. Les aplicacions malicioses poden descobrir informació privada sobre altres aplicacions."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"canvia l\'ordre de les aplicacions en execució"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permet que l\'aplicació desplaci tasques en primer o segon pla. Les aplicacions malicioses poden aparèixer en primer pla sense el teu consentiment."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"atura les aplicacions que s\'estan executant"</string> @@ -229,11 +262,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permet que l\'aplicació controli el mode de compatibilitat de pantalla d\'altres aplicacions. És possible que les aplicacions malicioses interrompin el comportament d\'altres aplicacions."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"activa la depuració d\'aplicacions"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permet que una aplicació activi la depuració per a una altra aplicació. Les aplicacions malicioses poden utilitzar aquesta funció per finalitzar altres aplicacions."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"canviar la configuració de la IU"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"canvi de la configuració de pantalla del sistema"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permet que una aplicació canviï la configuració actual, com ara la configuració regional o la mida global del tipus de lletra."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"activar el mode de cotxe"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permet que l\'aplicació activi el mode de cotxe."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"destruir processos en segon terme"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"tancament d\'altres aplicacions"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permet que l\'aplicació finalitzi els processos en segon pla d\'altres aplicacions, fins i tot si queda prou memòria."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"força l\'aturada d\'altres aplicacions"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permet que l\'aplicació forci l\'aturada d\'altres aplicacions."</string> @@ -257,7 +290,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permet que l\'aplicació difongui una notificació que indica que s\'ha rebut un missatge d\'inserció WAP. Les aplicacions malicioses poden utilitzar-ho per falsificar la recepció dels missatges MMS o per substituir silenciosament el contingut d\'una pàgina web per variants malicioses."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar el nombre de processos en execució"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permet que l\'aplicació controli el nombre màxim de processos que s\'executaran. No s\'hauria de necessitar mai per a les aplicacions normals."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"fes que es tanquin totes les aplicacions de fons"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"com fer que es tanquin les aplicacions en segon pla"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permet que l\'aplicació controli si les activitats sempre finalitzen quan passen a segon pla. No es necessita mai per a les aplicacions normals."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modificar les estadístiques de la bateria"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permet que l\'aplicació modifiqui les estadístiques d\'ús dels components recopilades. No indicat per a les aplicacions normals."</string> @@ -267,7 +300,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permet que l\'aplicació iniciï la IU de confirmació de còpia de seguretat completa. No la pot fer servir qualsevol aplicació."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"visualitzar finestres no autoritzades"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permet que l\'aplicació creï finestres que utilitzarà la interfície d\'usuari del sistema intern. No indicat per a les aplicacions normals."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"mostrar les alertes del sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"crida d\'altres aplicacions"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permet que l\'aplicació mostri finestres d\'alertes del sistema. Les aplicacions malicioses poden ocupar tota la pantalla."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar la velocitat d\'animacions global"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permet que l\'aplicació canviï la velocitat d\'animació global (animacions més ràpides o lentes) en qualsevol moment."</string> @@ -329,37 +362,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permet que una aplicació concedeixi o denegui permisos específics per a aquesta o per a altres aplicacions. És possible que les aplicacions malicioses ho facin servir per accedir a funcions a les quals no has concedit accés."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"defineix les aplicacions preferides"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permet que l\'aplicació modifiqui les aplicacions preferides. Les aplicacions malicioses poden canviar silenciosament les aplicacions que s\'executen, falsejar les aplicacions existents o recollir dades privades de l\'usuari."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modificar la configuració global del sistema"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modificació de la configuració del sistema"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permet que l\'aplicació modifiqui les dades de configuració del sistema. Les aplicacions malicioses poden malmetre la configuració del sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar la configuració de seguretat del sistema"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permet que l\'aplicació modifiqui les dades de la configuració de seguretat del sistema. No indicat per a les aplicacions normals."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modificar el mapa de serveis de Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permet que l\'aplicació modifiqui el mapa dels serveis de Google. No la poden fer servir les aplicacions normals."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"iniciar automàticament en arrancar"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"execució en iniciar"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permet que l\'aplicació s\'iniciï tan bon punt el sistema hagi acabat d\'arrencar. Això pot fer que es trigui més a iniciar el telèfon i permetre a l\'aplicació alentir-ne el funcionament general en executar-se sempre."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permet que l\'aplicació s\'iniciï tan bon punt el sistema hagi acabat d\'arrencar. Això pot fer que es trigui més a iniciar el telèfon i permetre a l\'aplicació alentir-ne el funcionament general si s\'executa sempre."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar difusió permanent"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permet que l\'aplicació enviï emissions permanents, que es conserven després de finalitzar l\'emissió. Les aplicacions malicioses poden alentir o desestabilitzar la tauleta si li fan utilitzar massa memòria."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permet que l\'aplicació enviï emissions permanents, que es conserven després de finalitzar l\'emissió. Les aplicacions malicioses poden alentir o desestabilitzar el telèfon si li fan utilitzar massa memòria."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"llegir dades de contacte"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"escriure dades de contacte"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"lectura dels contactes"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permet que l\'aplicació llegeixi totes les dades sobre els contactes emmagatzemades a la tauleta, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per enviar les teves dades de contacte a altres persones."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permet que l\'aplicació llegeixi totes les dades sobre els contactes emmagatzemades al telèfon, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per enviar les teves dades de contacte a altres persones."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modificació dels contactes"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permet que l\'aplicació modifiqui les dades sobre els contactes emmagatzemades a la tauleta, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per esborrar o per modificar les teves dades de contacte."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permet que l\'aplicació modifiqui les dades sobre els contactes emmagatzemades al telèfon, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per esborrar o per modificar les teves dades de contacte."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"lectura del registre de trucades"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permet que l\'aplicació llegeixi el registre de trucades de la teva tauleta, incloses les dades de les trucades entrants i sortints. És possible que les aplicacions malicioses ho utilitzin per enviar les teves dades a altres persones."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permet que l\'aplicació llegeixi el registre de trucades del teu telèfon, incloses les dades de les trucades entrants i sortints. És possible que les aplicacions malicioses ho utilitzin per enviar les teves dades a altres persones."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"escriptura del registre de trucades"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permet que l\'aplicació modifiqui el registre de trucades de la teva tauleta, incloses les dades de les trucades entrants i sortints. És possible que les aplicacions malicioses ho utilitzin per eliminar o per modificar el teu registre de trucades."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permet que l\'aplicació modifiqui el registre de trucades del teu telèfon, incloses les dades de les trucades entrants i sortints. És possible que les aplicacions malicioses ho utilitzin per eliminar o per modificar el teu registre de trucades."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"lectura de dades del teu perfil"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"lectura targeta de contacte"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permet que l\'aplicació pugui llegir informació del perfil personal emmagatzemada al dispositiu, com ara el teu nom i la teva informació de contacte. Això significa que l\'aplicació et pot identificar i enviar la informació del teu perfil a altres persones."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"escriptura a les teves dades del perfil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modificació targeta contacte"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permet que l\'aplicació pugui canviar o afegir informació del perfil personal emmagatzemada al dispositiu, com ara el teu nom i la teva informació de contacte. Això significa que altres aplicacions et poden identificar i enviar la informació del teu perfil a d\'altres persones."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"llegeix el teu tauler d\'activitat social"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permet que l\'aplicació accedeixi a les teves actualitzacions socials i a les dels teus amics i que les sincronitzi. Les aplicacions malicioses poden fer servir aquesta funció per llegir comunicacions privades entre tu i els teus amics a les xarxes socials."</string> @@ -400,9 +429,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forçar el reinici del telèfon"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permet que l\'aplicació faci que es reiniciï la tauleta."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permet que l\'aplicació faci que es reiniciï el telèfon."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"activar i desactivar sistemes de fitxers"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"accés sist. fitxers emmag. USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accés al sistema de fitxers de la targeta SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permet que l\'aplicació instal·li i desinstal·li sistemes de fitxers per a l\'emmagatzematge extraïble."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatar l\'emmagatzematge extern"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"esborrament emmagatzematge USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"esborrament de la targeta SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permet que l\'aplicació formati l\'emmagatzematge extraïble."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"obtén informació sobre l\'emmagatzematge intern"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permet que l\'aplicació obtingui informació de l\'emmagatzematge intern."</string> @@ -414,7 +445,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permet que l\'aplicació instal·li/desinstal·li l\'emmagatzematge intern."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"canvia el nom de l\'emmagatzematge intern"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permet que l\'aplicació canviï el nom de l\'emmagatzematge intern."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"controlar el vibrador"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"control de la vibració"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permet que l\'aplicació controli el vibrador."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"controlar el flaix"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permet que l\'aplicació controli el flaix."</string> @@ -439,7 +470,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permet que l\'aplicació indiqui al sistema quins widgets pot utilitzar cada aplicació. Amb aquest permís, les aplicacions poden concedir accés a les dades personals a altres aplicacions. No indicat per a les aplicacions normals."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar l\'estat del telèfon"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permet que l\'aplicació controli les funcions de telèfon del dispositiu. Una aplicació amb aquest permís pot canviar de xarxa, activar i desactivar la ràdio del telèfon i dur a terme accions semblants sense notificar-t\'ho."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"llegir l\'estat i la identitat del telèfon"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"lectura de l\'estat i la identitat del telèfon"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permet que l\'aplicació accedeixi a les funcions de telèfon del dispositiu. Una aplicació amb aquest permís pot determinar el número de telèfon i el número de sèrie del telèfon, si una trucada està activa, el número al qual s\'ha connectat la trucada i informació d\'aquest tipus."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"evita que la tauleta entri en mode d\'inactivitat"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir que el telèfon se suspengui"</string> @@ -454,7 +485,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"S\'executa com a prova del fabricant de baix nivell, cosa que permet l\'accés total al maquinari del telèfon. Només està disponible quan un telèfon s\'executa en mode de proves del fabricant."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"definir fons de pantalla"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permet que l\'aplicació estableixi el fons de pantalla del sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"definir els suggeriments de mida de l\'empaperat"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustament de la mida del fons de pantalla"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permet que l\'aplicació defineixi els suggeriments de mida del fons de pantalla."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"restablir el sistema als valors predeterminats de fàbrica"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permet que l\'aplicació restableixi completament el sistema a la configuració de fàbrica, amb la qual cosa s\'esborren totes les dades, la configuració i les aplicacions instal·lades."</string> @@ -466,16 +497,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permet que l\'aplicació canviï la zona horària del telèfon."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"actuar com a AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permet que una aplicació faci trucades a autenticadors de comptes."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"detectar comptes coneguts"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"cerca de comptes al dispositiu"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permet que l\'aplicació obtingui la llista de comptes coneguts per la tauleta."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permet que l\'aplicació obtingui la llista de comptes que coneix el telèfon."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"fer d\'autenticador de comptes"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"creació de comptes i definició de contrasenyes"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permet que l\'aplicació utilitzi les funcions d\'autenticador de comptes del gestor de comptes, incloses la creació de comptes i l\'obtenció i la definició de les seves contrasenyes."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"gestionar la llista de contactes"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"addició o eliminació de comptes"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permet que l\'aplicació dugui a terme operacions com ara afegir i eliminar comptes i suprimir-ne la contrasenya."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"utilitzar les credencials d\'autenticació d\'un compte"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"ús dels comptes al dispositiu"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permet que l\'aplicació sol·liciti testimonis d\'autenticació."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"visualitzar l\'estat de la xarxa"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"visualització de les connexions de xarxa"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permet que l\'aplicació visualitzi l\'estat de totes les xarxes."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"accés total a Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permet que l\'aplicació pugui crear sòcols de xarxa."</string> @@ -487,29 +518,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet a l\'aplicació canviar l\'estat de la connectivitat de les xarxes compartides."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"canviar la configuració d\'ús de dades de referència"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet que l\'aplicació canviï la configuració d\'ús de les dades de fons."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"visualitzar l\'estat de la Wi-fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"visualització de les connexions Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permet que l\'aplicació visualitzi la informació sobre l\'estat de la xarxa Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"canviar l\'estat de la Wi-fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"connexió i desconnexió de la Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permet que l\'aplicació es connecti i es desconnecti de punts d\'accés Wi-Fi i que faci canvis a les xarxes Wi-Fi configurades."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permetre la recepció de multidifusió Wi-fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permet que l\'aplicació rebi paquets que no estiguin adreçats directament al teu dispositiu. Pot ser útil en detectar els serveis que s\'ofereixen a prop. Consumeix més energia que el mode que no utilitza la multidestinació."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Administració de Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accés a la configuració de Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permet que l\'aplicació configuri la tauleta Bluetooth local i que cerqui i emparelli dispositius remots."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permet que l\'aplicació configuri el telèfon Bluetooth local i que cerqui i emparelli dispositius remots."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Visualitza l\'estat de WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Visualització de les connexions WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permet que l\'aplicació visualitzi la informació sobre l\'estat de WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Canvia l\'estat de WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permet que l\'aplicació es connecti i es desconnecti de la xarxa WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"crear connexions Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"sincronització amb dispositius Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permet que l\'aplicació mostri la configuració de la tauleta Bluetooth local i que estableixi i accepti connexions amb dispositius emparellats."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permet que una aplicació visualitzi la configuració del telèfon Bluetooth local i que estableixi i accepti connexions amb els dispositius emparellats."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controla Near Field Communication (NFC)"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permet que l\'aplicació es comuniqui amb les etiquetes, les targetes i els lectors de Near Field Communication (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"desactivar el bloqueig del teclat"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desactivació del bloqueig de pantalla"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permet que l\'aplicació desactivi el bloqueig del teclat i qualsevol element de seguretat de contrasenyes associat. Un exemple d\'això és la desactivació, per part del telèfon, del bloqueig del teclat en rebre una trucada telefònica entrant i, a continuació, la reactivació del bloqueig del teclat quan finalitza la trucada."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"llegir la configuració de sincronització"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permet que l\'aplicació modifiqui la configuració de sincronització, com per exemple si està activada la sincronització per a l\'aplicació Persones."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"escriure la configuració de sincronització"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activació o desactivació de la sincronització"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permet que l\'aplicació modifiqui la configuració de sincronització, com per exemple si està activada la sincronització per a l\'aplicació Persones."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"llegir les estadístiques de sincronització"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permet que l\'aplicació llegeixi les estadístiques de sincronització; p. ex., l\'historial de sincronitzacions que s\'han produït."</string> @@ -517,16 +548,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permet que l\'aplicació obtingui detalls sobre els feeds sincronitzats actualment."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escriure feeds subscrits"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permet que l\'aplicació modifiqui els feeds sincronitzats actualment. Les aplicacions malicioses poden canviar els teus feeds sincronitzats."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"llegeix el diccionari definit per l\'usuari"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"lectura dels termes que afegeixes al diccionari"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permet que l\'aplicació llegeixi les paraules, els noms i les frases privats que l\'usuari pot haver emmagatzemat al seu diccionari."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"escriu al diccionari definit per l\'usuari"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permet que l\'aplicació escrigui paraules noves al diccionari de l\'usuari."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"llegeix el contingut de l\'emmagatzematge USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"llegeix el contingut de la targeta SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permet que l\'aplicació llegeixi el contingut de l\'emmagatzematge USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permet que l\'aplicació llegeixi el contingut de la targeta SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar/esborrar contingut USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/esborrar contingut de la targeta SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lectura contingut emmagat. USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lectura del contingut de la targeta SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permet que l\'aplicació llegeixi el contingut de l\'emmagatzematge USB, incloses les fotos i els fitxers multimèdia."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permet que l\'aplicació llegeixi el contingut de la targeta SD, incloses les fotos i els fitxers multimèdia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificació o supressió del contingut de l\'emmagatzematge USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modificació o supressió del contingut de la targeta SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permet que l\'aplicació escrigui a l\'emmagatzematge USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permet a l\'aplicació escriure a la targeta SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"Canvia/esborra emmagatz. intern"</string> @@ -704,6 +735,7 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No hi ha cap targeta SIM al telèfon."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insereix una targeta SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Falta la targeta SIM o no es pot llegir. Insereix-ne una."</string> + <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Targeta SIM no utilitzable."</string> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"La targeta SIM està desactivada permanentment."\n" Contacta amb el teu proveïdor de serveis sense fil per obtenir-ne una altra."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botó de pista anterior"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botó de pista següent"</string> @@ -746,14 +778,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"caràcter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"paraula"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"enllaç"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"línia"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Error a la prova de fàbrica"</string> @@ -783,12 +811,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Districte"</string> <string name="autofill_area" msgid="3547409050889952423">"Àrea"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"llegir l\'historial i les adreces d\'interès del navegador"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lectura dels marcadors i l\'historial web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permet que l\'aplicació llegeixi tots els URL que ha visitat el navegador i totes les adreces d\'interès del navegador."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"escriure l\'historial i les adreces d\'interès del navegador"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"introducció de marcadors i d\'historial web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permet que l\'aplicació modifiqui l\'historial o els marcadors del navegador emmagatzemats a la tauleta. Les aplicacions malicioses poden utilitzar-ho per esborrar o per modificar les dades del navegador."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permet a l\'aplicació modificar l\'historial o els marcadors del navegador emmagatzemats al telèfon. Les aplicacions malicioses poden utilitzar-ho per esborrar o modificar les dades del navegador."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"defineix l\'alarma com a despertador"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"configuració d\'una alarma"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permet que l\'aplicació defineixi una alarma en una aplicació de despertador instal·lada. És possible que algunes aplicacions de despertador no incorporin aquesta funció."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"afegeix bústia de veu"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permet que l\'aplicació afegeixi missatges a la safata d\'entrada de la bústia de veu."</string> @@ -1049,7 +1077,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Defineix"</string> <string name="date_time_done" msgid="2507683751759308828">"Fet"</string> <string name="default_permission_group" msgid="2690160991405646128">"Predeterminat"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOU: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOU: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"No cal cap permís"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Amaga"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostra\'ls tots"</b></string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 4a2908e01693..6faf0fe4e96c 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -48,8 +48,8 @@ <string name="mismatchPin" msgid="609379054496863419">"Zadané kódy PIN se neshodují."</string> <string name="invalidPin" msgid="3850018445187475377">"Zadejte kód PIN o délce 4-8 číslic."</string> <string name="invalidPuk" msgid="8761456210898036513">"Zadejte osmimístný nebo delší kód PUK."</string> - <string name="needPuk" msgid="919668385956251611">"Karta SIM je blokována pomocí kódu PUK. Odblokujete ji zadáním kódu PUK."</string> - <string name="needPuk2" msgid="4526033371987193070">"Chcete-li odblokovat kartu SIM, zadejte kód PUK2."</string> + <string name="needPuk" msgid="919668385956251611">"SIM karta je blokována pomocí kódu PUK. Odblokujete ji zadáním kódu PUK."</string> + <string name="needPuk2" msgid="4526033371987193070">"Chcete-li odblokovat SIM kartu, zadejte kód PUK2."</string> <string name="imei" msgid="2625429890869005782">"IMEI"</string> <string name="meid" msgid="4841221237681254195">"MEID"</string> <string name="ClipMmi" msgid="6952821216480289285">"Příchozí identifikace volajícího"</string> @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tablet se vypne."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Váš telefon bude vypnut."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Chcete vypnout telefon?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Restart v nouzovém režimu"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Chcete zařízení restartovat v nouzovém režimu? Deaktivujete tak veškeré nainstalované aplikace třetích stran. Po dalším restartu budou obnoveny."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Nejnovější"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Žádné nové aplikace"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Možnosti tabletu"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Vaše zprávy"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Čtení a zápis zpráv SMS, e-mailů a dalších zpráv."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vaše osobní informace"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Přímý přístup k vašim kontaktům a kalendáři v tabletu."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Přímý přístup k vašim kontaktům a kalendáři v telefonu."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Vaše poloha"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Sledovat vaši fyzickou polohu."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Síťová komunikace"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Přístup k různým funkcím sítě."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaše účty"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Přístup k dostupným účtům."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Řízení hardwaru"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Nízkoúrovňový přístup a kontrola nad systémem."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Nástroje pro vývojáře"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkce pouze pro vývojáře aplikací."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Úložiště"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Přístup do úložiště USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Přístup ke kartě SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Umožňuje aplikaci být stavovým řádkem."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"rozbalení a sbalení stavového řádku"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Umožňuje aplikaci rozbalit či sbalit stavový řádek."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"zachycení odchozích hovorů"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"přesměrování odchozích hovorů"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Umožňuje aplikaci zpracovat odchozí hovory a měnit vytáčené číslo. Škodlivé aplikace mohou sledovat či přesměrovat příchozí hovory nebo jim zabránit."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"příjem zpráv SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"příjem textových zpráv (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Umožňuje aplikaci přijmout a zpracovat zprávy SMS. Škodlivé aplikace mohou sledovat vaše zprávy nebo je smazat, aniž by vám byly zobrazeny."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"příjem zpráv MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"příjem textových zpráv (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Umožňuje aplikaci přijmout a zpracovat zprávy MMS. Škodlivé aplikace mohou sledovat vaše zprávy nebo je smazat, aniž by se vám zobrazily."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"příjem nouzového vysílání"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Umožňuje aplikaci přijmout a zpracovat zprávy tísňového vysílání. Toto oprávnění je dostupné pouze pro systémové aplikace."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Umožňuje aplikaci odesílat zprávy SMS. Škodlivé aplikace vás mohou připravit o peníze odesíláním zpráv bez vašeho svolení."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"posílat zprávy SMS bez potvrzení"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Umožňuje aplikaci odesílat zprávy SMS. Škodlivé aplikace vás mohou připravit o peníze odesíláním zpráv bez vašeho svolení."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"čtení zpráv SMS a MMS"</string> - <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Umožňuje aplikaci číst zprávy SMS uložené v tabletu nebo na kartě SIM. Škodlivé aplikace mohou číst důvěrné zprávy."</string> - <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Umožňuje aplikaci číst zprávy SMS uložené v telefonu nebo na kartě SIM. Škodlivé aplikace mohou číst důvěrné zprávy."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"úprava zpráv SMS a MMS"</string> - <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Umožňuje aplikaci zapisování do zpráv SMS uložených v tabletu nebo na kartě SIM. Škodlivé aplikace mohou vaše zprávy smazat."</string> - <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Umožňuje aplikaci zapisování do zpráv SMS uložených v telefonu nebo na kartě SIM. Škodlivé aplikace mohou vaše zprávy smazat."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"příjem WAP"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"čtení textových zpráv (SMS nebo MMS)"</string> + <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Umožňuje aplikaci číst zprávy SMS uložené v tabletu nebo na SIM kartě. Škodlivé aplikace mohou číst důvěrné zprávy."</string> + <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Umožňuje aplikaci číst zprávy SMS uložené v telefonu nebo na SIM kartě. Škodlivé aplikace mohou číst důvěrné zprávy."</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"úprava textových zpráv (SMS nebo MMS)"</string> + <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Umožňuje aplikaci zapisování do zpráv SMS uložených v tabletu nebo na SIM kartě. Škodlivé aplikace mohou vaše zprávy smazat."</string> + <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Umožňuje aplikaci zapisování do zpráv SMS uložených v telefonu nebo na SIM kartě. Škodlivé aplikace mohou vaše zprávy smazat."</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"příjem textových zpráv (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Umožňuje aplikaci přijmout a zpracovat zprávy WAP. Škodlivé aplikace mohou sledovat vaše zprávy nebo je smazat, aniž by vám byly zobrazeny."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"načtení spuštěných aplikací"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Umožňuje aplikaci získat informace o aktuálně a naposledy spuštěných úlohách. Škodlivé aplikace mohou odhalit soukromé informace o ostatních aplikacích."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"získání podrobností o spuštěných aplikacích"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Umožňuje aplikaci získat podrobné informace o aktuálně a naposledy spuštěných úlohách. Škodlivé aplikace mohou odhalit soukromé informace o ostatních aplikacích."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"změna uspořádání spuštěných aplikací"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Umožňuje aplikaci přesunout úlohy na popředí nebo pozadí. Škodlivé aplikace mohou vynutit zobrazení na popředí bez vašeho svolení."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"zastavení činnosti aplikací"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Umožňuje aplikaci ovládat režim kompatibility obrazovky v ostatních aplikacích. Škodlivé aplikace mohou narušit chování ostatních aplikací."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"povolení ladění aplikací"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Umožňuje aplikaci zapnout ladění jiné aplikace. Škodlivé aplikace mohou toto oprávnění použít k ukončení ostatních aplikací."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"změna vašeho nastavení uživatelského rozhraní"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"změna systémových nastavení obrazovky"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Umožňuje aplikaci změnit aktuální konfiguraci, např. národní prostředí či obecnou velikost písma."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivovat režim V autě"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Umožňuje aplikaci aktivovat režim V autě."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"ukončit procesy na pozadí"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zavření ostatních aplikací"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Umožňuje aplikaci ukončit procesy ostatních aplikací spuštěné na pozadí, a to i v případě, že je k dispozici dostatek paměti."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"vynucení zastavení jiných aplikací"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Umožňuje aplikaci vynutit zastavení jiných aplikací."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Umožňuje aplikaci vysílat oznámení o přijetí zprávy WAP PUSH. Škodlivé aplikace mohou toto oprávnění použít k vytváření falešných přijatých zpráv MMS nebo utajenému nahrazení obsahu libovolné webové stránky jejich škodlivými variantami."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"omezení počtu spuštěných procesů"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Umožňuje aplikaci řídit maximální počet spuštěných procesů. Běžné aplikace toto oprávnění nikdy nepotřebují."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"zavření všech aplikací na pozadí"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vynucení zavření aplikací na pozadí"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Umožňuje aplikaci ovládat, zda budou činnosti po přechodu na pozadí vždy ukončeny. Běžné aplikace toto oprávnění nikdy nepožadují."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"změna statistických údajů o baterii"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Umožňuje aplikaci upravit shromážděné statistiky o baterii. Toto oprávnění není určeno pro běžné aplikace."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Umožňuje aplikaci spustit uživatelské rozhraní potvrzení úplné zálohy. Toto oprávnění nesmí používat žádná aplikace."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"zobrazení nepovolených oken"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Umožňuje aplikaci vytvářet okna, která se budou používat v interním uživatelském rozhraní systému. Toto oprávnění není určeno pro běžné aplikace."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"zobrazení upozornění systémové úrovně"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"kreslení přes další aplikace"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Umožňuje aplikaci zobrazit okna s výstrahami systému. Škodlivé aplikace mohou převzít kontrolu nad celou obrazovkou."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"změna globální rychlosti animace"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Umožňuje aplikaci kdykoliv globálně změnit rychlost animací (rychlejší či pomalejší animace)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Umožňuje aplikaci udělit nebo odebrat sobě samotné nebo jiným aplikacím určitá oprávnění. Škodlivé aplikace pomocí tohoto oprávnění mohou získat přístup k funkcím, které jste jim nepovolili."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nastavení upřednostňovaných aplikací"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Umožňuje aplikaci upravit preferované aplikace. Škodlivé aplikace mohou tajně měnit běžící aplikace a přinutit stávající aplikace, aby shromažďovaly vaše soukromé údaje."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"změna globálních nastavení systému"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"změna nastavení systému"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Umožňuje aplikaci upravit data nastavení systému. Škodlivé aplikace mohou poškodit konfiguraci systému."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"změny zabezpečených nastavení systému"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Umožňuje aplikaci upravit data nastavení zabezpečení systému. Toto oprávnění není určeno pro běžné aplikace."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"změna mapy služeb Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Umožňuje aplikaci změnit mapu služeb Google. Toto oprávnění není určeno pro běžné aplikace."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatické spuštění při startu"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"spuštění při startu"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Umožňuje aplikaci spuštění ihned po spuštění systému. Toto oprávnění může zpomalit spuštění tabletu a umožnit aplikaci celkově zpomalit tablet, protože bude neustále spuštěna."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Umožňuje aplikaci spuštění ihned po spuštění systému. Toto oprávnění může zpomalit spuštění telefonu a umožnit aplikaci celkově zpomalit telefon, protože bude neustále spuštěna."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"odeslání trvalého vysílání"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Umožňuje aplikaci odeslat trvalá vysílání, která přetrvávají i po skončení vysílání. Škodlivé aplikace mohou tablet zpomalit či způsobit jeho nestabilitu, protože bude používat příliš mnoho paměti."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Umožňuje aplikaci odeslat trvalá vysílání, která přetrvávají i po skončení vysílání. Škodlivé aplikace mohou telefon zpomalit či způsobit jeho nestabilitu, protože bude používat příliš mnoho paměti."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"číst data kontaktů"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"zapisovat data kontaktů"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"čtení kontaktů"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Umožňuje aplikaci číst všechny údaje o kontaktech uložených v tabletu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k posílání vašich kontaktních údajů jiným lidem."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Umožňuje aplikaci číst všechny údaje o kontaktech uložených v telefonu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k posílání vašich kontaktních údajů jiným lidem."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"úprava kontaktů"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Umožňuje aplikaci upravovat všechny údaje o kontaktech uložených v tabletu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k mazání nebo úpravě vašich kontaktních údajů."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Umožňuje aplikaci upravovat všechny údaje o kontaktech uložených v telefonu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k mazání nebo úpravě vašich kontaktních údajů."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"číst seznam hovorů"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Umožňuje aplikaci číst seznam hovorů vašeho tabletu, včetně dat o příchozích a odchozích hovorech. Škodlivé aplikace mohou tato data posílat jiným osobám."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Umožňuje aplikaci číst seznam hovorů vašeho telefonu, včetně dat o příchozích a odchozích hovorech. Škodlivé aplikace mohou tato data posílat jiným osobám."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"zapisovat seznam hovorů"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Umožňuje aplikaci upravovat seznam hovorů vašeho tabletu, včetně dat o příchozích a odchozích hovorech. Škodlivé aplikace to mohou zneužít k vymazání nebo změnám seznamu hovorů."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Umožňuje aplikaci upravovat seznam hovorů vašeho telefonu, včetně dat o příchozích a odchozích hovorech. Škodlivé aplikace to mohou zneužít k vymazání nebo změnám seznamu hovorů."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"čtení údajů o vašem profilu"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"čtení vaší vlastní vizitky"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Umožňuje aplikaci číst údaje v osobním profilu uložené v zařízení, například jméno nebo kontaktní údaje. Znamená to, že vás ostatní aplikace mohou identifikovat a odeslat údaje z profilu dalším aplikacím."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"zapisovat do údajů o profilu"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"úprava vaší vlastní vizitky"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Umožňuje aplikaci změnit nebo přidat údaje v osobním profilu uložené v zařízení, například jméno nebo kontaktní údaje. Znamená to, že vás ostatní aplikace mohou identifikovat a odeslat údaje z profilu dalším aplikacím."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"číst váš sociální stream"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Umožňuje aplikaci přístup k sociálním aktualizacím od vás a vašich přátel a k synchronizaci těchto aktualizací. Škodlivé aplikace toho mohou využít ke čtení soukromé komunikace mezi vámi a vašimi přáteli v sociálních sítích."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"vynucení restartování telefonu"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Umožňuje aplikaci vynutit restartování tabletu."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Umožňuje aplikaci vynutit restartování telefonu."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"připojení a odpojení souborových systémů"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"přístup k systému souborů v úložišti USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"přístup k systému souborů na kartě SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Umožňuje aplikaci připojit či odpojit souborové systémy ve vyměnitelných úložištích."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formátovat externí úložiště"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"smazání úložiště USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"smazání karty SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Umožňuje aplikaci formátovat vyměnitelná úložiště."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"získat informace o interním úložišti"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Umožňuje aplikaci získat informace o interním úložišti."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Umožňuje aplikaci připojit nebo odpojit interní úložiště."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"přejmenovat interní úložiště"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Umožňuje aplikaci přejmenovat interní úložiště."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"ovládání vibrací"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"ovládání vibrací"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Umožňuje aplikaci ovládat vibrace."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"ovládání kontrolky"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Umožňuje aplikaci ovládat baterku."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Umožňuje aplikaci přikázat systému, které widgety mohou konkrétní aplikace používat. Aplikace s tímto oprávněním může ostatním aplikacím udělit přístup k osobním datům. Toto oprávnění není určeno pro běžné aplikace."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"změna stavu telefonu"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Umožňuje aplikaci ovládat telefonní funkce zařízení. Aplikace s tímto oprávněním smí bez upozornění přepínat sítě, zapínat a vypínat bezdrátový modul telefonu a podobně."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"čtení stavu a identity telefonu"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"čtení stavu a identity telefonu"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Umožňuje aplikaci získat přístup k telefonním funkcím zařízení. Aplikace s tímto oprávněním může zjistit telefonní číslo a sériové číslo příslušného telefonu, zda je aktivní hovor, číslo, ke kterému je hovor připojen a podobně."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zabránění přechodu tabletu do režimu spánku"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zabránění přechodu telefonu do režimu spánku"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Umožňuje aplikaci spuštění v režimu nízkoúrovňového testu výrobce a povolí přístup k hardwaru telefonu. K dispozici pouze, je-li telefon spuštěn v režimu testování výrobce."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"nastavení tapety"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Umožňuje aplikaci nastavit tapetu systému."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"nastavení nápovědy pro velikost tapety"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"úprava velikosti tapety"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Umožňuje aplikaci nastavit nápovědu pro velikost tapety systému."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"obnovení továrního nastavení systému"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Umožňuje aplikaci zcela resetovat systém na tovární nastavení, vymazat všechna data, nastavení a nainstalované aplikace."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Umožňuje aplikaci změnit časové pásmo telefonu."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"role služby AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Umožňuje aplikaci volat funkce AccountAuthenticator."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"odhalení známých účtů"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"vyhledání účtů v zařízení"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Umožňuje aplikaci získat seznam účtů v tabletu."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Umožňuje aplikaci získat seznam účtů v telefonu."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"role ověřovatele účtu"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"vytváření účtů a nastavení hesel"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Umožňuje aplikaci používat funkce aplikace AccountManager související s ověřováním účtů – včetně vytváření účtů a získávání a nastavování hesel."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"správa seznamu účtů"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"přidání nebo odebrání účtů"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Umožňuje aplikaci provádět operace, jako je přidávání nebo odebírání účtů nebo mazání jejich hesel."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"používání ověřovacích pověření účtu"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"používání účtů v zařízení"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Umožňuje aplikaci požadovat ověřovací klíče."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"zobrazení stavu sítě"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"zobrazení síťových připojení"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Umožňuje aplikaci zobrazit stav všech sítí."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"plný přístup k internetu"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Umožňuje aplikaci vytvořit síťové sokety."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Umožňuje aplikaci změnit stav sdíleného datového připojení k síti."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"změnit nastavení použití dat na pozadí"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Umožňuje aplikaci změnit nastavení použití dat na pozadí."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"zobrazení stavu WiFi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"zobrazení připojení Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Umožňuje aplikaci zobrazit informace o stavu připojení Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"změna stavu WiFi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"připojení k síti Wi-Fi a odpojení od sítě Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Umožňuje aplikaci připojit se k přístupovým bodům Wi-Fi či se od nich odpojit a provádět změny nakonfigurovaných sítí Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"povolení příjmu Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Umožňuje aplikaci přijímat pakety, které nebyly adresovány přímo vašemu zařízení. Pomocí této možnosti můžete objevit služby nabízené ve vaší blízkosti. Spotřeba energie je vyšší než u režimu bez vícesměrového vysílání (multicast)."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"správa rozhraní Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"přístup do nastavení Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Umožňuje aplikaci konfigurovat místní tablet s rozhraním Bluetooth a vyhledávat a párovat vzdálená zařízení."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Umožňuje aplikaci konfigurovat místní telefon s rozhraním Bluetooth a vyhledávat a párovat vzdálená zařízení."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Zobrazit stav připojení WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Zobrazit připojení WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Umožňuje aplikaci zobrazit informace o stavu připojení WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Změnit stav připojení WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Umožňuje aplikaci připojovat se k síti WiMAX a odpojovat se od ní."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"vytvoření připojení Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"párování se zařízeními Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Umožňuje aplikaci zobrazit konfiguraci místního tabletu s rozhraním Bluetooth, vytvářet připojení ke spárovaným zařízením a přijímat tato připojení."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Umožňuje aplikaci zobrazit konfiguraci místního telefonu s rozhraním Bluetooth, vytvářet připojení ke spárovaným zařízením a přijímat tato připojení."</string> <string name="permlab_nfc" msgid="4423351274757876953">"ovládat technologii NFC"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Umožňuje aplikaci komunikovat se štítky, kartami a čtečkami s podporou technologie NFC."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"vypnutí zámku kláves"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"vypnutí zámku obrazovky"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Umožňuje aplikaci vypnout zámek kláves a související zabezpečení heslem. Příkladem oprávněného použití této funkce je vypnutí zámku klávesnice při příchozím hovoru a jeho opětovné zapnutí po skončení hovoru."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"čtení nastavení synchronizace"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Umožňuje aplikaci načíst nastavení synchronizace, např. zda má být povolena synchronizace aplikace Lidé."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"zápis nastavení synchronizace"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"vypnutí nebo zapnutí synchronizace"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Umožňuje aplikaci změnit nastavení synchronizace, např. zda má být povolena synchronizace aplikace Lidé."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"čtení statistických údajů o synchronizaci"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Umožňuje aplikaci číst statistické informace o synchronizaci, např. historii proběhlých synchronizací."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Umožňuje aplikaci získat podrobnosti o aktuálně synchronizovaných zdrojích."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zápis odebíraných zdrojů"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Umožňuje aplikaci upravit zdroje, které aktuálně synchronizujete. Škodlivé aplikace mohou synchronizované zdroje změnit."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"čtení slovníku definovaného uživatelem"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"čtení výrazů přidaných do slovníku"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Umožní aplikaci číst soukromá slova, jména a fráze, která uživatel mohl uložit do svého slovníku."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"zápis do slovníku definovaného uživatelem"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Umožňuje aplikaci zapisovat nová slova do uživatelského slovníku."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"čtení obsahu USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"čtení obsahu karty SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Umožňuje čtení obsahu USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Umožňuje aplikaci čtení obsahu karty SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"úprava/mazání obsahu úložiště USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"změna/smazání obsahu karty SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"čtení obsahu v úložišti USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"čtení obsahu na kartě SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Umožňuje aplikaci číst obsah úložiště USB, který může zahrnovat fotografie a média."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Umožňuje aplikaci číst obsah karty SD, který může zahrnovat fotografie a média."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"úprava nebo smazání obsahu v úložišti USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"úprava nebo smazání obsahu na kartě SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Umožňuje aplikaci zapisovat do úložiště USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Umožňuje aplikaci zapisovat na kartu SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"Upravit/smazat interní úlož."</string> @@ -696,15 +762,17 @@ <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Zkusit znovu"</string> <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Překročili jste maximální povolený počet pokusů o odemknutí obličejem."</string> <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Nabíjení, <xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string> - <string name="lockscreen_charged" msgid="4938930459620989972">"Nabito."</string> + <string name="lockscreen_charged" msgid="4938930459620989972">"nabito"</string> <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string> <string name="lockscreen_low_battery" msgid="1482873981919249740">"Připojte dobíjecí zařízení."</string> - <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Není vložena SIM karta."</string> - <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"V tabletu není karta SIM."</string> - <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefonu není žádná karta SIM."</string> - <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vložte kartu SIM."</string> - <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Karta SIM chybí nebo je nečitelná. Vložte kartu SIM."</string> - <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaše karta SIM byla natrvalo zablokována."\n" Požádejte svého poskytovatele bezdrátových služeb o další kartu SIM."</string> + <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Není vložena SIM karta"</string> + <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"V tabletu není SIM karta."</string> + <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefonu není žádná SIM karta."</string> + <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vložte SIM kartu."</string> + <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM karta chybí nebo je nečitelná. Vložte SIM kartu."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> + <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaše SIM karta byla natrvalo zablokována."\n" Požádejte svého poskytovatele bezdrátových služeb o další SIM kartu."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Tlačítko Předchozí stopa"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Tlačítko Další stopa"</string> <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"Tlačítko Pozastavit"</string> @@ -712,10 +780,10 @@ <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"Tlačítko Zastavit"</string> <string name="emergency_calls_only" msgid="6733978304386365407">"Pouze tísňová volání"</string> <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Síť je blokována"</string> - <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"Karta SIM je zablokována pomocí kódu PUK."</string> + <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM karta je zablokována pomocí kódu PUK."</string> <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"Další informace naleznete v uživatelské příručce; nebo kontaktujte zákaznickou podporu."</string> - <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"Karta SIM je zablokována."</string> - <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"Odblokování karty SIM..."</string> + <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM karta je zablokována."</string> + <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"Odblokování SIM karty..."</string> <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste použili nesprávné bezpečnostní gesto. "\n\n"Zkuste to znovu za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně zadali heslo. "\n\n"Zkuste to znovu za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně zadali kód PIN. "\n\n"Zkuste to znovu za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"znak"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"slovo"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"odkaz"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"řádek"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Test továrního nastavení se nezdařil"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Farnost"</string> <string name="autofill_area" msgid="3547409050889952423">"Oblast"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirát"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"čtení historie a záložek Prohlížeče"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"čtení webových záložek a historie"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Umožňuje aplikaci číst všechny navštívené adresy URL a záložky prohlížeče."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zápis do historie a záložek Prohlížeče"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"psaní webových záložek a historie"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Umožňuje aplikaci upravit historii prohlížeče nebo záložky uložené v tabletu. Škodlivé aplikace mohou toto oprávnění použít k vymazání nebo úpravě dat prohlížeče."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Umožňuje aplikaci upravit historii prohlížeče nebo záložky uložené v telefonu. Škodlivé aplikace mohou toto oprávnění použít k vymazání nebo úpravě dat prohlížeče."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"nastavit budík v budíku"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"nastavení budíku"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Umožňuje aplikaci nastavit budík v nainstalované aplikaci budík. Některé aplikace budík tuto funkci nemusí obsahovat."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"přidat hlasovou zprávu"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Umožňuje aplikaci přidávat zprávy do hlasové schránky."</string> @@ -1038,10 +1102,10 @@ <string name="sms_short_code_confirm_allow" msgid="8957573662645722940">"Odeslat zprávu"</string> <string name="sms_short_code_confirm_deny" msgid="6374609298084435887">"Neodesílat"</string> <string name="sms_short_code_confirm_report" msgid="2588793956061677070">"Nahlásit škodlivou aplikaci"</string> - <string name="sim_removed_title" msgid="6227712319223226185">"Karta SIM odebrána"</string> - <string name="sim_removed_message" msgid="2333164559970958645">"Mobilní síť bude dostupná až poté, co vložíte platnou kartu SIM a restartujete zařízení."</string> + <string name="sim_removed_title" msgid="6227712319223226185">"SIM karta odebrána"</string> + <string name="sim_removed_message" msgid="2333164559970958645">"Mobilní síť bude dostupná až poté, co vložíte platnou SIM kartu a restartujete zařízení."</string> <string name="sim_done_button" msgid="827949989369963775">"Hotovo"</string> - <string name="sim_added_title" msgid="3719670512889674693">"Karta SIM přidána."</string> + <string name="sim_added_title" msgid="3719670512889674693">"SIM karta přidána."</string> <string name="sim_added_message" msgid="6599945301141050216">"Mobilní síť bude přístupná po restartu zařízení."</string> <string name="sim_restart_button" msgid="4722407842815232347">"Restartovat"</string> <string name="time_picker_dialog_title" msgid="8349362623068819295">"Nastavení času"</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Nastavit"</string> <string name="date_time_done" msgid="2507683751759308828">"Hotovo"</string> <string name="default_permission_group" msgid="2690160991405646128">"Výchozí"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVÉ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVÉ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nejsou vyžadována žádná oprávnění"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Skrýt"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Zobrazit vše"</b></string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index d8eecb91efa9..9570ef9cbd3c 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -168,12 +168,43 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Dine beskeder"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Læs og skriv sms-beskeder, e-mails og andre beskeder."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Dine personlige oplysninger"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Få direkte adgang til dine kontakter og din kalender, der er gemt på tabletcomputeren."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Få direkte adgang til dine kontakter og din kalender, der er gemt på telefonen."</string> + <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direkte adgang til oplysninger om dig, som er gemt på dit kontaktkort."</string> + <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Dine sociale oplysninger"</string> + <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direkte adgang til oplysninger om dine kontaktpersoner og sociale forbindelser."</string> <string name="permgrouplab_location" msgid="635149742436692049">"Din placering"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Overvåg din fysiske placering."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Netværkskommunikation"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Få adgang til forskellige netværksfunktioner."</string> + <string name="permgrouplab_shortRangeNetwork" msgid="4504840216096355984">"Bluetooth og NFC"</string> + <string name="permgroupdesc_shortRangeNetwork" msgid="8821013030346680806">"Adgang til Bluetooth- eller NFC-netværk og -enheder."</string> + <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Lydindstillinger"</string> + <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Skifte lydindstillinger."</string> + <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Påvirker batteriet"</string> + <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Bruge funktioner, der hurtigt kan dræne batteriet."</string> + <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string> + <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direkte adgang til kalender og begivenheder."</string> + <string name="permgrouplab_dictionary" msgid="8114410334955871144">"Brugerordbog"</string> + <string name="permgroupdesc_dictionary" msgid="40926483968949978">"Direkte adgang til brugerordbogen."</string> + <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bogmærker og historik"</string> + <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direkte adgang til bogmærker og browserhistorik."</string> + <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string> + <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Indstille vækkeuret."</string> + <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Telefonsvarer"</string> + <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direkte adgang til telefonsvarer."</string> + <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> + <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direkte adgang til mikrofonen, så der kan optages lyd."</string> + <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string> + <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direkte adgang til kamera, så der kan tages billeder eller optages video."</string> + <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Oplysninger om dine applikationer"</string> + <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Evne til at påvirke andre applikationers adfærd på din enhed."</string> + <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Baggrund"</string> + <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Ændre enhedens baggrundsindstillinger."</string> + <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ur"</string> + <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Ændre klokkeslæt eller tidszone på enheden."</string> + <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusbjælke"</string> + <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Ændre indstillinger for enhedens statusbjælke."</string> + <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synkronisering"</string> + <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Adgang til synkroniseringsindstillingerne."</string> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Dine konti"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Få adgang til de tilgængelige konti."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardwarekontroller"</string> @@ -184,6 +215,8 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Adgang og kontrol til systemet på lavere niveau."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Udviklingsværktøjer"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktioner, der kun er nødvendige for udviklere af apps."</string> + <string name="permgrouplab_display" msgid="4279909676036402636">"Andre applikationers brugergrænseflade"</string> + <string name="permgroupdesc_display" msgid="6051002031933013714">"Påvirke brugergrænsefladen for andre applikationer."</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Få adgang til USB-lager."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Få adgang til SD-kortet."</string> @@ -193,11 +226,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Tillader, at appen er statusbjælken."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"udvid/skjul statuslinje"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Tillader, at appen kan udvide og skjule statusbjælken."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"opfang udgående opkald"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"omdirigere udgående opkald"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Tillader, at appen kan behandle udgående opkald og ændre det nummer, der ringes op til. Ondsindede apps kan overvåge, omdirigere eller forhindre udgående opkald."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"modtag sms"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"modtage tekstbeskeder (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Tillader, at appen kan modtage og behandle sms-beskeder. Ondsindede apps kan overvåge dine beskeder eller slette dem uden at vise dem til dig."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"modtag mms"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"modtage tekstbeskeder (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Tillader, at appen kan modtage og behandle mms-beskeder. Ondsindede apps kan overvåge dine beskeder eller slette dem uden at vise dem til dig."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"modtage nødudsendelser"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Tillader, at appen kan modtage og behandle nødtransmissioner. Denne tilladelse er kun tilgængelig for systemapps."</string> @@ -207,31 +240,33 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Tillader, at appen kan sende sms-beskeder. Ondsindede apps kan medføre store omkostninger ved at sende beskeder uden din bekræftelse."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"sende sms-meddelelser uden bekræftelse"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Tillader, at appen kan sende sms-beskeder. Ondsindede apps kan koste dig penge, hvis de sender beskeder uden din bekræftelse."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"læs sms eller mms"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"læse dine tekstbeskeder (SMS eller MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Tillader, at appen kan læse sms-beskeder, der er gemt på din tablet eller dit SIM-kort. Ondsindede apps kan læse dine fortrolige beskeder."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Tillader, at appen kan læse sms-beskeder, der er gemt på din telefon eller dit SIM-kort. Ondsindede apps kan læse dine fortrolige beskeder."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"rediger sms eller mms"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"redigere dine tekstbeskeder (SMS eller MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Tillader, at appen kan skrive til sms-beskeder, der er gemt på din tablet eller på SIM-kortet. Ondsindede apps kan slette dine beskeder."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Tillader, at appen kan skrive til sms-beskeder, der er gemt på din telefon eller dit SIM-kort. Ondsindede apps kan slette dine beskeder."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"modtag WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"modtage tekstbeskeder (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Tillader, at appen kan modtage og behandle WAP-beskeder. Ondsindede apps kan overvåge dine beskeder eller slette dem uden at vise dem til dig."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"hente kørende apps"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Tillader, at appen kan hente oplysninger om aktuelle og seneste opgaver. Ondsindede apps kan registrere private oplysninger om andre apps."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hente oplysninger om apps, der kører"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillader, at appen kan hente oplysninger om aktuelle og seneste opgaver. Ondsindede apps kan muligvis finde personlige oplysninger om andre apps."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"omorganisere kørende apps"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Tillader, at appen kan flytte opgaver til forgrunden og baggrunden. Ondsindede apps kan tvinge sig selv i forgrunden uden din kontrol."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"stoppe kørsel af apps"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Tillader, at en app kan fjerne opgaver og lukke deres apps. Ondsindede apps kan forstyrre adfærden for andre apps."</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"starte en aktivitet"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Tillader, at appen starter en hvilken som helst aktivitet, uanset tilladelsesbeskyttelse eller eksportstatus."</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Tillader, at appen starter en hvilken som helst aktivitet, uanset tilladelsesbeskyttelse eller eksporteret tilstand."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"indstil skærmens kompatibilitet"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Tillader, at appen kontrollerer kompatibilitetstilstanden for skærme i andre applikationer. Ondsindede applikationer kan forstyrre andre applikationers adfærd."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"aktivere fejlretning af appen"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Tillader, at appen kan slå fejlretning til for en anden app. Ondsindede apps kan bruge dette til at afslutte andre apps."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"skift indstillinger for brugergrænsefladen"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"skifte systemets skærmindstillinger"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Tillader, at en app kan ændre den aktuelle konfiguration, f.eks. landestandarden eller den overordnede skriftstørrelse."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivere biltilstand"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Tillader, at appen kan aktivere biltilstand."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"standse baggrundsprocesser"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"lukke andre apps"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Tillader, at appen kan afslutte baggrundsprocesser for andre apps, selvom der ikke mangler hukommelse."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"tvangsstandse andre apps"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Tillader, at appen kan tvinge andre apps til at stoppe."</string> @@ -255,7 +290,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Tillader, at appen kan udsende en meddelelse om, at der er modtaget en WAP PUSH-besked. Ondsindede apps kan bruge dette til at forfalske modtagelse af mms-beskeder eller i det skjulte erstatte indholdet på en webside med ondsindede varianter."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"begræns antallet af kørende processer"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Tillader, at appen kan kontrollere det maksimale antal kørende processer. Dette er aldrig nødvendigt til normale apps."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"få alle baggrundsapps til at lukke"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"tvinge baggrundsapps til at lukke"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Tillader, at appen kan kontrollere, om aktiviteter altid afsluttes, så snart de går i baggrunden. Det er aldrig nødvendigt til normale apps."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"rediger batteristatistikker"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Tillader, at appen kan ændre indsamlet batteristatistik. Anvendes ikke af normale apps."</string> @@ -265,7 +300,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Tillader, at appen kan åbne brugergrænsefladen til bekræftelse af komplet sikkerhedskopiering. Må ikke anvendes af nogen app."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"vis uautoriserede vinduer"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Tillader, at appen kan oprette vinduer, der er beregnet til brugergrænsefladen i det interne system. Anvendes ikke af normale apps."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"vis underretninger på systemniveau"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tegne over andre apps"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Tillader, at appen kan vise vinduer med systemmeddelelser. Ondsindede apps kan overtage hele skærmen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"rediger global animationshastighed"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Tillader, at appen til enhver tid kan ændre den globale animationshastighed (hurtigere eller langsommere animationer)."</string> @@ -327,37 +362,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Tillader, at en applikation udsteder eller tilbagekalder særlige tilladelser til den selv eller andre applikationer. Ondsindede applikationer kan bruge dette til at få adgang til funktioner uden din tilladelse."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"angive foretrukne apps"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Tillader, at appen kan ændre dine foretrukne apps. Ondsindede apps kan ubemærket ændre kørende apps derved udgive sig for at være dine eksisterende apps og på den måde indsamle private data fra dig."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"rediger globale systemindstillinger"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"ændre systemindstillinger"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Tillader, at appen kan ændre systemets indstillingsdata. Ondsindede apps kan ødelægge din systemkonfiguration."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"rediger sikre systemindstillinger"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Tillader, at appen kan ændrer systemets sikre indstillingsdata. Anvendes ikke af normale apps."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"rediger kortet over Google-tjenester"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Tillader, at appen kan ændre kortet over Google-tjenester. Anvendes ikke af almindelige apps."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"start automatisk ved opstart"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"køre ved opstart"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Tillader, at appen kan starte af sig selv, så snart systemet er færdig med at starte. Dette kan gøre tablettens opstartstid længere og give appen tilladelse til at gøre tabletten langsommere ved altid at lade appen køre."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Tillader, at appen kan åbne sig selv, når systemet er færdig med at starte op. Dette kan gøre opstarten af telefonen langsommere og generelt gøre systemet langsommere, når appen altid kører."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"send klæbende udsendelse"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Tillader, at appen kan sende klæbende udsendelser, der efterlades, selvom udsendelsen er slut. Ondsindede apps kan gøre din tablet langsom eller ustabil ved at tvinge den til at bruge for meget hukommelse."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Tillader, at appen kan sende klæbende udsendelser, der efterlades, når udsendelsen er slut. Ondsindede apps kan gøre din telefon langsom eller ustabil ved at tvinge den til at bruge for meget hukommelse."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"læs kontaktdata"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"skriv kontaktdata"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"læse dine kontaktpersoner"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Tillader, at appen læser alle de data om dine kontaktpersoner, der er gemt på din tablet, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Tillader, at appen læser alle de data om dine kontaktpersoner, der er gemt på din telefon, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"ændre dine kontaktpersoner"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Tillader, at appen ændrer data om dine kontaktpersoner, der er gemt på tabletten, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Tillader, at appen ændrer data om dine kontaktpersoner, der er gemt på telefonen, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"læs opkaldsliste"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Tillader, at appen læser din tablets opkaldsliste, herunder data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at sende dine data til andre personer."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Tillader, at appen læser telefonens opkaldsliste, herunder data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at sende dine data til andre personer."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"skriv opkaldsliste"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Tillader, at appen ændrer din tablets opkaldsliste, herunder data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Tillader, at appen ændrer telefonens opkaldsliste, herunder data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"læse dine profildata"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"læse dit eget kontaktkort"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Tillader, at appen kan læse personlige profiloplysninger, der er gemt på din enhed, f.eks. dit navn og dine kontaktoplysninger. Det betyder, at appen kan identificere dig og sende dine profiloplysninger til andre."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"skrive til dine profildata"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"ændre dit eget kontaktkort"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Tillader, at appen kan ændre eller tilføje oplysninger på din personlige profil, der er gemt på din enhed, f.eks. dit navn eller kontaktoplysninger. Dette betyder, at andre apps kan identificere dig og sende profiloplysninger til andre."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"læs din sociale strøm"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Tillader, at appen kan få adgang til og synkronisere sociale opdateringer fra dig og dine venner. Ondsindede apps kan bruge dette til at læse privat kommunikation mellem dig og dine venner på sociale netværk."</string> @@ -398,9 +429,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"tving telefon til at genstarte"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Tillader, at appen kan tvinge din tablet til at genstarte."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Tillader, at appen kan tvinge telefonen til at genstarte."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"monter eller demonter filsystemer"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"få adg. t USB-lagers filsystem"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"få adgang til SD-kortets filsystem"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Tillader, at appen kan montere eller demontere filsystemer til flytbar lagring."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formater ekstern lagring"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"slette USB-lager"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"slette SD-kort"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Tillader, at appen kan formatere det flytbare lager."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"hente oplysninger om internt lager"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Tillader, at appen kan få oplysninger om det interne lager."</string> @@ -412,7 +445,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Tillader, at appen kan montere/demontere det interne lager."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"omdøbe internt lager"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Tillader, at appen kan omdøbe det interne lager."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kontrollere vibrator"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kontrollere vibration"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Tillader, at appen kan kontrollere vibratoren."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"kontroller lommelygte"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Tillader, at appen kan kontrollere lommelygten."</string> @@ -437,7 +470,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Tillader, at appen kan fortælle systemet, hvilke widgets der kan bruges af hvilke apps. En app med denne tilladelse kan give andre apps adgang til personlige data. Anvendes ikke af normale apps."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"rediger telefontilstand"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Tillader, at appen kan styre enhedens telefonfunktioner. En app med denne tilladelse kan skifte netværk, slå telefonsenderen til og fra og lignende uden at underrette dig."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"læs telefontilstand og identitet"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"læse telefonens status og identitet"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Tillader, at appen kan få adgang til enhedens telefonfunktioner. En app med denne tilladelse kan fastlægge telefonens telefon- og serienummer, om et opkald er aktivt, det nummer, som opkaldet er tilknyttet osv."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"afhold tabletcomputeren fra at gå i dvale"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"afholde telefonen fra at gå i dvale"</string> @@ -452,7 +485,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Kør som en producenttest på lavt niveau. Giver fuld adgang til telefonens hardware. Kun tilgængeligt når en telefon kører i producenttesttilstand."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"angiv tapet"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Tillader, at appen kan konfigurere systembaggrunden."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"opsæt tip til tapetstørrelse"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ændre størrelsen på din baggrund"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Tillader, at appen giver tips til systembaggrundens størrelse."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"nulstil system til fabriksstandarder"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Tillader, at appen kan gendanne fabriksindstillingerne fuldstændigt, hvorved alle data, konfigurationer og installerede apps slettes."</string> @@ -464,16 +497,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Tillader, at appen kan ændre tidszonen på din telefon."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"fungerer som kontoadministrationstjeneste"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Tillader, at en app kan foretage opkald til kontogodkendere."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"registrer kendte konti"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"finde konti på enheden"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Tillader, at appen kan hente listen over konti, der er kendt på din tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Tillader, at appen kan hente listen over konti, der er kendt af telefonen."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"fungerer som en kontogodkender"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"oprette konti og angive adgangskoder"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Tillader, at en app kan bruge kontoadministratorens kontogodkendelsesegenskaber, bl.a. oprettelse af konti samt hentning og angivelse af deres adgangskoder."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"administrere kontolisten"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"tilføje eller fjerne konti"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Tillader, at appen kan foretage handlinger såsom at tilføje og fjerne konti og slette adgangskoden."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"bruge en kontos godkendelsesoplysninger"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"bruge konti på enheden"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Tillader, at appen kan anmode om godkendelsestokens."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"vise netværkstilstand"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"få vist netværksforbindelser"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Tillader, at appen kan vise tilstanden for alle netværk."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"fuld internetadgang"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Tillader, at appen kan skabe netværkssockets."</string> @@ -485,29 +518,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Tillader, at appen kan ændre tilstand for en netværksforbindelse via netdeling."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"skift brugerindstilling for baggrundsdata"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Tillader, at appen kan ændre indstillingen for brug af baggrundsdata."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"vis Wi-Fi-tilstand"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"få vist Wi-Fi-forbindelser"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Tillader, at appen kan få vist oplysninger om Wi-Fi-tilstanden."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"skift Wi-Fi-tilstand"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"oprette og afbryde Wi-Fi-forbindelse"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Tillader, at appen kan oprette og afbryde forbindelsen til Wi-Fi-adgangspunkter samt foretage ændringer i konfigurerede Wi-Fi-netværk."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"tillad Wi-Fi-multicastmodtagelse"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Tillader, at appen kan modtage pakker, der ikke er direkte adresseret til din enhed. Dette kan være nyttigt ved tjenester, der tilbydes i nærheden. Der bruges mere strøm end ikke-multicasttilstanden."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Administration af Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"få adgang til Bluetooth-indstillinger"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Tillader, at appen kan konfigurere den lokale Bluetooth-tablet samt finde og parre med fjerne enheder."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Tillader, at appen kan konfigurere den lokale Bluetooth-telefon samt finde og parre med eksterne enheder."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Få vist WiMAX-tilstand"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"få vist WiMAX-forbindelser"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Tillader, at appen får vist oplysninger om tilstanden for WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Skift WiMAX-tilstand"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Tillader, at appen opretter og afbryder forbindelse til WiMAX-netværket."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"opret Bluetooth-forbindelser"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"parre med Bluetooth-enheder"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Tillader, at appen kan se konfigurationen af den lokale Bluetooth-tablet og oprette og acceptere forbindelser med parrede enheder."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Tillader, at appen kan få vist konfigurationen af den lokale Bluetooth-telefon samt oprette og acceptere forbindelser med parrede enheder."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontrollere Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Tillader, at appen kan kommunikere med NFC-tags (Near Field Communication), -kort og -læsere."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"deaktiver tastaturlås"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"deaktivere din skærmlås"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Tillader, at appen kan deaktivere tastaturlåsen og al associeret adgangskodesikkerhed. Et legitimt eksempel på dette er, at telefonen deaktiverer tastaturlåsen ved indgående telefonopkald, og aktiverer tastaturlåsen igen, når opkaldet er afsluttet."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"læse indstillinger for synkronisering"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Tillader, at appen kan læse synkroniseringsindstillingerne, f.eks. om synkronisering er aktiveret for appen Personer."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"skrive indstillinger for synkronisering"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"slå synkronisering til og fra"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Tillader, at appen kan ændre indstillingerne for synkronisering, f.eks. om appen Personer skal synkroniseres."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"læse synkroniseringsstatistikker"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Tillader, at appen kan læse synkroniseringsstatistikker, f.eks. synkroniseringshistorikken."</string> @@ -515,16 +548,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Tillader, at appen kan hente oplysninger om de feeds, der synkroniseres."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"skriv abonnerede feeds"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Tillader, at appen kan ændre dine synkroniserede feeds. Ondsindede apps kan ændre dine synkroniserede feeds."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"læse brugerdefineret ordbog"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"læse termer, som du har føjet til ordbogen"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Tillader, at appen kan læse alle private ord, navne og sætninger, som brugeren kan have gemt i brugerordbogen."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"skrive til brugerordbogen"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tillader, at appen kan skrive nye ord i brugerordbogen."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"læse USB-lagerets indhold"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"læse indholdet af SD-kortet"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Tillader, at appen læser indhold på USB-lageret."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Tillader, at appen læser indholdet af SD-kortet."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"rette/slette i USB-lager"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ret/slet indholdet på SD-kortet"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"læse USB-lagerets indhold"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"læse indholdet af dit SD-kort"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Tillader, at appen læser USB-lagerets indhold, herunder billeder og mediefiler."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Tillader, at appen læser SD-kortets indhold, som kan omfatte billeder og mediefiler."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ændre eller slette indhold på USB-lager"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"ændre eller slette indholdet på dit SD-kort"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Lader appen skrive til USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Tillader, at appen kan skrive til SD-kortet."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"Rediger/slet internt medielagringsindhold"</string> @@ -702,6 +735,7 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Der er ikke noget SIM-kort i telefonen."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Indsæt et SIM-kort."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kortet mangler eller kan ikke læses. Indsæt et SIM-kort."</string> + <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Ubrugeligt SIM-kort."</string> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Dit SIM-kort er blevet permanent deaktiveret."\n"Kontakt din tjenesteudbyder for at få et nyt SIM-kort."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knap til forrige nummer"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knap til næste nummer"</string> @@ -777,12 +811,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Sogn"</string> <string name="autofill_area" msgid="3547409050889952423">"Område"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"læse browserens oversigt og bogmærker"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"læse dine webbogmærker og -historik"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Tillader, at appen kan læse alle de webadresser, som Browser har besøgt, og alle bogmærker i Browser."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skrive i browserens oversigt og bogmærker"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skrive webbogmærker og -historik"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Tillader, at appen kan ændre historik eller bogmærker i Browser, som er gemt på din tablet. Ondsindede apps kan bruge dette til at slette eller ændre dine browserdata."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Tillader, at appen kan ændre browserhistorikken eller bogmærker, der er gemt på din telefon. Ondsindede apps kan bruge dette til at slette eller ændre dine browserdata."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"angiv alarm i alarmprogram"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"indstille en alarm"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Tillader, at appen kan indstille en alarm i en installeret alarmapp. Nogle alarmapps har muligvis ikke denne funktion."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"tilføj telefonsvarer"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Tillader, at appen kan tilføje beskeder på din telefonsvarer."</string> @@ -1043,7 +1077,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Angiv"</string> <string name="date_time_done" msgid="2507683751759308828">"Udført"</string> <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NYHED! "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NYHED! "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Der kræves ingen tilladelser"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Skjul"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Vis alle"</b></string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 43a3ba249d61..d843a64718cc 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Ihr Tablet wird heruntergefahren."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefon wird heruntergefahren."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Möchten Sie das Gerät herunterfahren?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Im abgesicherten Modus starten"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Möchten Sie im abgesicherten Modus neu starten? Dadurch werden alle Apps von Drittanbietern deaktiviert, die Sie installiert haben. Sie werden jedoch nach einem weiteren Neustart wiederhergestellt."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Kürzlich geöffnet"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Keine kürzlich geöffneten Apps"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Tablet-Optionen"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Ihre Nachrichten"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS, E-Mails und andere Nachrichten lesen und schreiben"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ihre persönlichen Informationen"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Tablets"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Telefons"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Ihren Standort"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Ihren physischen Standort überwachen"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Netzkommunikation"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Zugriff auf verschiedene Netzwerkfunktionen"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ihre Konten"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Zugriff auf verfügbare Konten"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware-Steuerelemente"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Zugriff und Steuerung des Systems auf niedrigerer Ebene."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Entwickler-Tools"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktionen nur für App-Entwickler vorgesehen"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Speicher"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Zugriff auf USB-Speicher"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Zugriff auf SD-Karte"</string> @@ -195,45 +261,47 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Ermöglicht der App, zur Statusleiste zu werden"</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"Statusleiste ein-/ausblenden"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ermöglicht der App, die Statusleiste ein- oder auszublenden"</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"Ausgehende Anrufe abfangen"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"Ausgehende Anrufe umleiten"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Ermöglicht der App, ausgehende Anrufe zu verarbeiten und die zu wählende Nummer zu ändern. Schädliche Apps können so ausgehende Anrufe überwachen, umleiten oder unterbinden."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS empfangen"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"SMS empfangen"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Ermöglicht der App, SMS zu empfangen und zu verarbeiten. Schädliche Apps können Ihre Nachrichten überwachen oder löschen, bevor sie angezeigt werden."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS empfangen"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"MMS empfangen"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Ermöglicht der App, MMS-Mitteilungen zu empfangen und zu verarbeiten. Schädliche Apps können so Ihre Nachrichten überwachen oder löschen, bevor sie angezeigt werden."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Notfall-Broadcasts empfangen"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Ermöglicht der App, Notfall-Broadcasts zu empfangen und zu verarbeiten. Diese Berechtigung steht nur System-Apps zur Verfügung."</string> <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"Cell Broadcast-Nachrichten lesen"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Ermöglicht es der App, von Ihrem Gerät empfangene Cell Broadcast-Nachrichten zu lesen. Cell Broadcast-Benachrichtigungen werden an einigen Standorten gesendet, um Sie über Notfallsituationen zu informieren. Schädliche Apps können die Leistung oder den Betrieb Ihres Geräts beeinträchtigen, wenn eine Cell Broadcast-Notfallbenachrichtigung eingeht."</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Ermöglicht der App, von Ihrem Gerät empfangene Cell Broadcast-Nachrichten zu lesen. Cell Broadcast-Benachrichtigungen werden an einigen Standorten gesendet, um Sie über Notfallsituationen zu informieren. Schädliche Apps können die Leistung oder den Betrieb Ihres Geräts beeinträchtigen, wenn eine Cell Broadcast-Notfallbenachrichtigung eingeht."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"Kurznachrichten senden"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"Ermöglicht der App das Senden von SMS. Bei schädlichen Apps können Kosten entstehen, wenn diese Nachrichten ohne Ihre Zustimmung versenden."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS-Nachrichten ohne Bestätigung senden"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Ermöglicht der App das Senden von SMS. Bei schädlichen Apps können Kosten entstehen, wenn diese Nachrichten ohne Ihre Zustimmung versenden."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS oder MMS lesen"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"SMS oder MMS lesen"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Ermöglicht der App, auf Ihrem Tablet oder Ihrer SIM-Karte gespeicherte SMS zu lesen. Schädliche Apps können so Ihre vertraulichen Nachrichten lesen."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Ermöglicht der App, auf Ihrem Telefon oder Ihrer SIM-Karte gespeicherte SMS zu lesen. Schädliche Apps können so Ihre vertraulichen Nachrichten lesen."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS oder MMS bearbeiten"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"SMS oder MMS bearbeiten"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Ermöglicht der App, auf Ihrem Tablet oder Ihrer SIM-Karte gespeicherte SMS zu bearbeiten. Schädliche Apps können so Ihre Nachrichten löschen."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Ermöglicht der App, auf Ihrem Telefon oder Ihrer SIM-Karte gespeicherte SMS zu bearbeiten. Schädliche Apps können so Ihre Nachrichten löschen."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP-Nachrichten empfangen"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"Textnachrichten (WAP) empfangen"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Ermöglicht der App, WAP-Mitteilungen zu empfangen und zu verarbeiten. Schädliche Apps können so Ihre Nachrichten überwachen oder löschen, bevor sie angezeigt werden."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"aktive Apps abrufen"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Ermöglicht der App, Informationen zu aktuellen und kürzlich ausgeführten Aufgaben abzurufen. Schädliche Apps können so geheime Informationen zu anderen Apps erhalten."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"Details zu ausgeführten Apps abrufen"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Ermöglicht der App, detaillierte Informationen zu aktuellen und kürzlich ausgeführten Aufgaben abzurufen. Schädliche Apps können so geheime Informationen zu anderen Apps erhalten."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"Aktive Apps neu ordnen"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Ermöglicht der App, Aufgaben in den Vorder- und Hintergrund zu verschieben. Schädliche Apps können so ohne Ihr Zutun eine Anzeige im Vordergrund erzwingen."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"Aktive Apps beenden"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Ermöglicht der App, Aufgaben zu entfernen und die entsprechenden Apps zu beenden. Schädliche Apps können das Verhalten anderer Apps stören."</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"Beliebige Aktivität starten"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Ermöglicht es der App, ungeachtet der Berechtigungen oder des Exportstatus beliebige Aktivitäten zu starten"</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Ermöglicht der App, ungeachtet der Berechtigungen oder des Exportstatus beliebige Aktivitäten zu starten"</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"Bildschirmkompatibilität festlegen"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Ermöglicht der App, den Bildschirmkompatibilitätsmodus anderer Apps zu steuern. Schädliche Apps können das Verhalten anderer Apps stören."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"Fehlerbeseitigung für App aktivieren"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Ermöglicht der App, die Fehlerbeseitigung für eine andere App zu aktivieren. Schädliche Apps können so andere Apps beenden."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"UI-Einstellungen ändern"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"System-Anzeigeeinstellungen ändern"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Ermöglicht der App, die aktuelle Konfiguration zu ändern, etwa die Sprache oder die Schriftgröße"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"Automodus aktivieren"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ermöglicht der App, den Automodus zu aktivieren"</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"Hintergrundprozesse beenden"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"Andere Apps schließen"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Ermöglicht der App, Hintergrundprozesse anderer Apps auch bei ausreichendem Speicher zu beenden"</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"Beenden anderer Apps erzwingen"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Ermöglicht der App, das Beenden anderer Apps zu erzwingen"</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Ermöglicht der App, eine Benachrichtigung zu senden, dass eine WAP PUSH-Nachricht empfangen wurde. Schädliche Apps können so den Empfang von MMS vortäuschen oder unbemerkt den Inhalt einer beliebigen Webseite durch schädliche Inhalte ersetzen."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"Anzahl der laufenden Prozesse beschränken"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Ermöglicht der App, die maximale Anzahl an aktiven Prozessen zu steuern. Wird nie für normale Apps benötigt."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"Alle Apps im Hintergrund schließen"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"Apps im Hintergrund schließen"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Überlässt der App die Entscheidung, ob Aktivitäten immer beendet werden, sobald sie in den Hintergrund rücken. Wird nie für normale Apps benötigt."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"Akku-Daten ändern"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Ermöglicht der App, gesammelte Akkudaten zu ändern. Nicht für normale Apps vorgesehen."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Ermöglicht der App, die Benutzeroberfläche zur Bestätigung der vollständigen Sicherung zu starten. Kann nicht von jeder App verwendet werden."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"nicht autorisierte Fenster anzeigen"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ermöglicht der App die Erstellung von Fenstern, die von der Benutzeroberfläche des internen Systems verwendet werden. Nicht für normale Apps vorgesehen."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"Warnungen auf Systemebene anzeigen"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"Über andere Apps ziehen"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Ermöglicht der App, Fenster mit Systemwarnungen anzuzeigen. Schädliche Apps können so den gesamten Bildschirm einnehmen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"Allgemeine Animationsgeschwindigkeit einstellen"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ermöglicht der App, die allgemeine Animationsgeschwindigkeit (langsamere oder schnellere Animationen) jederzeit anzupassen."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Hiermit kann eine App sich selbst oder anderen Apps bestimmte Berechtigungen erteilen oder entziehen. Schädliche Apps können hierdurch Zugriff auf Funktionen erlangen, den Sie nicht gewährt haben."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"Bevorzugte Apps festlegen"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Ermöglicht der App, Änderungen an Ihren bevorzugten Apps vorzunehmen. Schädliche Apps können so aktive Apps ohne Ihr Wissen ändern, damit die vorhandenen Apps private Daten von Ihnen erfassen."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"allgemeine Systemeinstellungen ändern"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"Systemeinstellungen ändern"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Ermöglicht der App, die Einstellungsdaten des Systems zu ändern. Schädliche Apps können so die Systemkonfiguration beschädigen."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"Sicherheitseinstellungen für das System ändern"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Ermöglicht der App, die Sicherheitseinstellungsdaten des Systems zu ändern. Nicht für normale Apps vorgesehen."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Google Services Map ändern"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Ermöglicht der App, Änderungen an der Karte für Google-Dienste vorzunehmen. Nicht für normale Apps vorgesehen."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"Automatisch nach dem Booten starten"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"Beim Start ausführen"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Ermöglicht der App, sich selbst zu starten, sobald das System gebootet wurde. Dadurch kann es länger dauern, bis das Tablet gestartet wird, und durch die ständige Aktivität der App wird die gesamte Leistung des Tablets beeinträchtigt."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Ermöglicht der App, sich selbst zu starten, sobald das System gebootet wurde. Dadurch kann es länger dauern, bis das Telefon gestartet wird, und durch die ständige Aktivität der App wird die gesamte Leistung des Telefons beeinträchtigt."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"dauerhaften Broadcast senden"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Ermöglicht der App, dauerhafte Broadcasts zu senden, die auch nach Ende des Broadcasts bestehen bleiben. Schädliche Apps können das Tablet langsam oder unstabil machen, indem zuviel Speicherplatz belegt wird."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Ermöglicht der App, dauerhafte Broadcasts zu senden, die auch nach Ende des Broadcasts bestehen bleiben. Schädliche Apps können das Telefon langsam oder unstabil machen, indem zuviel Speicherplatz belegt wird."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"Kontaktdaten lesen"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"Kontaktdaten schreiben"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"Kontakte lesen"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Ermöglicht der App, alle Daten Ihrer auf dem Tablet gespeicherten Kontakte zu lesen, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten an andere Personen senden."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Ermöglicht der App, alle Daten Ihrer auf dem Telefon gespeicherten Kontakte zu lesen, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten an andere Personen senden."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"Meine Kontakte ändern"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Ermöglicht der App, die Daten Ihrer auf dem Tablet gespeicherten Kontakte zu ändern, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten ändern oder löschen."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Ermöglicht der App, die Daten Ihrer auf dem Telefon gespeicherten Kontakte zu ändern, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten ändern oder löschen."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"Anrufprotokoll lesen"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Ermöglicht der App, das Anrufprotokoll Ihres Tablets zu lesen, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so Ihre Daten an Dritte senden."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Ermöglicht der App, das Anrufprotokoll Ihres Telefons zu lesen, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so Ihre Daten an Dritte senden."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"Anrufprotokoll bearbeiten"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ermöglicht der App, das Anrufprotokoll Ihres Tablets zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so Ihr Anrufprotokoll löschen oder ändern."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ermöglicht der App, das Anrufprotokoll Ihres Telefons zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so Ihr Anrufprotokoll löschen oder ändern."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"Ihre Profildaten lesen"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"Meine Kontaktkarten lesen"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Ermöglicht der App, auf Ihrem Gerät gespeicherte persönliche Profilinformationen zu lesen, darunter Ihren Namen und Ihre Kontaktdaten. Die App kann Sie somit identifizieren und Ihre Profilinformationen an andere senden."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"In Ihre Profildaten schreiben"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"Meine Kontaktkarten ändern"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Ermöglicht der App, auf Ihrem Gerät gespeicherte persönliche Profilinformationen zu ändern, darunter Ihren Namen und Ihre Kontaktdaten, sowie Informationen hinzuzufügen. Andere Apps können Sie so identifizieren und Ihre Profilinformationen an andere senden."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"In sozialem Stream lesen"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Ermöglicht der App, auf soziale Updates von Ihnen und Ihren Freunden zuzugreifen und diese zu synchronisieren. Schädliche Apps können so private Kommunikationen zwischen Ihnen und Ihren Freunden in sozialen Netzwerken lesen."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"Neustart des Telefons erzwingen"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Ermöglicht der App, einen Neustart des Tablets zu erzwingen"</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Ermöglicht der App, einen Neustart des Telefons zu erzwingen"</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"Dateisysteme bereitstellen oder Bereitstellung aufheben"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"Auf Dateisystem des USB-Speichers zugreifen"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"Auf Dateisystem der SD-Karte zugreifen"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Ermöglicht der App, Dateisysteme für austauschbare Datenträger bereitzustellen oder die Bereitstellung aufzuheben"</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"Externen Speicher formatieren"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB-Speicher löschen"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD-Karteninhalt löschen"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Ermöglicht der App, austauschbare Datenträger zu formatieren"</string> <string name="permlab_asec_access" msgid="3411338632002193846">"Informationen zum internen Speicher abrufen"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Ermöglicht der App, Informationen zum internen Speicher abzurufen"</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Ermöglicht der App, internen Speicher bereitzustellen bzw. zu trennen"</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"Internen Speicher umbenennen"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Ermöglicht der App, den internen Speicher umzubenennen"</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"Vibrationsalarm steuern"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"Vibrationsalarm steuern"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Ermöglicht der App, den Vibrationsalarm zu steuern"</string> <string name="permlab_flashlight" msgid="2155920810121984215">"Lichtanzeige steuern"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Ermöglicht der App, die Lichtanzeige zu steuern"</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Ermöglicht der App, dem System zu melden, welche Widgets von welcher App verwendet werden können. Mit dieser Berechtigung können Apps anderen Apps Zugriff auf persönliche Daten gewähren. Nicht für normale Apps vorgesehen."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Telefonstatus ändern"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Ermöglicht der App, die Telefonfunktionen des Geräts zu steuern. Eine App mit dieser Berechtigung kann das Netzwerk wechseln oder das Radio des Telefons ein- und ausschalten, ohne Sie darüber zu informieren."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"Telefonstatus lesen und identifizieren"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"Telefonstatus und Identität abrufen"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Ermöglicht der App, auf die Telefonfunktionen des Geräts zuzugreifen. Eine App mit dieser Berechtigung kann unter anderem die Telefon- und Seriennummer dieses Telefons ermitteln und feststellen, ob ein Anruf aktiv ist oder mit welcher Nummer der Anrufer verbunden ist."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"Standby-Modus des Tablets deaktivieren"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"Standby-Modus deaktivieren"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Führt einen systemnahen Herstellertest durch, in dessen Rahmen auf die gesamte Telefon-Hardware zugegriffen werden kann. Nur verfügbar, wenn ein Telefon im Herstellertestmodus ausgeführt wird."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"Hintergrund festlegen"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ermöglicht der App, den Hintergrund des Systems festzulegen"</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Größenhinweise für Hintergrund festlegen"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"Größe des Hintergrundbildes anpassen"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ermöglicht der App, die Größenhinweise für den Systemhintergrund festzulegen"</string> <string name="permlab_masterClear" msgid="2315750423139697397">"System auf Werkseinstellung zurücksetzen"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Ermöglicht der App, das System komplett auf die Werkseinstellungen zurückzusetzen. Hierbei werden alle Daten, Konfigurationen und installierten Apps gelöscht."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Ermöglicht der App, die Zeitzone des Telefons zu ändern"</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"Als Konto-Manager fungieren"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Ermöglicht der App, Anrufe an Kontoauthentifizierer zu tätigen"</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"bekannte Konten suchen"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"Konten auf dem Gerät suchen"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Ermöglicht der App, eine Liste der dem Tablet bekannten Konten abzurufen"</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Ermöglicht der App, eine Liste der dem Telefon bekannten Konten abzurufen"</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"Als Kontoauthentifizierer fungieren"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"Konten erstellen und Passwörter festlegen"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Ermöglicht der App, die Kontoauthentifizierungsfunktionen des Konto-Managers zu verwenden, einschließlich der Funktionen zum Erstellen von Konten sowie zum Abrufen und Festlegen der entsprechenden Passwörter"</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"Kontoliste verwalten"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"Konten hinzufügen oder entfernen"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Ermöglicht der App, Konten hinzuzufügen und zu entfernen oder deren Passwörter zu löschen"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"Informationen zur Authentifizierung eines Kontos verwenden"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"Konten auf dem Gerät verwenden"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Ermöglicht der App, Authentifizierungs-Token anzufordern"</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"Netzwerkstatus anzeigen"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"Netzwerkverbindungen anzeigen"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Ermöglicht der App, den Status aller Netzwerke anzuzeigen"</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"uneingeschränkter Internetzugriff"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Ermöglicht der App, Netzwerk-Sockets einzurichten"</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ermöglicht der App, den Status der Tethering-Konnektivität zu ändern"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"Einstellung zur Verwendung von Hintergrunddaten ändern"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Ermöglicht der App, die Einstellung zur Verwendung von Hintergrunddaten zu ändern"</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"WLAN-Status anzeigen"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"WLAN-Verbindungen anzeigen"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Ermöglicht der App, die Informationen zum WLAN-Status einzusehen"</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"WLAN-Status ändern"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"WLAN-Verbindungen herstellen und trennen"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Ermöglicht der App, eine Verbindung zu den WLAN-Zugangspunkten herzustellen und diese zu trennen oder Änderungen an den konfigurierten WLAN-Netzwerken vorzunehmen"</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"WLAN-Multicast-Empfang zulassen"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Ermöglicht der App, Datenpakete zu empfangen, die nicht direkt an Ihr Gerät gerichtet sind. Dies kann bei der Erkennung von in der Nähe angebotenen Diensten hilfreich sein. Diese Einstellung verbraucht mehr Energie als der Nicht-Multicast-Modus."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth-Verwaltung"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Auf Bluetooth-Einstellungen zugreifen"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ermöglicht der App, das lokale Bluetooth-Tablet zu konfigurieren, Remote-Geräte zu erkennen und eine Verbindung zu diesen herzustellen"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ermöglicht der App, das lokale Bluetooth-Telefon zu konfigurieren, Remote-Geräte zu erkennen und eine Verbindung zu diesen herzustellen"</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX-Status anzeigen"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX-Verbindungen anzeigen"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Ermöglicht der App, Informationen über den Status von WiMAX anzuzeigen"</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-Status ändern"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Ermöglicht der App, eine Verbindung mit dem WiMAX-Netzwerk herzustellen bzw. zu trennen"</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth-Verbindungen herstellen"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"Pairing mit Bluetooth-Geräten durchführen"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Ermöglicht der App, die Konfiguration des lokalen Bluetooth-Tablets einzusehen und Verbindungen zu Partnergeräten herzustellen und zu akzeptieren"</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Ermöglicht der App, die Konfiguration des lokalen Bluetooth-Telefons einzusehen und Verbindungen mit Partnergeräten herzustellen und zu akzeptieren"</string> <string name="permlab_nfc" msgid="4423351274757876953">"Nahfeldkommunikation steuern"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Ermöglicht der App die Kommunikation mit Tags für die Nahfeldkommunikation, Karten und Readern"</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"Tastensperre deaktivieren"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"Bildschirmsperre deaktivieren"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Ermöglicht der App, die Tastensperre sowie den damit verbundenen Passwortschutz zu deaktivieren. So wird zum Beispiel die Tastensperre des Telefons deaktiviert, wenn ein Anruf eingeht, und nach Beendigung des Anrufs wieder aktiviert."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"Synchronisierungseinstellungen lesen"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Ermöglicht der App, die Synchronisierungseinstellungen zu lesen, etwa ob die Synchronisierung für die App \"Personen\" aktiviert ist oder nicht"</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"Synchronisierungseinstellungen schreiben"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"Synchronisierung aktivieren oder deaktivieren"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Ermöglicht der App, die Synchronisierungseinstellungen zu ändern, etwa ob die Synchronisierung für die App \"Personen\" aktiviert ist oder nicht"</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"Synchronisierungsstatistiken lesen"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Ermöglicht der App, die Synchronisierungsstatistiken zu lesen, etwa den Verlauf der bereits durchgeführten Synchronisierungen"</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Ermöglicht der App, Details zu den zurzeit synchronisierten Feeds abzurufen"</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abonnierte Feeds schreiben"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ermöglicht der App, Änderungen an kürzlich synchronisierten Feeds vorzunehmen. Schädliche Apps können so Ihre synchronisierten Feeds ändern."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"Benutzerdefiniertes Wörterbuch lesen"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"Begriffe lesen, die Sie zum Wörterbuch hinzugefügt haben"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Ermöglicht der App, alle privaten Wörter, Namen und Ausdrücke zu lesen, die ein Nutzer in seinem Wörterbuch gespeichert hat"</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"In benutzerdefiniertes Wörterbuch schreiben"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ermöglicht der App, dem Nutzerwörterbuch neue Einträge hinzuzufügen"</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USB-Speicher-Inhalt lesen"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SD-Karten-Inhalt lesen"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Ermöglicht der App, den USB-Speicher zu lesen"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Ermöglicht der App, den Inhalt einer SD-Karte zu lesen"</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-Speicherinhalt ändern/löschen"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD-Karten-Inhalt ändern/löschen"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB-Speicherinhalte lesen"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD-Karteninhalte lesen"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Ermöglicht der App, die Inhalte des USB-Speichers einschließlich Fotos und Medien, zu lesen"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Ermöglicht der App, die Inhalte der SD-Karte einschließlich Fotos und Medien, zu lesen"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB-Speicherinhalte ändern oder löschen"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"SD-Karteninhalte ändern oder löschen"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ermöglicht der App, in den USB-Speicher zu schreiben"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Ermöglicht der App, auf die SD-Karte zu schreiben"</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"Intern. Mediensp. änd./löschen"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Keine SIM-Karte im Telefon"</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Legen Sie eine SIM-Karte ein."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-Karte fehlt oder ist nicht lesbar. Bitte legen Sie eine SIM-Karte ein."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ihre SIM-Karte wurde dauerhaft deaktiviert."\n" Wenden Sie sich an Ihren Mobilfunkanbieter, um eine andere SIM-Karte zu erhalten."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Schaltfläche für vorherigen Track"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Schaltfläche für nächsten Track"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"Zeichen"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"Wort"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"Link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"Zeile"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Werkstest fehlgeschlagen"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Gemeinde"</string> <string name="autofill_area" msgid="3547409050889952423">"Gebiet"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Browserverlauf und Lesezeichen lesen"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Lesezeichen für Webseiten und das Webprotokoll lesen"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Ermöglicht der App, alle URLs, die mit dem Browser besucht wurden, sowie alle Lesezeichen des Browsers zu lesen"</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Browserverlauf und Lesezeichen schreiben"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"Lesezeichen für Webseiten setzen und das Webprotokoll aufzeichnen"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Ermöglicht der App, den auf Ihrem Tablet gespeicherten Browserverlauf oder die gespeicherten Lesezeichen zu ändern. Schädliche Apps können so Ihre Browserdaten löschen oder ändern."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Ermöglicht der App, den auf Ihrem Telefon gespeicherten Browserverlauf und die gespeicherten Lesezeichen zu ändern. Schädliche Apps können so Ihre Browserdaten löschen oder ändern."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"Alarm im Wecker festlegen"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"Wecker stellen"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Ermöglicht der App, einen Alarm in einer installierten Wecker-App einzurichten. Einige Wecker-Apps implementieren diese Funktion möglicherweise nicht."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"Mailbox-Nachrichten hinzufügen"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ermöglicht der App, Nachrichten zu Ihrem Mailbox-Posteingang hinzuzufügen"</string> @@ -949,7 +1013,7 @@ <string name="chooseUsbActivity" msgid="6894748416073583509">"App für USB-Gerät auswählen"</string> <string name="noApplications" msgid="2991814273936504689">"Diese Aktion kann von keiner App ausgeführt werden."</string> <string name="aerr_title" msgid="1905800560317137752"></string> - <string name="aerr_application" msgid="932628488013092776">"Leider wurde \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" beendet."</string> + <string name="aerr_application" msgid="932628488013092776">"\"<xliff:g id="APPLICATION">%1$s</xliff:g>\" wurde leider beendet."</string> <string name="aerr_process" msgid="4507058997035697579">"Leider wurde der Prozess <xliff:g id="PROCESS">%1$s</xliff:g> beendet."</string> <string name="anr_title" msgid="4351948481459135709"></string> <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> reagiert nicht."\n\n"Möchten Sie die App schließen?"</string> @@ -971,7 +1035,7 @@ <string name="android_upgrading_title" msgid="1584192285441405746">"Android wird aktualisiert..."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> von <xliff:g id="NUMBER_1">%2$d</xliff:g> wird optimiert."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet."</string> - <string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen."</string> + <string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen..."</string> <string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string> <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Zum Wechseln in die App berühren"</string> <string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Apps wechseln?"</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Speichern"</string> <string name="date_time_done" msgid="2507683751759308828">"Fertig"</string> <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"Neu: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"Neu: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Keine Berechtigungen erforderlich"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ausblenden"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Alle anzeigen"</b></string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 609684aa01e9..1f44b1b4db3f 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Το tablet σας θα απενεργοποιηθεί."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Το τηλέφωνό σας θα απενεργοποιηθεί."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Θέλετε να γίνει τερματισμός λειτουργίας;"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Επανεκκίνηση στην ασφαλή λειτουργία"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Θέλετε να κάνετε επανεκκίνηση στην ασφαλή λειτουργία; Αυτό θα απενεργοποιήσει όλες τις εφαρμογές τρίτων που έχετε εγκαταστήσει. Θα γίνει επαναφορά τους στην επόμενη επανεκκίνηση."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Πρόσφατα"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Δεν υπάρχουν πρόσφατες εφαρμογές."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Επιλογές tablet"</string> @@ -170,12 +168,43 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Τα μηνύματά σας"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Ανάγνωση και εγγραφή μηνυμάτων SMS, μηνυμάτων ηλεκτρονικού ταχυδρομείου και άλλων μηνυμάτων."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Οι προσωπικές σας πληροφορίες"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Άμεση πρόσβαση στις επαφές και στο ημερολόγιό σας που είναι αποθηκευμένα στο tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Άμεση πρόσβαση στις επαφές και στο ημερολόγιό σας που είναι αποθηκευμένα στο τηλέφωνο."</string> + <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Άμεση πρόσβαση σε πληροφορίες σχετικά με εσάς, οι οποίες είναι αποθηκευμένες στην κάρτα επαφών σας."</string> + <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Οι κοινωνικές πληροφορίες σας"</string> + <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Άμεση πρόσβαση σε πληροφορίες σχετικά με τις επαφές και τις κοινωνικές συνδέσεις σας."</string> <string name="permgrouplab_location" msgid="635149742436692049">"Η τοποθεσία σας"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Παρακολούθηση της φυσικής τοποθεσίας σας."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Επικοινωνία δικτύου"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Πρόσβαση σε διάφορες λειτουργίες δικτύου."</string> + <string name="permgrouplab_shortRangeNetwork" msgid="4504840216096355984">"Bluetooth και NFC"</string> + <string name="permgroupdesc_shortRangeNetwork" msgid="8821013030346680806">"Πρόσβαση δικτύων και συσκευών Bluetooth ή NFC."</string> + <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ρυθμίσεις ήχου"</string> + <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Αλλαγή ρυθμίσεων ήχου."</string> + <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Επηρεάζει την μπαταρία"</string> + <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Χρήση λειτουργιών που μπορούν να εξαντλήσουν γρήγορα την μπαταρία."</string> + <string name="permgrouplab_calendar" msgid="5863508437783683902">"Ημερολόγιο"</string> + <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Άμεση πρόσβαση σε ημερολόγιο και συμβάντα."</string> + <string name="permgrouplab_dictionary" msgid="8114410334955871144">"Λεξικό χρήστη"</string> + <string name="permgroupdesc_dictionary" msgid="40926483968949978">"Άμεση πρόσβαση στο λεξικό χρήστη."</string> + <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Σελιδοδείκτες και ιστορικό"</string> + <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Άμεση πρόσβαση σε σελιδοδείκτες και ιστορικού προγράμματος περιήγησης."</string> + <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Ξυπνητήρι"</string> + <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Ρύθμιση ξυπνητηριού."</string> + <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Αυτόματος τηλεφωνητής"</string> + <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Άμεση πρόσβαση στον αυτόματο τηλεφωνητή."</string> + <string name="permgrouplab_microphone" msgid="171539900250043464">"Μικρόφωνο"</string> + <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Άμεση πρόσβαση στο μικρόφωνο για την εγγραφή ήχου."</string> + <string name="permgrouplab_camera" msgid="4820372495894586615">"Κάμερα"</string> + <string name="permgroupdesc_camera" msgid="2933667372289567714">"Άμεση πρόσβαση σε κάμερα για λήψη εικόνας ή βίντεο."</string> + <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Οι πληροφορίες των εφαρμογών σας"</string> + <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Δυνατότητα επιρροής συμπεριφοράς άλλων εφαρμογών στη συσκευή σας."</string> + <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Ταπετσαρία"</string> + <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Αλλαγή των ρυθμίσεων ταπετσαρίας συσκευής."</string> + <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ρολόι"</string> + <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Αλλαγή της ώρας ή της ζώνης ώρας συσκευής."</string> + <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Γραμμή κατάστασης"</string> + <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Αλλαγή των ρυθμίσεων γραμμής κατάστασης συσκευής."</string> + <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Ρυθμίσεις συγχρονισμού"</string> + <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Πρόσβαση στις ρυθμίσεις συγχρονισμού."</string> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Οι λογαριασμοί σας"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Πρόσβαση στους διαθέσιμους λογαριασμούς."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Στοιχεία ελέγχου υλικού"</string> @@ -186,6 +215,8 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Χαμηλού επιπέδου πρόσβαση και έλεγχος του συστήματος."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Εργαλεία ανάπτυξης"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Δυνατότητες που είναι απαραίτητες μόνο σε προγραμματιστές εφαρμογών."</string> + <string name="permgrouplab_display" msgid="4279909676036402636">"Άλλες διεπαφές εφαρμογών"</string> + <string name="permgroupdesc_display" msgid="6051002031933013714">"Επιρροή διεπαφής άλλων εφαρμογών."</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Αποθηκευτικός χώρος"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Πρόσβαση στον χώρο αποθ. USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Πρόσβαση στην κάρτα SD."</string> @@ -195,11 +226,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Επιτρέπει στην εφαρμογή να αποτελεί τη γραμμή κατάστασης."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ανάπτυξη/σύμπτυξη γραμμής κατάστασης"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Επιτρέπει στην εφαρμογή να αναπτύξει ή να συμπτύξει τη γραμμή κατάστασης."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"φραγή εξερχόμενων κλήσεων"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"αναδρομολόγηση εξερχόμενων κλήσεων"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Επιτρέπει στην εφαρμογή την επεξεργασία εξερχόμενων κλήσεων και την αλλαγή του αριθμού που προορίζεται για κλήση. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν, να ανακατευθύνουν ή να αποτρέπουν τις εξερχόμενες κλήσεις."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"λήψη SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"λήψη μηνυμάτων κειμένου (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων SMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν τα μηνύματά σας ή να τα διαγράφουν χωρίς να εμφανίζονται πρώτα σε εσάς."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"λήψη MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"λήψη μηνυμάτων κειμένου (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων MMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν τα μηνύματά σας ή να τα διαγράφουν χωρίς να εμφανίζονται πρώτα σε εσάς."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"λαμβάνει τις μεταδόσεις σε περιπτώσεις έκτακτης ανάγκης"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων μετάδοσης. Αυτή η άδεια διατίθεται μόνο για εφαρμογές συστήματος."</string> @@ -209,16 +240,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Επιτρέπει στην εφαρμογή την αποστολή μηνυμάτων SMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να κοστίσουν μέσω της αποστολής μηνυμάτων χωρίς δική σας επιβεβαίωση."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"αποστολή μηνυμάτων SMS χωρίς επιβεβαίωση"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Επιτρέπει στην εφαρμογή την αποστολή μηνυμάτων SMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να κοστίσουν μέσω της αποστολής μηνυμάτων χωρίς δική σας επιβεβαίωση."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"ανάγνωση μηνυμάτων SMS ή MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"ανάγνωση των μηνυμάτων κειμένου σας (SMS ή MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων SMS τα οποία βρίσκονται αποθηκευμένα στο tablet σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαβάσουν τα απόρρητα μηνύματά σας."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων SMS τα οποία βρίσκονται αποθηκευμένα στο τηλέφωνό σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαβάσουν τα απόρρητα μηνύματά σας."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"επεξεργασία SMS ή MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"επεξεργασία των μηνυμάτων κειμένου σας (SMS ή MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Επιτρέπει στην εφαρμογή την εγγραφή σε μηνύματα SMS που είναι αποθηκευμένα στο tablet σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαγράψουν τα μηνύματά σας."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Επιτρέπει στην εφαρμογή την εγγραφή σε μηνύματα SMS που είναι αποθηκευμένα στο τηλέφωνό σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαγράψουν τα μηνύματά σας."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"λήψη WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"λήψη μηνυμάτων κειμένου (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων WAP. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν τα μηνύματά σας ή να τα διαγράφουν χωρίς να εμφανίζονται πρώτα σε εσάς."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"ανάκτηση εκτελούμενων εφαρμογών"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Επιτρέπει στην εφαρμογή να ανακτήσει πληροφορίες σχετικά με τις τρέχουσες εκτελούμενες εργασίες και στις εργασίες που έχουν πρόσφατα εκτελεστεί. Τυχόν κακόβουλες εφαρμογές ενδέχεται να ανακαλύψουν ιδιωτικές πληροφορίες σχετικά με άλλες εφαρμογές."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ανάκτηση λεπτομερειών σχετικά με τις εκτελούμενες εφαρμογές"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Επιτρέπει στην εφαρμογή την ανάκτηση λεπτομερών πληροφοριών σχετικά με τις τρέχουσες εκτελούμενες εργασίες και τις εργασίες που έχουν εκτελεστεί πρόσφατα. Τυχόν κακόβουλες εφαρμογές ενδέχεται να ανακαλύψουν ιδιωτικές πληροφορίες σχετικά με άλλες εφαρμογές."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"αναδιάταξη εκτελούμενων εφαρμογών"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Επιτρέπει στην εφαρμογή τη μετακίνηση εργασιών στο προσκήνιο και στο φόντο. Τυχόν κακόβουλες εφαρμογές μπορούν να προωθηθούν στο προσκήνιο χωρίς να μπορείτε να τις ελέγξετε."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"διακοπή εκτέλεσης εφαρμογών"</string> @@ -229,11 +262,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Επιτρέπει στην εφαρμογή να ελέγξει τη λειτουργία συμβατότητας της οθόνης με άλλες εφαρμογές. Οι κακόβουλες εφαρμογές μπορεί να επηρεάσουν τη συμπεριφορά άλλων εφαρμογών."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"ενεργοποίηση εντοπισμού σφαλμάτων εφαρμογής"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Επιτρέπει στην εφαρμογή να ενεργοποιήσει τον εντοπισμό σφαλμάτων για μια άλλη εφαρμογή. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτήν τη δυνατότητα για τον τερματισμό άλλων εφαρμογών."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"αλλαγή των ρυθμίσεων του UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"αλλαγή ρυθμίσεων προβολής συστήματος"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Επιτρέπει στην εφαρμογή την αλλαγή της τρέχουσας διαμόρφωσης, όπως είναι οι τοπικές ρυθμίσεις ή το μέγεθος γραμματοσειράς γενικά."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"ενεργοποίηση λειτουργίας αυτοκινήτου"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Επιτρέπει στην εφαρμογή την ενεργοποίηση της λειτουργίας αυτοκινήτου."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"τερματισμός διεργασιών παρασκηνίου"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"κλείσιμο των άλλων εφαρμογών"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Επιτρέπει στην εφαρμογή τον τερματισμό των διεργασιών παρασκηνίου άλλων εφαρμογών, ακόμα και αν η μνήμη είναι επαρκής."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"επιβολή διακοπής άλλων εφαρμογών"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Επιτρέπει στην εφαρμογή να πραγματοποιήσει αναγκαστική διακοπή άλλων εφαρμογών."</string> @@ -257,7 +290,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Επιτρέπει στην εφαρμογή τη μετάδοση μιας ειδοποίησης ότι έχει ληφθεί κάποιο μήνυμα WAP PUSH. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτήν τη δυνατότητα για τη λήψη πλαστών μηνυμάτων MMS ή την εν αγνοία του χρήστη αντικατάσταση του περιεχομένου οποιασδήποτε ιστοσελίδας με κακόβουλες παραλλαγές."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"περιορισμός αριθμού εκτελούμενων διαδικασιών"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Επιτρέπει στην εφαρμογή τον έλεγχο του μέγιστου αριθμού διαδικασιών που θα εκτελούνται. Δεν είναι απαραίτητο για συνήθεις εφαρμογές."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"κλείσιμο όλων των εφαρμογών στο φόντο"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"αναγκαστικός τερματισμός εφαρμογών στο παρασκήνιο"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Επιτρέπει στην εφαρμογή να ελέγχει αν οι δραστηριότητες ολοκληρώνονται πάντοτε μόλις μεταβούν στο φόντο. Δεν απαιτείται για συνήθεις εφαρμογές."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"τροποποίηση στατιστικών μπαταρίας"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Επιτρέπει στην εφαρμογή την τροποποίηση στατιστικών μπαταρίας που έχουν συλλεχθεί. Δεν πρέπει να χρησιμοποιείται από συνήθεις εφαρμογές."</string> @@ -267,7 +300,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Επιτρέπει στην εφαρμογή την εκκίνηση της διεπαφής χρήστη επιβεβαίωσης δημιουργίας αντιγράφου ασφαλείας. Δεν προορίζεται για χρήση από οποιαδήποτε εφαρμογή."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"προβολή μη εξουσιοδοτημένων παραθύρων"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Επιτρέπει στην εφαρμογή τη δημιουργία παραθύρων τα οποία προορίζονται για χρήση από τη διεπαφή χρήστη του εσωτερικού συστήματος. Δεν προορίζεται για χρήση με συνήθεις εφαρμογές."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"εμφάνιση ειδοποιήσεων επιπέδου συστήματος"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"σχεδίαση πάνω σε άλλες εφαρμογές"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Επιτρέπει στην εφαρμογή την εμφάνιση παραθύρων ειδοποίησης συστήματος. Τυχόν κακόβουλες εφαρμογές ενδέχεται εμφανιστούν σε ολόκληρη την οθόνη του τηλεφώνου."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"τροποποίηση καθολικής ταχύτητας κίνησης εικόνας"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Επιτρέπει στην εφαρμογή την αλλαγή της καθολικής ταχύτητας κίνησης (ταχύτερη ή βραδύτερη κίνηση) οποιαδήποτε στιγμή."</string> @@ -329,37 +362,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Επιτρέπει σε μια εφαρμογή να εκχωρήσει ή να ανακαλέσει ειδικά δικαιώματα για αυτήν ή για άλλες εφαρμογές. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν αυτό ώστε να αποκτήσουν πρόσβαση σε λειτουργίες για τις οποίες δεν τους έχει εκχωρηθεί δικαίωμα."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ορισμός προτιμώμενων εφαρμογών"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Επιτρέπει στην εφαρμογή την τροποποίηση των εφαρμογών της προτίμησής σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να να αλλάξουν χωρίς ειδοποίηση τις εφαρμογές που εκτελούνται, \"ξεγελώντας\" τις υπάρχουσες εφαρμογές ώστε να συλλέξουν ιδιωτικά δεδομένα από εσάς."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"τροποποίηση καθολικών ρυθμίσεων συστήματος"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"τροποποίηση ρυθμίσεων συστήματος"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Επιτρέπει στην εφαρμογή την τροποποίηση των δεδομένων των ρυθμίσεων του συστήματος. Τυχόν κακόβουλες εφαρμογές ενδέχεται να καταστρέψουν τη διαμόρφωση του συστήματός σας."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"τροποποίηση ασφαλών ρυθμίσεων συστήματος"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Επιτρέπει στην εφαρμογή την τροποποίηση των δεδομένων των ρυθμίσεων του συστήματος. Δεν προορίζεται για χρήση από συνήθεις εφαρμογές."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"μετατροπή του χάρτη υπηρεσιών Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Επιτρέπει στην εφαρμογή την τροποποίηση του χάρτη υπηρεσιών Google. Δεν προορίζεται για χρήση από συνήθεις εφαρμογές."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"αυτόματη εκκίνηση κατά την εκκίνηση του υπολογιστή"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"εκτέλεση κατά την έναρξη"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Επιτρέπει στην εφαρμογή να εκκινηθεί αμέσως μόλις ολοκληρωθεί η εκκίνηση του συστήματος. Αυτό ενδέχεται να καθυστερήσει την εκκίνηση του tablet και να προκαλέσει γενική μείωση της ταχύτητας λειτουργίας του tablet, καθώς η εφαρμογή θα εκτελείται συνεχώς."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Επιτρέπει στην εφαρμογή να εκκινηθεί αμέσως μόλις ολοκληρωθεί η εκκίνηση του συστήματος. Αυτό ενδέχεται να καθυστερήσει την εκκίνηση του τηλεφώνου και να προκαλέσει γενική μείωση της ταχύτητας λειτουργίας του τηλεφώνου, καθώς η εφαρμογή θα εκτελείται συνεχώς."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"αποστολή εκπομπής sticky"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Επιτρέπει στην εφαρμογή την αποστολή εκπομπών sticky, οι οποίες παραμένουν μετά το τέλος της εκπομπής. Τυχόν κακόβουλες εφαρμογές ενδέχεται να καταστήσουν τη λειτουργία του tablet αργή ή ασταθή προκαλώντας τη χρήση μεγάλου τμήματος της μνήμης."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Επιτρέπει στην εφαρμογή την αποστολή εκπομπών sticky, οι οποίες παραμένουν μετά το τέλος της εκπομπής. Τυχόν κακόβουλες εφαρμογές ενδέχεται να καταστήσουν τη λειτουργία του τηλεφώνου αργή ή ασταθή προκαλώντας τη χρήση μεγάλου τμήματος της μνήμης."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"ανάγνωση δεδομένων επαφής"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"εγγραφή δεδομένων επαφής"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"ανάγνωση των επαφών σας"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Επιτρέπει στην εφαρμογή να διαβάζει όλα τα δεδομένα σχετικά με τις επαφές που έχουν αποθηκευτεί στο tablet σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να στείλουν τα στοιχεία επικοινωνίας σας σε άλλα άτομα."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Δίνει τη δυνατότητα στην εφαρμογή να διαβάζει όλα τα δεδομένα σχετικά με τις επαφές σας που έχουν αποθηκευτεί στο τηλέφωνό σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να στείλουν τα στοιχεία επικοινωνίας σας σε άλλα άτομα."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"τροποποίηση των επαφών σας"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Επιτρέπει στην εφαρμογή να τροποποιεί τα δεδομένα σχετικά με τις επαφές σας που έχουν αποθηκευτεί στο tablet σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να διαγράψουν ή να τροποποιήσουν τα στοιχεία επικοινωνίας σας."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Επιτρέπει στην εφαρμογή να τροποποιεί τα δεδομένα σχετικά με τις επαφές σας που έχουν αποθηκευτεί στο τηλέφωνό σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να διαγράψουν ή να τροποποιήσουν τα στοιχεία επικοινωνίας σας."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"ανάγνωση αρχείου καταγραφής κλήσεων"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Επιτρέπει στην εφαρμογή να διαβάζει το αρχείο καταγραφής κλήσεων του tablet σας, συμπεριλαμβανομένων των δεδομένων σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να στείλουν τα δεδομένα σας σε άλλα άτομα."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Επιτρέπει στην εφαρμογή να διαβάζει το αρχείο καταγραφής κλήσεων του τηλεφώνου σας, συμπεριλαμβανομένων των δεδομένων σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να στείλουν τα δεδομένα σας σε άλλα άτομα."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"εγγραφή αρχείου καταγραφής κλήσεων"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Επιτρέπει στην εφαρμογή να τροποποιεί το αρχείο καταγραφής κλήσεων του tablet σας, συμπεριλαμβανομένων των δεδομένων σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να διαγράψουν ή να τροποποιήσουν το αρχείο καταγραφής κλήσεων."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Επιτρέπει στην εφαρμογή να τροποποιεί το αρχείο καταγραφής κλήσεων του τηλεφώνου σας, συμπεριλαμβανομένων των δεδομένων σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να διαγράψουν ή να τροποποιήσουν το αρχείο καταγραφής κλήσεων."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"ανάγν. δεδ. προφ."</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"ανάγνωση της κάρτας επαφής σας"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Επιτρέπει στην εφαρμογή την ανάγνωση προσωπικών πληροφοριών προφίλ οι οποίες είναι αποθηκευμένες στη συσκευή σας, όπως το όνομα και τα στοιχεία επικοινωνίας σας. Αυτό σημαίνει ότι η εφαρμογή μπορεί να σας αναγνωρίσει και να στείλει τις πληροφορίες σας προφίλ σε άλλους."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"εγγρ. σε δεδ. προφίλ"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"τροποποίηση κάρτας επαφής"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Επιτρέπει στην εφαρμογή την αλλαγή ή την προσθήκη προσωπικών πληροφοριών προφίλ οι οποίες είναι αποθηκευμένες στη συσκευή σας, όπως το όνομα και τα στοιχεία επικοινωνίας σας. Αυτό σημαίνει ότι οι άλλες εφαρμογές μπορούν να σας αναγνωρίσουν και να στείλουν τις πληροφορίες σας προφίλ σε άλλους."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"διαβάστε τη ροή σας κοινωνικών δικτύων"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση και να συγχρονίζει τις ενημερώσεις κοινωνικού περιεχομένου από τους φίλους σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτήν τη δυνατότητα για να διαβάσουν απόρρητες επικοινωνίες μεταξύ εσάς και των φίλων σας σε κοινωνικά δίκτυα."</string> @@ -400,9 +429,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"αναγκαστική επανεκκίνηση τηλεφώνου"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Επιτρέπει στην εφαρμογή να προκαλέσει αναγκαστική επανεκκίνηση του tablet."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Επιτρέπει στην εφαρμογή να προκαλέσει αναγκαστική επανεκκίνηση του τηλεφώνου."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"σύνδεση και αποσύνδεση συστημάτων αρχείων"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"πρόσβ. σε σύστ.αρχ.αποθ.χώρ.USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"πρόσβαση στο σύστημα αρχείων της κάρτας SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Επιτρέπει στην εφαρμογή τη σύνδεση και αποσύνδεση συστημάτων αρχείων για αφαιρούμενο χώρο αποθήκευσης."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"διαμόρφωση εξωτερικού αποθηκευτικού χώρου"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"διαγραφή αποθ. χώρου USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"διαγραφή κάρτας SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Επιτρέπει στην εφαρμογή τη διαμόρφωση αφαιρούμενου χώρου αποθήκευσης."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"λήψη πληροφοριών στον εσωτερικό χώρο αποθήκευσης"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Επιτρέπει στην εφαρμογή τη λήψη πληροφοριών στον εσωτερικό χώρο αποθήκευσης."</string> @@ -414,7 +445,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Επιτρέπει στην εφαρμογή τη σύνδεση/αποσύνδεση του εσωτερικού χώρου αποθήκευσης."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"μετονομασία εσωτερικού αποθηκευτικού χώρου"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Επιτρέπει στην εφαρμογή τη μετονομασία του εσωτερικού χώρου αποθήκευσης."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"έλεγχος δόνησης"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"έλεγχος δόνησης"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Επιτρέπει στην εφαρμογή τον έλεγχο της δόνησης."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"έλεγχος φακού"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Επιτρέπει στην εφαρμογή τον έλεγχο του φακού."</string> @@ -439,7 +470,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Επιτρέπει στην εφαρμογή να ορίσει στο σύστημα ποια γραφικά στοιχεία μπορεί να χρησιμοποιήσει κάθε εφαρμογή. Με αυτή την άδεια, οι εφαρμογές μπορούν να παρέχουν πρόσβαση σε προσωπικά δεδομένα σε άλλες εφαρμογές. Δεν προορίζεται για χρήση με συνήθεις εφαρμογές."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"τροποποίηση κατάστασης τηλεφώνου"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Επιτρέπει στην εφαρμογή να ελέγχει τις λειτουργίες τηλεφώνου της συσκευής. Μια εφαρμογή η οποία διαθέτει αυτήν την άδεια μπορεί να κάνει εναλλαγή μεταξύ δικτύων, να ενεργοποιεί και να απενεργοποιεί το ραδιόφωνο του τηλεφώνου και άλλα, χωρίς να ειδοποιείστε."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"ανάγνωση κατάστασης και ταυτότητας τηλεφώνου"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"ανάγνωση κατάστασης και ταυτότητας τηλεφώνου"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Επιτρέπει στην εφαρμογή την πρόσβαση στις λειτουργίες τηλεφώνου της συσκευής. Μια εφαρμογή με αυτή την άδεια μπορεί να προσδιορίσει τον τηλεφωνικό και τον σειριακό αριθμό του τηλεφώνου, αν μια κλήση είναι ενεργή ή όχι, τον τηλεφωνικό αριθμό της κλήσης κλπ."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"παρεμπόδιση μετάβασης του tablet σε κατάσταση αδράνειας"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"παρεμπόδιση μετάβασης του τηλεφώνου σε κατάσταση αδράνειας"</string> @@ -454,7 +485,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Εκτέλεση ως χαμηλού επιπέδου δοκιμή κατασκευαστή, ώστε να επιτρέπεται πλήρης πρόσβαση στο υλικό του τηλεφώνου. Διαθέσιμο μόνο όταν το τηλέφωνο βρίσκεται σε λειτουργία δοκιμής κατασκευαστή."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"ορισμός ταπετσαρίας"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Επιτρέπει στην εφαρμογή τον ορισμό της ταπετσαρίας συστήματος."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"ορισμός συμβουλών μεγέθους ταπετσαρίας"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ρύθμιση του μεγέθους της ταπετσαρίας σας"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Επιτρέπει στην εφαρμογή τον ορισμό συμβουλών μεγέθους ταπετσαρίας συστήματος."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"επαναφορά συστήματος στις εργοστασιακές προεπιλογές"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Επιτρέπει στην εφαρμογή την πλήρη επαναφορά του συστήματος στις εργοστασιακές του ρυθμίσεις, τη διαγραφή όλων των δεδομένων, τη διαμόρφωση και τις εγκατεστημένες εφαρμογές."</string> @@ -466,16 +497,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Επιτρέπει στην εφαρμογή την αλλαγή της ζώνης ώρας του τηλεφώνου."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"ενεργεί ως AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Επιτρέπει στην εφαρμογή την πραγματοποίηση κλήσεων σε προγράμματα ελέγχου ταυτότητας λογαριασμού (AccountAuthenticators)."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"ανακάλυψη γνωστών λογαριασμών"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"εύρεση λογαριασμών στη συσκευή"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Επιτρέπει στην εφαρμογή να λάβει τη λίστα λογαριασμών του tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Επιτρέπει στην εφαρμογή να λάβει τη λίστα λογαριασμών του τηλεφώνου."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"ενεργεί ως πρόγραμμα ελέγχου ταυτότητας λογαριασμού"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"δημιουργία λογαριασμών και ορισμός κωδικών πρόσβασης"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Επιτρέπει στην εφαρμογή τη χρήση των δυνατοτήτων του προγράμματος ελέγχου ταυτότητας λογαριασμού του AccountManager, συμπεριλαμβανομένης της δημιουργίας λογαριασμών και της λήψης και ρύθμισης των κωδικών πρόσβασής τους."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"διαχείριση λίστας λογαριασμών"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"προσθήκη ή κατάργηση λογαριασμών"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Επιτρέπει στην εφαρμογή να εκτελεί ενέργειες όπως προσθήκη και κατάργηση λογαριασμών και διαγραφή των κωδικών πρόσβασής τους."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"χρήση διαπιστευτηρίων ελέγχου ταυτότητας ενός λογαριασμού"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"χρήση λογαριασμών στη συσκευή"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Επιτρέπει στην εφαρμογή να ζητά διακριτικά ελέγχου ταυτότητας."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"προβολή κατάστασης δικτύου"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"προβολή συνδέσεων δικτύου"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Επιτρέπει στην εφαρμογή την προβολή της κατάστασης όλων των δικτύων."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"πλήρης πρόσβαση στο Διαδίκτυο"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Επιτρέπει στην εφαρμογή τη δημιουργία υποδοχών δικτύου (sockets)."</string> @@ -487,29 +518,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Επιτρέπει στην εφαρμογή την αλλαγή της κατάστασης συνδεσιμότητας δικτύου."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"αλλαγή ρύθμισης της χρήσης δεδομένων στο παρασκήνιο"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Επιτρέπει στην εφαρμογή την αλλαγή της ρύθμισης χρήσης δεδομένων φόντου."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"προβολή κατάστασης Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"προβολή συνδέσεων Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Επιτρέπει στην εφαρμογή την προβολή των πληροφοριών σχετικά με την κατάσταση του Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"αλλαγή κατάστασης Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"σύνδεση και αποσύνδεση από το Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Επιτρέπει στην εφαρμογή τη σύνδεση σε σημεία πρόσβασης Wi-Fi και την αποσύνδεση από αυτά, καθώς και την πραγματοποίηση αλλαγών σε διαμορφωμένα δίκτυα Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"να επιτρέπεται η λήψη πολλαπλής διανομής Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Επιτρέπει στην εφαρμογή να λαμβάνει πακέτα τα οποία δεν αποστέλλονται απευθείας στη συσκευή σας. Αυτό μπορεί να φανεί χρήσιμο κατά την ανακάλυψη υπηρεσιών που προσφέρονται σε κοντινές τοποθεσίες. Χρησιμοποιεί περισσότερη ενέργεια σε σχέση με την κατάσταση μη πολλαπλής διανομής."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"διαχείριση bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"πρόσβαση στις ρυθμίσεις Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Επιτρέπει στην εφαρμογή τη διαμόρφωση του τοπικού tablet Bluetooth, τον εντοπισμό και τη σύζευξη με απομακρυσμένες συσκευές."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Επιτρέπει στην εφαρμογή τη διαμόρφωση του τοπικού tablet Bluetooth, τον εντοπισμό και τη σύζευξη με απομακρυσμένες συσκευές."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Προβολή κατάστασης WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Προβολή συνδέσεων WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Επιτρέπει στην εφαρμογή την προβολή των πληροφοριών σχετικά με την κατάσταση του WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Αλλαγή κατάστασης WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Επιτρέπει στην εφαρμογή τη σύνδεση και αποσύνδεση στο δίκτυο WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"δημιουργία συνδέσεων Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"σύζευξη με συσκευές Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Επιτρέπει στην εφαρμογή να προβάλει τη διαμόρφωση του τοπικού tablet Bluetooth και επίσης να πραγματοποιεί και να αποδέχεται συνδέσεις με συζευγμένες συσκευές."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Επιτρέπει στην εφαρμογή να προβάλει τη διαμόρφωση του τοπικού τηλεφώνου Bluetooth και επίσης να πραγματοποιεί και να αποδέχεται συνδέσεις με συζευγμένες συσκευές."</string> <string name="permlab_nfc" msgid="4423351274757876953">"έλεγχος Επικοινωνίας κοντινού πεδίου (Near Field Communication)"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Επιτρέπει στην εφαρμογή την επικοινωνία με ετικέτες, κάρτες και αναγνώστες της Επικοινωνίας κοντινού πεδίου (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"απενεργοποίηση κλειδώματος πληκτρολογίου"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"απενεργοποίηση κλειδώματος οθόνης"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Επιτρέπει στην εφαρμογή την απενεργοποίηση του κλειδώματος πληκτρολογίου και άλλης σχετικής ασφάλειας με κωδικό πρόσβασης. Για παράδειγμα, η απενεργοποίηση του κλειδώματος πληκτρολογίου όταν λαμβάνεται εισερχόμενη τηλεφωνική κλήση και η επανενεργοποίηση του κλειδώματος πληκτρολογίου όταν η κλήση τερματιστεί."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"ανάγνωση ρυθμίσεων συγχρονισμού"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων συγχρονισμού, όπως την ενεργοποίηση ή όχι του συγχρονισμού για την εφαρμογή \"Άτομα\"."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"καταγραφή ρυθμίσεων συγχρονισμού"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"εναλλαγή ενεργοποίησης και απενεργοποίησης συγχρονισμού"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Επιτρέπει στην εφαρμογή την τροποποίηση των ρυθμίσεων συγχρονισμού, όπως την ενεργοποίηση ή όχι του συγχρονισμού για την εφαρμογή \"Άτομα\"."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"ανάγνωση στατιστικών συγχρονισμού"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Επιτρέπει στην εφαρμογή την ανάγνωση των στατιστικών συγχρονισμού (π.χ. το ιστορικό των συγχρονισμών που έχουν πραγματοποιηθεί)."</string> @@ -517,16 +548,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Επιτρέπει στην εφαρμογή τη λήψη λεπτομερειών σχετικά με τις τρέχουσες συγχρονισμένες ροές δεδομένων."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"εγγραφή ροών δεδομένων στις οποίες έχετε εγγραφεί"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Επιτρέπει στην εφαρμογή να τροποποιήσει τις ροές δεδομένων, με τις οποίες είστε συγχρονισμένοι αυτήν τη στιγμή. Τυχόν κακόβουλες εφαρμογές ενδέχεται να αλλάξουν τις συγχρονισμένες ροές δεδομένων σας."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"ανάγνωση λεξικού καθορισμένου από τον χρήστη"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"ανάγνωση όρων που έχετε προσθέσει στο λεξικό"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Επιτρέπει στην εφαρμογή την ανάγνωση ιδιωτικών λέξεων, ονομάτων και φράσεων, τα οποία ο χρήστης ενδέχεται να έχει αποθηκεύσει στο λεξικό χρήστη."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"εγγραφή σε λεξικό καθορισμένο από τον χρήστη"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Επιτρέπει στην εφαρμογή την εγγραφή νέων λέξεων στο λεξικό χρήστη."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"ανάγν. περιεχ. αποθ. χώρ. USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"ανάγνωση περιεχομένου κάρτας SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Επιτρ. η ανάγν. περιεχ. απ. χώρου USB"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Επιτρέπει στην εφαρμογή την ανάγνωση περιεχομένου της κάρτας SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"τροπ./διαγρ. περ. απ. χώρ. USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"τροποποίηση/διαγραφή περιεχομένων κάρτας SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"ανάγν. περιεχ. αποθηκ. χώρ.USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"ανάγνωση του περιεχομένου της κάρτας SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Επιτρ. η ανάγν. περ. αποθ. χώρ. USB, με φωτ. και μέσα"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Επιτρέπει στην εφαρμογή την ανάγνωση του περιεχομένου της κάρτας SD, το οποίο μπορεί να περιλαμβάνει φωτογραφίες και μέσα."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"τροπ. ή διαγρ. περιεχ. αποθ. χώρ. USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"τροποποίηση ή διαγραφή του περιεχομένου της κάρτας SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Επιτρέπει στην εφαρμογή την εγγραφή στον αποθηκευτικό χώρο USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Επιτρέπει στην εφαρμογή την εγγραφή στην κάρτα SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"τροπ./διαγ. περ. απ. εσ. μνήμ."</string> @@ -704,6 +735,7 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Δεν υπάρχει κάρτα SIM στο τηλέφωνο."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Τοποθετήστε μια κάρτα SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Η κάρτα SIM δεν υπάρχει ή δεν είναι δυνατή η ανάγνωσή της. Τοποθετήστε μια κάρτα SIM."</string> + <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Η κάρτα SIM δεν μπορεί να χρησιμοποιηθεί."</string> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Η κάρτα SIM έχει απενεργοποιηθεί οριστικά."\n" Επικοινωνήστε με τον παροχέα υπηρεσιών ασύρματου δικτύου για να λάβετε μια νέα κάρτα SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Κουμπί προηγούμενου κομματιού"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Κουμπί επόμενου κομματιού"</string> @@ -746,14 +778,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ΑΒΓ"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"χαρακτήρας"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"λέξη"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"σύνδεσμος"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"γραμμή"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Η εργοστασιακή δοκιμή απέτυχε"</string> @@ -783,12 +811,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Ενορία"</string> <string name="autofill_area" msgid="3547409050889952423">"Περιοχή"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Εμιράτο"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ανάγνωση ιστορικού και σελιδοδεικτών προγράμματος περιήγησης"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ανάγνωση των σελιδοδεικτών και του ιστορικού ιστού σας"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Επιτρέπει στην εφαρμογή την ανάγνωση όλων των διευθύνσεων URL τις οποίες έχει επισκεφτεί το Πρόγραμμα περιήγησης, καθώς και όλων των σελιδοδεικτών του Προγράμματος περιήγησης."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"εγγραφή ιστορικού και σελιδοδεικτών προγράμματος περιήγησης"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"εγγραφή σελιδοδεικτών και ιστορικού ιστού"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού ή σελιδοδεικτών του Προγράμματος περιήγησης που βρίσκεται αποθηκευμένο στο tablet σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιούν αυτήν τη δυνατότητα για τη διαγραφή ή τροποποίηση των δεδομένων του Προγράμματος περιήγησής σας."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού ή σελιδοδεικτών του Προγράμματος περιήγησης που βρίσκεται αποθηκευμένο στο τηλέφωνό σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιούν αυτήν τη δυνατότητα για τη διαγραφή ή τροποποίηση των δεδομένων του Προγράμματος περιήγησής σας."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"ρύθμιση ειδοποίησης σε ξυπνητήρι"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"ρύθμιση ξυπνητηριού"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Επιτρέπει στην εφαρμογή τη ρύθμιση μιας ειδοποίησης σε μια εγκατεστημένη εφαρμογή ξυπνητηριού. Ορισμένες εφαρμογές ξυπνητηριού ενδέχεται να μην μπορούν να ενσωματώσουν αυτήν τη λειτουργία."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"προσθήκη τηλεφωνητή"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Επιτρέπει στην εφαρμογή να προσθέτει μηνύματα στα εισερχόμενα του αυτόματου τηλεφωνητή σας."</string> @@ -1049,7 +1077,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Ορισμός"</string> <string name="date_time_done" msgid="2507683751759308828">"Τέλος"</string> <string name="default_permission_group" msgid="2690160991405646128">"Προεπιλεγμένο"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ΝΕΟ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"ΝΕΟ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Δεν απαιτούνται άδειες"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Απόκρυψη"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Εμφάνιση όλων"</b></string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 96ae05fff9ce..16b260740b47 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Your tablet will shut down."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Your phone will shut down."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Do you want to shut down?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reboot to safe mode"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Do you want to reboot into safe mode? This will disable all third-party applications that you have installed. They will be restored when you reboot again."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Recent"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"No recent apps"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Tablet options"</string> @@ -170,12 +168,43 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Your messages"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Read and write your SMS, email and other messages."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Your personal information"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direct access to your contacts and calendar stored on the tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direct access to your contacts and calendar stored on the phone."</string> + <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direct access to information about you, stored in on your contact card."</string> + <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Your social information"</string> + <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direct access to information about your contacts and social connections."</string> <string name="permgrouplab_location" msgid="635149742436692049">"Your location"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitor your physical location."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Network communication"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Access various network features."</string> + <string name="permgrouplab_shortRangeNetwork" msgid="4504840216096355984">"Bluetooth and NFC"</string> + <string name="permgroupdesc_shortRangeNetwork" msgid="8821013030346680806">"Access Bluetooth or NFC networks and devices."</string> + <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio Settings"</string> + <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Change audio settings."</string> + <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Affects Battery"</string> + <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Use features that can quickly drain battery."</string> + <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string> + <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direct access to calendar and events."</string> + <string name="permgrouplab_dictionary" msgid="8114410334955871144">"User Dictionary"</string> + <string name="permgroupdesc_dictionary" msgid="40926483968949978">"Direct access to the user dictionary."</string> + <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bookmarks and History"</string> + <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direct access to bookmarks and browser history."</string> + <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string> + <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Set the alarm clock."</string> + <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Voicemail"</string> + <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direct access to voicemail."</string> + <string name="permgrouplab_microphone" msgid="171539900250043464">"Microphone"</string> + <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direct access to the microphone to record audio."</string> + <string name="permgrouplab_camera" msgid="4820372495894586615">"Camera"</string> + <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direct access to camera for image or video capture."</string> + <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Your applications information"</string> + <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Ability to affect behaviour of other applications on your device."</string> + <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Wallpaper"</string> + <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Change the device wallpaper settings."</string> + <string name="permgrouplab_systemClock" msgid="406535759236612992">"Clock"</string> + <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Change the device time or timezone."</string> + <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Status Bar"</string> + <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Change the device status bar settings."</string> + <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sync Settings"</string> + <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Access to the sync settings."</string> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Your accounts"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Access the available accounts."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware controls"</string> @@ -186,6 +215,8 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Lower-level access and control of the system."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Development tools"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Features only needed for app developers."</string> + <string name="permgrouplab_display" msgid="4279909676036402636">"Other Application UI"</string> + <string name="permgroupdesc_display" msgid="6051002031933013714">"Effect the UI of other applications."</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Storage"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Access the USB storage."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Access the SD card."</string> @@ -195,11 +226,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Allows the app to be the status bar."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expand/collapse status bar"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Allows the app to expand or collapse the status bar."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"intercept outgoing calls"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"reroute outgoing calls"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Allows the app to process outgoing calls and change the number to be dialled. Malicious apps may monitor, redirect or prevent outgoing calls."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"receive SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"receive text messages (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Allows the app to receive and process SMS messages. Malicious apps may monitor your messages or delete them without showing them to you."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"receive MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"receive text messages (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Allows the app to receive and process MMS messages. Malicious apps may monitor your messages or delete them without showing them to you."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"receive emergency broadcasts"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Allows the app to receive and process emergency broadcast messages. This permission is only available for system apps."</string> @@ -209,16 +240,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Allows the app to send SMS messages. Malicious apps may cost you money by sending messages without your confirmation."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"send SMS messages with no confirmation"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Allows the app to send SMS messages. Malicious apps may cost you money by sending messages without your confirmation."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"read SMS or MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"read your text messages (SMS or MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Allows the app to read SMS messages stored on your tablet or SIM card. Malicious apps may read your confidential messages."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Allows the app to read SMS messages stored on your phone or SIM card. Malicious apps may read your confidential messages."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"edit SMS or MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"edit your text messages (SMS or MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Allows the app to write to SMS messages stored on your tablet or SIM card. Malicious apps may delete your messages."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Allows the app to write to SMS messages stored on your phone or SIM card. Malicious apps may delete your messages."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"receive WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"receive text messages (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Allows the app to receive and process WAP messages. Malicious apps may monitor your messages or delete them without showing them to you."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"retrieve running apps"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Allows the app to retrieve information about currently and recently running tasks. Malicious apps may discover private information about other apps."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"retrieve details of running apps"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Allows the app to retrieve detailed information about currently and recently running tasks. Malicious apps may discover private information about other apps."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"re-order running apps"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Allows the app to move tasks to the foreground and background. Malicious apps may force themselves to the front without your control."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"stop running apps"</string> @@ -229,11 +262,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Allows the app to control the screen compatibility mode of other applications. Malicious applications may break the behaviour of other applications."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"enable app debugging"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Allows the app to turn on debugging for another app. Malicious apps may use this to kill other apps."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"change your UI settings"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"change system display settings"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Allows the app to change the current configuration, such as the locale or overall font size."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"enable car mode"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Allows the app to enable the car mode."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"kill background processes"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"close other apps"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Allows the app to kill background processes of other apps, even if memory isn\'t low."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"force stop other apps"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Allows the app to forcibly stop other apps."</string> @@ -257,7 +290,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Allows the app to broadcast a notification that a WAP PUSH message has been received. Malicious apps may use this to forge MMS message receipt or to silently replace the content of any web page with malicious variants."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limit number of running processes"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Allows the app to control the maximum number of processes that will run. Never needed for normal apps."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"make all background apps close"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"force background apps to close"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Allows the app to control whether activities are always finished as soon as they go to the background. Never needed for normal apps."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modify battery statistics"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Allows the app to modify collected battery statistics. Not for use by normal apps."</string> @@ -267,7 +300,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Allows the app to launch the full backup confirmation UI. Not to be used by any app."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"display unauthorised windows"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Allows the app to create windows that are intended to be used by the internal system user interface. Not for use by normal apps."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"display system-level alerts"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"draw over other apps"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Allows the app to show system alert windows. Malicious apps may take over the entire screen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modify global animation speed"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Allows the app to change the global animation speed (faster or slower animations) at any time."</string> @@ -329,37 +362,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Allows an application to grant or revoke specific permissions for it or other applications. Malicious applications may use this to access features for which you have not granted them permission."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"set preferred apps"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Allows the app to modify your preferred apps. Malicious apps may silently change the apps that are run, spoofing your existing apps to collect private data from you."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modify global system settings"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modify system settings"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Allows the app to modify the system\'s settings data. Malicious apps may corrupt your system\'s configuration."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modify secure system settings"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Allows the app to modify the system\'s secure settings data. Not for use by normal apps."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modify the Google services map"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Allows the app to modify the Google services map. Not for use by normal apps."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatically start at boot"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"run at startup"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the tablet and allow the app to slow down the overall tablet by always running."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"send sticky broadcast"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Allows the app to send sticky broadcasts, which remain after the broadcast ends. Malicious apps may make the tablet slow or unstable by causing it to use too much memory."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Allows the app to send sticky broadcasts, which remain after the broadcast ends. Malicious apps may make the phone slow or unstable by causing it to use too much memory."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"read contact data"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"write contact data"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"read your contacts"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Allows the app to read all the data about your contacts stored on your tablet, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps can use this permission to send your contact data to other people."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Allows the app to read all the data about your contacts stored on your phone, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps can use this permission to send your contact data to other people."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modify your contacts"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Allows the app to modify the data about your contacts stored on your tablet, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps may use this to erase or modify your contact data."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Allows the app to modify the data about your contacts stored on your phone, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps may use this to erase or modify your contact data."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"read call log"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Allows the app to read your tablet\'s call log, including data about incoming and outgoing calls. Malicious apps may use this to send your data to other people."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Allows the app to read your phone\'s call log, including data about incoming and outgoing calls. Malicious apps may use this to send your data to other people."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"write call log"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Allows the app to modify your tablet\'s call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Allows the app to modify your phone\'s call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"read your profile data"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"read your own contact card"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Allows the app to read personal profile information stored on your device, such as your name and contact information. This means the app can identify you and send your profile information to others."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"write to your profile data"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modify your own contact card"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Allows the app to change or add to personal profile information stored on your device, such as your name and contact information. This means that other apps can identify you and send your profile information to others."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"read your social stream"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Allows the app to access and sync social updates from you and your friends. Malicious apps may use this to read private communications between you and your friends on social networks."</string> @@ -400,9 +429,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"force phone reboot"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Allows the app to force the tablet to reboot."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Allows the app to force the phone to reboot."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"mount and unmount file systems"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"access USB storage filesystem"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"access SD Card filesystem"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Allows the app to mount and unmount file systems for removable storage."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"format external storage"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"Erase USB storage"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"erase SD Card"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Allows the app to format removable storage."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"get information on internal storage"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Allows the application to access information on internal storage."</string> @@ -414,7 +445,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Allows the app to mount/unmount internal storage."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"rename internal storage"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Allows the app to rename internal storage."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"control vibrator"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"control vibration"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Allows the app to control the vibrator."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"control flashlight"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Allows the app to control the flashlight."</string> @@ -439,7 +470,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Allows the app to tell the system which widgets can be used by which app. An app with this permission can give other apps access to personal data. Not for use by normal apps."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modify phone status"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Allows the app to control the phone features of the device. An app with this permission can switch networks, turn the phone radio on and off and the like without ever notifying you."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"read phone state and identity"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"read phone status and identity"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Allows the app to access the phone features of the device. An app with this permission can determine the phone number and serial number of this phone, whether a call is active, the number that call is connected to, etc."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"prevent tablet from sleeping"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"prevent phone from sleeping"</string> @@ -454,7 +485,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Run as a low-level manufacturer test, allowing complete access to the phone hardware. Only available when a phone is running in manufacturer test mode."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"set wallpaper"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Allows the app to set the system wallpaper."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"set wallpaper size hints"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"adjust your wallpaper size"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Allows the app to set the system wallpaper size hints."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"reset system to factory defaults"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Allows the app to completely reset the system to its factory settings, erasing all data, configuration and installed apps."</string> @@ -466,16 +497,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Allows the app to change the phone\'s time zone."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"act as the Account Manager Service"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Allows the app to make calls to Account Authenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"discover known accounts"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"find accounts on the device"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Allows the app to get the list of accounts known by the tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Allows the app to get the list of accounts known by the phone."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"act as an account authenticator"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"create accounts and set passwords"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Allows the app to use the account authenticator capabilities of the Account Manager, including creating accounts and getting and setting their passwords."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"manage the accounts list"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"add or remove accounts"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Allows the app to perform operations like adding and removing accounts, and deleting their password."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"use the authentication credentials of an account"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"use accounts on the device"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Allows the app to request authentication tokens."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"view network status"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"view network connections"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Allows the app to view the state of all networks."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"full Internet access"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Allows the app to create network sockets."</string> @@ -487,29 +518,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Allows the app to change the state of tethered network connectivity."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"change background data usage setting"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Allows the app to change the background data usage setting."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"view Wi-Fi status"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"view WiFi connections"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Allows the app to view the information about the state of Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"change Wi-Fi status"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"connect and disconnect from WiFi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Allows the app to connect to and disconnect from Wi-Fi access points and to make changes to configured Wi-Fi networks."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"allow Wi-Fi Multicast reception"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Allows the app to receive packets not directly addressed to your device. This can be useful when discovering services offered near by. It uses more power than the non-multicast mode."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth administration"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"access Bluetooth settings"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Allows the app to configure the local Bluetooth tablet and to discover and pair with remote devices."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Allows the app to configure the local Bluetooth phone and to discover and pair with remote devices."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"view WiMAX state"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"View WiMAX connections"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Allows the app to view the information about the state of WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"change WiMAX state"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Allows the app to connect to and disconnect from WiMAX network."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"create Bluetooth connections"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"pair with Bluetooth devices"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Allows the app to view the configuration of the local Bluetooth tablet, and to make and accept connections with paired devices."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Allows the app to view the configuration of the local Bluetooth phone, and to make and accept connections with paired devices."</string> <string name="permlab_nfc" msgid="4423351274757876953">"control Near-Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Allows the app to communicate with Near Field Communication (NFC) tags, cards and readers."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"disable key lock"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"disable your screen lock"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Allows the app to disable the keypad lock and any associated password security. A legitimate example of this is the phone disabling the keypad lock when receiving an incoming phone call, then re-enabling the keypad lock when the call has finished."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"read sync settings"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Allows the app to read the sync settings, such as whether sync is enabled for the People app."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"write sync settings"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"toggle sync on and off"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Allows the app to modify the sync settings, such as whether sync is enabled for the People app."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"read sync statistics"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Allows the app to read the sync stats; e.g. the history of syncs that have occurred."</string> @@ -517,16 +548,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Allows the app to get details about the currently synced feeds."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"write subscribed feeds"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Allows the app to modify your currently synced feeds. Malicious apps may change your synced feeds."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"read user-defined dictionary"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"read terms you added to the dictionary"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Allows the app to read any private words, names and phrases that the user may have stored in the user dictionary."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"write to user-defined dictionary"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Allows the app to write new words into the user dictionary."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"read USB storage contents"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"read SD card contents"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Allows the app to read contents of USB storage."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Allows the app to read contents of SD card."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modify/delete USB storage contents"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modify/delete SD card contents"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"read the contents of your USB storage"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"read the contents of your SD card"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Allows the app to read contents of USB storage, which may include photos and media."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Allows the app to read contents of SD card, which may include photos and media."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modify or delete the contents of your USB storage"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modify or delete the contents of your SD card"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Allows the app to write to the USB storage."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Allows the app to write to the SD card."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modify/delete internal media storage contents"</string> @@ -704,6 +735,7 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No SIM card in phone."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insert a SIM card."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"The SIM card is missing or not readable. Insert a SIM card."</string> + <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Unusable SIM card."</string> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Your SIM card has been permanently disabled."\n" Contact your wireless service provider for another SIM card."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Previous track button"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Next-track button"</string> @@ -746,14 +778,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"character"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"word"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"line"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Factory test failed"</string> @@ -783,12 +811,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Parish"</string> <string name="autofill_area" msgid="3547409050889952423">"Area"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"read Browser\'s history and bookmarks"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"read your Web bookmarks and history"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Allows the app to read all the URLs that the Browser has visited and all of the Browser\'s bookmarks."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"write Browser\'s history and bookmarks"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"write web bookmarks and history"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. Malicious apps may use this to erase or modify your Browser\'s data."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. Malicious apps may use this to erase or modify your Browser\'s data."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"set alarm in alarm clock"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"set an alarm"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"add voicemail"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Allows the app to add messages to your voicemail inbox."</string> @@ -1049,7 +1077,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Set"</string> <string name="date_time_done" msgid="2507683751759308828">"Done"</string> <string name="default_permission_group" msgid="2690160991405646128">"Default"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NEW: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NEW: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"No permission required"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Hide"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Show all"</b></string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 79c72f41e955..edea70e2fcb0 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tu tablet se apagará."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Tu dispositivo se apagará."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"¿Deseas apagarlo?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reiniciar en modo seguro"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"¿Deseas reiniciar el dispositivo en modo seguro? Las aplicaciones de terceros que instalaste se desactivarán y se restablecerán cuando vuelvas a reiniciar el dispositivo."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Reciente"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"No hay aplicaciones recientes."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opciones de tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Tus mensajes"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Lee y escribe tus SMS, mensajes de correo y otros mensajes."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Tu información personal"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acceso directo a los contactos y calendario guardados en tu dispositivo."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acceso directo a tus contactos y calendario guardado en el dispositivo."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Tu ubicación"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Controlar tu ubicación física"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicación de red"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Acceder a distintas funciones de red"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Tus cuentas"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acceder a las cuentas disponibles."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acceso y control de nivel más bajo del sistema."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Herramientas de desarrollo"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funciones únicamente necesarias para los programadores de aplicaciones."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Espacio de almacenamiento"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acceder al almacenamiento USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que la aplicación sea la barra de estado."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir o reducir la barra de estado"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite que la aplicación muestre y oculte la barra de estado."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptar llamadas salientes"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redireccionar llamadas salientes"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que la aplicación procese llamadas salientes y cambie el número que se va a marcar. Las aplicaciones maliciosas pueden controlar, redireccionar o impedir las llamadas salientes."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"recibir SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"recibir mensajes de texto (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que la aplicación reciba y procese mensajes SMS. Las aplicaciones maliciosas pueden controlar tus mensajes o eliminarlos sin mostrártelos."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"recibir MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"recibir mensajes de texto (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que la aplicación reciba y procese mensajes MMS. Las aplicaciones maliciosas pueden controlar tus mensajes o eliminarlos sin mostrártelos."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recibir mensajes de emergencia"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite que la aplicación reciba y procese mensajes de emergencia. Este permiso sólo está disponible para las aplicaciones del sistema."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Permite que la aplicación envíe mensajes SMS. Las aplicaciones maliciosas pueden generar gastos a causa del envío de mensajes sin tu confirmación."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"Enviar mensajes SMS sin confirmación"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que la aplicación envíe mensajes SMS. Las aplicaciones maliciosas pueden generar gastos a causa del envío de mensajes sin tu confirmación."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"leer SMS o MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"leer tus mensajes de texto (SMS o MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que la aplicación lea mensajes SMS almacenados en tu tableta o tarjeta SIM. Las aplicaciones maliciosas pueden leer tus mensajes confidenciales."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que la aplicación lea mensajes SMS almacenados en tu dispositivo o tarjeta SIM. Las aplicaciones maliciosas pueden leer tus mensajes confidenciales."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"editar SMS o MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"editar tus mensajes de texto (SMS o MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que la aplicación escriba en mensajes SMS almacenados en tu tableta o tarjeta SIM. Las aplicaciones maliciosas pueden eliminar tus mensajes."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que la aplicación escriba en mensajes SMS almacenados en tu dispositivo o tarjeta SIM. Las aplicaciones maliciosas pueden eliminar tus mensajes."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"recibir WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recibir mensajes de texto (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que la aplicación reciba y procese mensajes WAP. Las aplicaciones maliciosas pueden controlar tus mensajes o eliminarlos sin mostrártelos."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicaciones en ejecución"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permite que la aplicación recupere información sobre tareas en ejecución y recientemente ejecutadas. Las aplicaciones maliciosas pueden descubrir información privada sobre otras aplicaciones."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recuperar información sobre las aplicaciones en ejecución"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite que la aplicación recupere información detallada sobre tareas en ejecución y recientemente ejecutadas. Las aplicaciones malintencionadas pueden hallar información privada sobre otras aplicaciones."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"reorganizar aplicaciones en ejecución"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permite que la aplicación mueva tareas al primero o segundo plano. Las aplicaciones maliciosas pueden forzar su paso al primer plano sin que tú las controles."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"detener las aplicaciones en ejecución"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite a la aplicación controlar el modo de compatibilidad de las pantallas de otras aplicaciones. Las aplicaciones malintencionadas pueden interrumpir el funcionamiento de otras aplicaciones."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"activar depuración de aplicación"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que la aplicación active la depuración de otra aplicación. Las aplicaciones malintencionadas pueden usar este permiso para interrumpir la ejecución de otras aplicaciones."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"cambiar tu configuración de la interfaz de usuario"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"cambiar la configuración de visualización del sistema"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que la aplicación cambie la configuración actual como, por ejemplo, la configuración regional o el tamaño de fuente general."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"activar el modo de auto"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que la aplicación habilite el modo coche."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"eliminar los procesos de fondo"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"cerrar otras aplicaciones"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite que la aplicación elimine procesos de otras aplicaciones que se ejecutan en segundo plano, aunque haya suficiente memoria."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"forzar la detención de otras aplicaciones"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite que la aplicación fuerce la detención de otras aplicaciones."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que la aplicación transmita una notificación acerca de la recepción de un mensaje WAP PUSH. Las aplicaciones maliciosas pueden utilizar este permiso para falsificar la recepción de mensajes MMS o para reemplazar sin aviso el contenido de cualquier página web con variantes maliciosas."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar la cantidad de procesos en ejecución"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite que la aplicación controle la cantidad máxima de procesos que se ejecutarán. Las aplicaciones normales no deben utilizar este permiso."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"cerrar todas las aplicaciones que se ejecutan en segundo plano"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forzar el cierre de aplicaciones de fondo"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que la aplicación controle si las actividades se deben finalizar al pasar a segundo plano. Las aplicaciones normales no deben utilizar este permiso."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modificar la estadística de la batería"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite que la aplicación modifique las estadísticas recopiladas sobre la batería. Las aplicaciones normales no deben utilizar este permiso."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que la aplicación inicie la IU de confirmación de copia de seguridad completa. No todas las aplicaciones pueden utilizar este permiso."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"mostrar ventanas no autorizadas"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que la aplicación cree ventanas para la interfaz de usuario interna del sistema. Las aplicaciones normales no deben usar este permiso."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"mostrar alertas a nivel del sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"destacar sobre otras aplicaciones"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que la aplicación muestre las ventanas de alerta del sistema. Las aplicaciones maliciosas pueden controlar toda la pantalla."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar la velocidad de la animación global"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que la aplicación cambie la velocidad de animación global (animaciones más rápidas o más lentas) en cualquier momento."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite a una aplicación otorgar permisos específicos a otras aplicaciones, autoconcedérselos o revocarlos. Las aplicaciones maliciosas pueden así acceder a funciones para las que no les otorgaste permiso."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"establecer aplicaciones preferidas"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite que la aplicación modifique tus aplicaciones preferidas. Las aplicaciones maliciosas pueden modificar sin aviso las aplicaciones que se ejecutan y así engañar a tus aplicaciones existentes para que recopilen tu información privada."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modificar la configuración global del sistema"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar la configuración del sistema"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite que la aplicación modifique los datos de configuración del sistema. Las aplicaciones maliciosas pueden dañar la configuración del sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar la configuración segura del sistema"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que la aplicación modifique los datos de la configuración segura del sistema. Las aplicaciones normales no deben utilizar este permiso."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modificar el mapa de servicios de Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que la aplicación modifique el mapa de servicios de Google. Las aplicaciones normales no deben utilizar este permiso."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"ejecutar automáticamente al iniciar"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ejecutarse al inicio"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que la aplicación se inicie en cuanto el sistema haya finalizado la inicialización. Esto puede ocasionar que la tableta tarde más en inicializarse y que la aplicación ralentice el funcionamiento general de la tableta al estar en ejecución constante."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que la aplicación se inicie en cuanto el sistema haya finalizado la inicialización. Esto puede ocasionar que el dispositivo tarde más en inicializarse y que la aplicación ralentice el funcionamiento general del dispositivo al estar en ejecución constante."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar emisiones pegajosas"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que la aplicación envíe transmisiones persistentes que permanecen luego de que finaliza la transmisión. Las aplicaciones maliciosas pueden hacer que la tableta funcione más lentamente o de manera inestable al forzarla a utilizar mucha memoria."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que la aplicación envíe transmisiones persistentes que permanecen luego de que finaliza la transmisión. Las aplicaciones maliciosas pueden hacer que el dispositivo funcione más lento o de manera inestable al forzarlo a utilizar mucha memoria."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"leer datos de contacto"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"escribir datos de contacto"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"leer tus contactos"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite a la aplicación leer todos los datos sobre los contactos almacenados en tu tableta, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar tus datos de contacto a otras personas."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite a la aplicación leer todos los datos sobre los contactos almacenados en tu dispositivo, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar tus datos de contacto a otras personas."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar tus contactos"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite a la aplicación modificar los datos sobre los contactos almacenados en tu tableta, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizarlo para borrar o modificar tus datos de contacto."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite a la aplicación modificar los datos sobre los contactos almacenados en tu dispositivo, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizarlo para borrar o modificar tus datos de contacto."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"leer el registro de llamadas"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite que la aplicación lea el registro de llamadas de la tableta, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para enviar tus datos a otros usuarios."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite que la aplicación lea el registro de llamadas del dispositivo, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para enviar tus datos a otros usuarios."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"escribir en el registro de llamadas"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite que la aplicación modifique el registro de llamadas de la tableta, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite que la aplicación modifique el registro de llamadas del dispositivo, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"Leer tus datos de perfil"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"leer tarjeta contacto propia"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que la aplicación lea la información de perfil almacenada en tu dispositivo, como tu nombre e información de contacto. Esto significa que la aplicación puede identificarte y enviar tu información de perfil a otros."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"Escrib. en datos de tu perfil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modif. tarjeta contacto propia"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que la aplicación realice cambios o adiciones a la información personal almacenada en tu dispositivo, como tu nombre e información de contacto. Esto significa que otras aplicaciones pueden identificarte y enviar tu información de perfil a otros."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"Lectura de tu muro social"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que la aplicación acceda y sincronice tus actualizaciones sociales y las de tus amigos. Las aplicaciones maliciosas pueden usar este permiso para leer las comunicaciones privadas que mantienes con tus amigos en las redes sociales."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forzar reinicio del dispositivo"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que la aplicación provoque el reinicio de la tableta."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que la aplicación fuerce el reinicio del dispositivo."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montar y desmontar filesystems"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acceder sistema de archivos USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"acceder al sistema de archivos de la tarjeta SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite que la aplicación active y desactive sistemas de archivos para un almacenamiento extraíble."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"espacio de almacenamiento externo del formato"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"borrar almacenamiento USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"borrar tarjeta SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite que la aplicación formatee un almacenamiento extraíble."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"obtener información sobre el almacenamiento interno"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permite que la aplicación obtenga información sobre el almacenamiento interno."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite que la aplicación active o desactive el almacenamiento interno."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"cambiar el nombre del almacenamiento interno"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite que la aplicación cambie el nombre del almacenamiento interno."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"vibrador de control"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"controlar la vibración"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permite que la aplicación controle la vibración."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"controlar linterna"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permite que la aplicación controle la función de linterna."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que la aplicación le indique al sistema qué widgets se pueden utilizar con cada aplicación. Una aplicación con este permiso puede proporcionar acceso a información personal por parte de otras aplicaciones. Las aplicaciones normales no deben utilizar este permiso."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar el estado del dispositivo"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que la aplicación controle las funciones de teléfono del dispositivo. Una aplicación con este permiso puede cambiar redes, encender y apagar la radio del teléfono y tareas similares sin siquiera notificártelo."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"leer el estado del dispositivo y la identidad"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"leer la identidad y el estado del dispositivo"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que la aplicación acceda a las funciones de teléfono del dispositivo. Una aplicación con este permiso puede determinar el número de teléfono y el número de serie del teléfono, si hay una llamada activa, el número al que esa llamada está conectada, etc."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"evitar que el tablet entre en estado de inactividad"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"evitar que el dispositivo entre en estado de inactividad"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Se ejecuta como una prueba de fábrica de bajo nivel que permite un acceso completo al hardware del dispositivo. Sólo disponible cuando un dispositivo se ejecuta en el modo de prueba de fábrica."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"establecer papel tapiz"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite que la aplicación establezca el fondo de pantalla del sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"establecer sugerencias de tamaño del papel tapiz"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar el tamaño del fondo de pantalla"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que la aplicación establezca el tamaño del fondo de pantalla del sistema."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"restablecer el sistema a las configuraciones predeterminadas de fábrica"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que la aplicación restablezca por completo el sistema a su configuración de fábrica al eliminar todos los datos, la configuración y las aplicaciones instaladas."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que la aplicación cambie la zona horaria del dispositivo."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"actuar como cuenta, administrador o servicio"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que la aplicación haga llamadas a los autenticadores de cuentas."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"descubrir cuentas conocidas"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"buscar cuentas en el dispositivo"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que la aplicación obtenga una lista de cuentas reconocidas por la tableta."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que la aplicación obtenga una lista de cuentas reconocidas por el dispositivo."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"actuar como autenticador de cuenta"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"crear cuentas y establecer contraseñas"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que la aplicación utilice las capacidades del autenticador de cuentas del administrador de cuentas, incluida la creación de cuentas y la obtención y configuración de sus contraseñas."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"administrar la lista de cuentas"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"agregar o eliminar cuentas"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que la aplicación ejecute operaciones, como agregar y eliminar cuentas, y eliminar sus contraseñas."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"usar las credenciales de autenticación de una cuenta"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"utilizar las cuentas del dispositivo"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que la aplicación solicite tokens de autenticación."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ver estado de la red"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver conexiones de red"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite que la aplicación vea el estado de todas las redes."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acceso total a Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite que la aplicación cree conectores de red."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que la aplicación cambie el estado de la conectividad de anclaje a la red."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"cambiar la configuración del uso de datos del fondo"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite que la aplicación cambe la configuración de uso de los datos de referencia."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"ver el estado de Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver conexiones Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite que la aplicación vea la información sobre el estado de la conexión Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"cambiar el estado de Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"conectarse y desconectarse de la red Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite que la aplicación se conecte y desconecte de puntos de acceso Wi-Fi, y que realice modificaciones en las redes Wi-Fi configuradas."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recepción de multidifusión Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que la aplicación reciba paquetes que no están dirigidos directamente a tu dispositivo. Esto puede ser útil para descubrir servicios cercanos. Utiliza más energia que el modo que no es de multidifusión."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Administración de Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"acceder a la configuración de Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite que la aplicación configure la tableta Bluetooth local y descubra y se sincronice con dispositivos remotos."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que la aplicación configure el dispositivo Bluetooth local y descubra y se sincronice con dispositivos remotos."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Ver el estado de WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver conexiones WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite que la aplicación consulte la información sobre el estado de WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Cambiar el estado de WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que la aplicación se conecte a una red WiMAX y se desconecte de ella."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"crear conexiones de Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"vincular con dispositivos Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que la aplicación vea la configuración de la tableta Bluetooth local, y que cree y acepte conexiones con los dispositivos sincronizados."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que la aplicación vea la configuración del dispositivo Bluetooth local, y que cree y acepte conexiones con los dispositivos sincronizados."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controlar la Transmisión de datos en proximidad"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permite que la aplicación se comunique con lectores, tarjetas y etiquetas de Comunicación de campo cercano (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"desactivar el bloqueo"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desactivar el bloqueo de pantalla"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite que la aplicación inhabilite el bloqueo del teclado y cualquier protección con contraseña asociada. Un ejemplo de este permiso es la inhabilitación por parte del dispositivo del bloqueo del teclado al recibir una llamada telefónica entrante y su posterior habilitación cuando finaliza la llamada."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"leer la configuración de sincronización"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que la aplicación lea la configuración de sincronización; por ejemplo, si está habilitada la sincronización para la aplicación Personas."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"escribir configuración de sincronización"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activar y desactivar la sincronización"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que la aplicación modifique la configuración de sincronización; por ejemplo, si está habilitada la sincronización para la aplicación Personas."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"leer estadística de sincronización"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite que la aplicación lea las estadísticas de sincronización; por ejemplo, el historial de sincronizaciones que se han realizado."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite que la aplicación obtenga detalles sobre los feeds sincronizados en este momento."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escribir canales suscritos"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite que la aplicación modifique los feeds actualmente sincronizados. Las aplicaciones maliciosas pueden cambiar tus feeds sincronizados."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"consultar el diccionario definido por el usuario"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"leer los términos que agregaste al diccionario"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que la aplicación lea cualquier palabra, nombre o frase de carácter privado que el usuario haya almacenado en su diccionario."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"agregar al diccionario definido por el usuario"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que la aplicación ingrese palabras nuevas en el diccionario del usuario."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"Leer almacenamiento USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"Leer el contenido de la tarjeta SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permite leer USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permite a la aplicación leer el contenido de la tarjeta SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar o eliminar el contenido del almacenamiento USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/eliminar el contenido de la tarjeta SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"leer contenido dispositivo USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"leer el contenido de tu tarjeta SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permite leer contenido USB."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que la aplicación lea el contenido de la tarjeta SD que puede incluir fotos y archivos multimedia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificar/borrar contenido USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modificar o borrar el contenido de tu tarjeta SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite que la aplicación escriba en el almacenamiento USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Admite que la aplicación escriba en la tarjeta SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modificar/eliminar los contenidos del almacenamientos de medios internos"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No hay tarjeta SIM en el dispositivo."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserta una tarjeta SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Falta la tarjeta SIM o no se puede leer. Introduce una tarjeta SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Tu tarjeta SIM se ha inhabilitado de forma permanente."\n" Ponte en contacto con tu proveedor de servicios inalámbricos para obtener otra tarjeta SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botón para pista anterior"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botón para pista siguiente"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"Carácter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"Palabra"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"Vínculo"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"Línea"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Error en la prueba de fábrica"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Circunscripción"</string> <string name="autofill_area" msgid="3547409050889952423">"Área"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"leer historial y marcadores del navegador"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"leer tus marcadores web y el historial"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que la aplicación consulte todos los marcadores del navegador y todas las URL que haya visitado."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"escribir historial y marcadores del navegador"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"escribir marcadores web e historial"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que la aplicación modifique el historial o los marcadores del navegador guardados en tu tableta. Las aplicaciones maliciosas pueden utilizar este permiso para borrar o modificar los datos de tu navegador."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que la aplicación modifique el historial o los marcadores del navegador guardados en tu dispositivo. Las aplicaciones maliciosas pueden utilizar este permiso para borrar o modificar los datos de tu navegador."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"configurar alarma en reloj alarma"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"programar una alarma"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que la aplicación establezca una alarma en una aplicación de alarma instalada. Es posible que algunas aplicaciones de alarma no incluyan esta función."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"agregar correo de voz"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que la aplicación agregue mensajes a la bandeja de entrada de tu buzón de voz."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Establecer"</string> <string name="date_time_done" msgid="2507683751759308828">"Listo"</string> <string name="default_permission_group" msgid="2690160991405646128">"Predeterminado"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUEVO: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUEVO: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"No se requieren permisos"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar todos"</b></string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 1b378364e9ee..653671d0e21b 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"El tablet se apagará."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"El teléfono se apagará."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"¿Seguro que quieres apagar el teléfono?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reiniciar en modo seguro"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"¿Quieres reiniciar el sistema en modo seguro? Se inhabilitarán todas las aplicaciones externas que hayas instalado. Esas aplicaciones se restaurarán la próxima vez que reinicies del sistema."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Reciente"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"No hay aplicaciones recientes."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opciones del tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Tus mensajes"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Leer y escribir SMS, correos electrónicos y otros mensajes"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Tu información personal"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accede directamente al calendario y a los contactos almacenados en el tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acceso directo al calendario y a los contactos almacenados en el teléfono"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Tu ubicación"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Controlar tu ubicación física"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicación de red"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Acceder a distintas funciones de red"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Tus cuentas"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acceder a las cuentas disponibles"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acceso de nivel inferior y control del sistema"</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Herramientas de desarrollo"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funciones necesarias solo para desarrolladores de aplicaciones"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Almacenamiento"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acceso a almacenamiento USB"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD"</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que la aplicación aparezca en la barra de estado."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir/contraer la barra de estado"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite que la aplicación expanda o contraiga la barra de estado."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptar llamadas salientes"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redireccionar llamadas salientes"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que la aplicación procese las llamadas salientes y cambie el número que se va a marcar. Las aplicaciones malintencionadas pueden usar este permiso para controlar o desviar las llamadas salientes o impedir que se realicen."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"recibir SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"recibir mensajes de texto (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que la aplicación reciba y procese mensajes SMS. Las aplicaciones malintencionadas pueden controlar los mensajes o eliminarlos sin mostrarlos al usuario."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"recibir MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"recibir mensajes de texto (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que la aplicación reciba y procese mensajes MMS. Las aplicaciones malintencionadas pueden usar este permiso para controlar o eliminar los mensajes sin mostrarlos al usuario."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recibir mensajes de emergencia"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite que la aplicación reciba y procese mensajes de emergencia. Este permiso solo está disponible para las aplicaciones del sistema."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Permite que la aplicación envíe mensajes SMS. Es posible que tengas que pagar por los mensajes que las aplicaciones malintencionadas envíen sin tu confirmación."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensajes SMS sin confirmación"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que la aplicación envíe mensajes SMS. Es posible que tengas que pagar por los mensajes que las aplicaciones malintencionadas envíen sin tu confirmación."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"leer SMS o MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"leer tus mensajes de texto (SMS o MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que la aplicación lea mensajes SMS almacenados en el tablet o en la tarjeta SIM. Las aplicaciones malintencionadas pueden usar este permiso para leer los mensajes confidenciales."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que la aplicación lea los mensajes SMS almacenados en el teléfono o en la tarjeta SIM. Las aplicaciones malintencionadas pueden usar este permiso para leer mensajes confidenciales."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"editar SMS o MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"editar tus mensajes de texto (SMS o MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que la aplicación lea mensajes SMS almacenados en el tablet o en la tarjeta SIM. Las aplicaciones malintencionadas pueden leer los mensajes."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que la aplicación escriba en mensajes SMS almacenados en el teléfono o en la tarjeta SIM. Las aplicaciones malintencionadas pueden borrar los mensajes."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"recibir WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recibir mensajes de texto (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que la aplicación reciba y procese mensajes WAP. Las aplicaciones malintencionadas pueden controlar los mensajes o eliminarlos sin mostrarlos al usuario."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicaciones en ejecución"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permite que la aplicación recupere información sobre tareas que se están ejecutando en este momento o que se han ejecutado recientemente. Las aplicaciones malintencionadas pueden usar este permiso para acceder a información privada sobre otras aplicaciones."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recuperar información de aplicaciones en ejecución"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite que la aplicación recupere información sobre tareas que se están ejecutando en este momento o que se han ejecutado recientemente. Las aplicaciones malintencionadas pueden usar este servicio para acceder a información privada sobre otras aplicaciones."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"reorganizar aplicaciones en ejecución"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permite que la aplicación mueva tareas a segundo o a primer plano. Algunas aplicaciones malintencionadas pueden aparecer en primer plano sin el control del usuario."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"detener aplicaciones en ejecución"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite que la aplicación controle el modo de compatibilidad de la pantalla de otras aplicaciones. Las aplicaciones malintencionadas pueden influir de forma negativa en el funcionamiento de otras aplicaciones."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"habilitar depuración de aplicación"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que la aplicación active la depuración de otra aplicación. Las aplicaciones malintencionadas pueden usar este permiso para interrumpir la ejecución de otras aplicaciones."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"cambiar la configuración de la interfaz de usuario"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modificar ajustes de visualización del sistema"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que la aplicación cambie la configuración actual como, por ejemplo, la configuración local o el tamaño de fuente general."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"habilitar modo coche"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que la aplicación habilite el modo coche."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"interrumpir procesos en segundo plano"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"cerrar otras aplicaciones"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite que la aplicación interrumpa los procesos en segundo plano de otras aplicaciones aunque haya suficiente memoria."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"forzar la detención de otras aplicaciones"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite que la aplicación fuerce la detención de otras aplicaciones."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que la aplicación envíe una notificación cuando se haya recibido un mensaje WAP PUSH. Las aplicaciones malintencionadas pueden usar este permiso para falsificar la recepción de un mensaje MMS o para reemplazar sin aviso el contenido de cualquier página web con variantes malintencionadas."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar el número de procesos en ejecución"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite que la aplicación controle el número máximo de procesos que se ejecutarán. No es necesario nunca para las aplicaciones normales."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"hacer que se cierren todas las aplicaciones en segundo plano"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forzar el cierre de aplicaciones en segundo plano"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que la aplicación controle si las actividades finalizan siempre en cuanto pasan a segundo plano. Las aplicaciones normales nunca necesitan este permiso."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modificar estadísticas de la batería"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite que la aplicación modifique las estadísticas recopiladas sobre la batería. Las aplicaciones normales no deben usar este permiso."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que la aplicación inicie la interfaz de usuario de confirmación de copia de seguridad completa. Ninguna aplicación debe usar este permiso."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"mostrar ventanas no autorizadas"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que la aplicación cree ventanas para la interfaz de usuario interna del sistema. Las aplicaciones normales no deben usar este permiso."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"mostrar alertas de nivel del sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"destacar sobre otras aplicaciones"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que la aplicación muestre ventanas de alerta del sistema. Las aplicaciones malintencionadas pueden controlar toda la pantalla."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar velocidad de animación global"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que la aplicación cambie la velocidad de animación global (animaciones más rápidas o más lentas) en cualquier momento."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite que una aplicación conceda o revoque permisos específicos para sí misma o para otras aplicaciones. Las aplicaciones malintencionadas pueden aprovechar este permiso para acceder a funciones sin tu autorización."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"establecer aplicaciones preferidas"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite que la aplicación modifique las aplicaciones preferidas del usuario. De esta forma, las aplicaciones malintencionadas pueden cambiar sin aviso las aplicaciones que se están ejecutando y falsificarlas para obtener datos privados del usuario."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modificar la configuración global del sistema"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar los ajustes del sistema"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite que la aplicación modifique los datos de configuración del sistema. Las aplicaciones malintencionadas pueden dañar la configuración del sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar la configuración segura del sistema"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que la aplicación modifique los datos de la configuración de seguridad del sistema. Las aplicaciones normales no deben usar este permiso."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modificar la asignación de servicios de Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que la aplicación modifique la asignación de servicios de Google. Las aplicaciones normales no deben usar este permiso."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"ejecutar automáticamente al iniciar"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ejecutarse al inicio"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que la aplicación se ejecute automáticamente una vez que el sistema se ha iniciado completamente. Esto puede hacer que el tablet tarde más en iniciarse y permite que la aplicación ralentice el funcionamiento global del dispositivo."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que la aplicación se ejecute automáticamente una vez que el sistema se haya iniciado completamente. Esto puede hacer que el teléfono tarde más en iniciarse y puede permitir que la aplicación ralentice el funcionamiento global del dispositivo."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar emisión persistente"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que la aplicación envíe emisiones que permanecen en el dispositivo una vez que la emisión ha finalizado. Las aplicaciones malintencionadas pueden ralentizar el tablet o volverlo inestable al hacer que use demasiada memoria."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que la aplicación envíe emisiones persistentes, que permanecen en el dispositivo una vez que la emisión haya finalizado. Las aplicaciones malintencionadas pueden ralentizar el teléfono o volverlo inestable al hacer que use demasiada memoria."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"leer los datos de contacto"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"escribir datos de contacto"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"consultar tus contactos"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que la aplicación lea los datos de los contactos almacenados en el tablet, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar los datos de tus contactos a otros usuarios."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que la aplicación lea los datos de los contactos almacenados en el teléfono, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar los datos de tus contactos a otros usuarios."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar tus contactos"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que la aplicación modifique los datos de los contactos almacenados en el tablet, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para borrar o modificar los datos de tus contactos."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que la aplicación modifique los datos de los contactos almacenados en el teléfono, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para borrar o modificar los datos de tus contactos."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"leer el registro de llamadas"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite que la aplicación lea el registro de llamadas del tablet, incluidos datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para enviar tus datos a otros usuarios."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite que la aplicación lea el registro de llamadas del teléfono, incluidos datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para enviar tus datos a otros usuarios."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"escribir en el registro de llamadas"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite que la aplicación modifique el registro de llamadas del tablet, incluidos datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite que la aplicación modifique el registro de llamadas del teléfono, incluidos datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"acceder a datos de tu perfil"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"consultar tu propia tarjeta de contacto"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que la aplicación acceda a información del perfil personal almacenada en el dispositivo (como el nombre o la información de contacto), lo que significa que la aplicación puede identificar al usuario y enviar la información de su perfil a otros usuarios."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"escribir en datos de tu perfil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modificar tu propia tarjeta de contacto"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que la aplicación modifique la información del perfil personal almacenada en el dispositivo (como el nombre o la información de contacto) o que añada contenido a esa información, lo que significa que otras aplicaciones pueden identificar al usuario y enviar la información de su perfil a otros usuarios."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"consulta tu actividad social"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que la aplicación acceda a las actualizaciones sociales de amigos y las sincronice. Las aplicaciones malintencionadas pueden usar este permiso para leer conversaciones privadas con amigos en las redes sociales."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forzar reinicio del teléfono"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que la aplicación fuerce al tablet a reiniciarse."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que la aplicación fuerce el reinicio del teléfono."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"activar y desactivar sistemas de archivos"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acceder a sistema archivos de USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"acceder al sistema de archivos de la tarjeta SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite que la aplicación active y desactive sistemas de archivos para un almacenamiento extraíble."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatear almacenamiento externo"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"borrar almacenamiento USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"borrar tarjeta SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite que la aplicación formatee el almacenamiento extraíble."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"obtener información sobre almacenamiento interno"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permite que la aplicación obtenga información sobre el almacenamiento interno."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite que la aplicación active o desactive el almacenamiento interno."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"cambiar el nombre del almacenamiento interno"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite que la aplicación cambie el nombre del almacenamiento interno."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"controlar vibración"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"controlar la vibración"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permite que la aplicación controle la función de vibración."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"controlar linterna"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permite que la aplicación controle la función de linterna."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que la aplicación indique al sistema los widgets que puede usar cada aplicación. Una aplicación con este permiso puede proporcionar a otras aplicaciones acceso a información personal. Las aplicaciones normales no pueden usar este permiso."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado del teléfono"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que la aplicación controle las funciones de teléfono del dispositivo. Las aplicaciones que tengan este permiso pueden cambiar de red, desactivar la señal móvil, etc., sin necesidad de informar al usuario."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"leer la identidad y el estado del teléfono"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"consultar la identidad y el estado del teléfono"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que la aplicación acceda a las funciones de teléfono del dispositivo. Una aplicación con este permiso puede determinar el número de teléfono y el número de serie del teléfono, si una llamada está activa, el número al que está vinculada esa llamada, etc."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"impedir que el tablet entre en modo de suspensión"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir que el teléfono entre en modo de suspensión"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Ejecutar como prueba de fabricante de nivel inferior, permitiendo un acceso íntegro al hardware del teléfono. Solo está disponible cuando un teléfono se está ejecutando en modo de prueba."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"establecer fondo de pantalla"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite que la aplicación establezca el fondo de pantalla del sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"establecer el tamaño del fondo de pantalla"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar el tamaño del fondo de pantalla"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que la aplicación establezca el tamaño del fondo de pantalla del sistema."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"restablecer el sistema a los valores predeterminados de fábrica"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que la aplicación restablezca por completo el sistema a su configuración de fábrica borrando todos los datos, los ajustes y las aplicaciones instaladas."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que la aplicación cambie la zona horaria del teléfono."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"actuar como servicio de administrador de cuentas"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que la aplicación haga llamadas a los autenticadores de cuentas."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"ver cuentas reconocidas"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"buscar cuentas en el dispositivo"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que la aplicación obtenga una lista de cuentas reconocidas por el tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que la aplicación obtenga una lista de cuentas reconocidas por el teléfono."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"actuar como autenticador de cuentas"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"crear cuentas y establecer contraseñas"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que la aplicación utilice las funciones de autenticador de cuentas del administrador de cuentas, incluida la creación de cuentas y la obtención y el establecimiento de sus contraseñas."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"administrar la lista de cuentas"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"añadir o eliminar cuentas"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que la aplicación lleve a cabo operaciones como añadir y eliminar cuentas y eliminar su contraseña."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"utilizar las credenciales de autenticación de una cuenta"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"usar cuentas del dispositivo"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que la aplicación solicite tokens de autenticación."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ver estado de la red"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver conexiones de red"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite que la aplicación vea el estado de todas las redes."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acceso íntegro a Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite que la aplicación cree sockets de red."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que la aplicación cambie el estado de la conectividad de red de anclaje."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"cambiar configuración de uso de datos de referencia"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite que la aplicación cambie los ajustes de uso de datos de referencia."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"ver estado de la conectividad Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver conexiones Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite que la aplicación consulte la información sobre el estado de la red Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"cambiar estado de Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"conectarse a redes Wi-Fi y desconectarse"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite que la aplicación se conecte a puntos de acceso Wi-Fi y se desconecte de ellos y que modifique las redes Wi-Fi configuradas."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recepción multidifusión Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que la aplicación reciba paquetes no dirigidos directamente a tu dispositivo. Esta función puede ser útil para descubrir servicios cercanos. Utiliza más batería que el modo de no multidifusión."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"administración de Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"acceder a los ajustes de Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite que la aplicación configure el tablet Bluetooth local y que detecte dispositivos remotos y se sincronice con ellos."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que la aplicación configure el teléfono Bluetooth local y que detecte dispositivos remotos y se sincronice con ellos."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Ver estado de WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver conexiones WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite que la aplicación consulte la información sobre el estado de WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Cambiar estado de WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que la aplicación se conecte a una red WiMAX y se desconecte de ella."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"crear conexiones de Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"sincronizarse con dispositivos Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que la aplicación acceda a la configuración del tablet Bluetooth local y que establezca y acepte conexiones con los dispositivos sincronizados."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que la aplicación vea los ajustes del teléfono Bluetooth local y que cree conexiones y acepte el establecimiento de las mismas con dispositivos sincronizados."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controlar Comunicación de campo cercano (NFC)"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permite que la aplicación se comunique con lectores, tarjetas y etiquetas de Comunicación de campo cercano (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"inhabilitar bloqueo del teclado"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"inhabilitar el bloqueo de pantalla"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite que la aplicación inhabilite el bloqueo del teclado y cualquier protección con contraseña asociada. Por ejemplo, el teléfono puede inhabilitar el bloqueo del teclado cuando recibe una llamada telefónica entrante y volver a habilitarlo cuando la llamada haya finalizado."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"leer la configuración de sincronización"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que la aplicación consulte los ajustes de sincronización como, por ejemplo, si la sincronización está habilitada para los contactos."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"escribir configuración de sincronización"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activar y desactivar la sincronización"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que la aplicación modifique los ajustes de sincronización como, por ejemplo, si la sincronización está habilitada para los contactos."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"leer estadísticas de sincronización"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite que la aplicación consulte las estadísticas de sincronización como, por ejemplo, el historial de sincronizaciones realizadas."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite que la aplicación obtenga detalles sobre los feeds sincronizados actualmente."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escribir feeds a los que está suscrito el usuario"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite que la aplicación modifique los feeds sincronizados actualmente. Las aplicaciones malintencionadas pueden modificar los feeds sincronizados."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"consultar el diccionario definido por el usuario"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"consultar términos que hayas añadido al diccionario"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que la aplicación lea cualquier palabra, nombre o frase de carácter privado que el usuario haya almacenado en su diccionario."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"añadir al diccionario definido por el usuario"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que la aplicación escriba palabras nuevas en el diccionario de usuario."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"leer contenido del almacenamiento USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"leer contenido de la tarjeta SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permite que la aplicación lea contenido del almacenamiento USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permite que la aplicación lea contenidos de la tarjeta SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar/borrar contenido USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/eliminar contenido de la tarjeta SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"consultar el contenido del almacenamiento USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"consultar el contenido de la tarjeta SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permite que la aplicación lea el contenido del almacenamiento USB que puede incluir fotos y archivos multimedia."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que la aplicación lea el contenido de la tarjeta SD que puede incluir fotos y archivos multimedia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"editar o borrar contenido de USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modificar o eliminar el contenido de la tarjeta SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite escribir en el almacenamiento USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que la aplicación escriba en la tarjeta SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modificar o eliminar el contenido del almacenamiento de medios interno"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No se ha insertado ninguna tarjeta SIM en el teléfono."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserta una tarjeta SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Falta la tarjeta SIM o no se puede leer. Introduce una tarjeta SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Tu tarjeta SIM se ha inhabilitado permanentemente."\n" Para obtener otra tarjeta SIM, ponte en contacto con tu proveedor de servicios de telefonía."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botón de canción anterior"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botón de siguiente canción"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"carácter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"palabra"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"enlace"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"línea"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Fallo en la prueba de fábrica"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Distrito"</string> <string name="autofill_area" msgid="3547409050889952423">"Área"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"leer información de marcadores y del historial del navegador"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"consultar tu historial y tus marcadores web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que la aplicación consulte todos los marcadores del navegador y todas las URL que haya visitado."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"escribir en marcadores y en el historial del navegador"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"escribir en el historial y en los marcadores web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que la aplicación modifique la información de los marcadores o del historial del navegador almacenada en el dispositivo. Las aplicaciones malintencionadas pueden usar este permiso para modificar o borrar los datos del navegador."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que la aplicación modifique los marcadores o el historial del navegador almacenados en el teléfono. Las aplicaciones malintencionadas pueden usar este permiso para modificar o borrar los datos del navegador."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"establecer alarma en un reloj"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"establecer una alarma"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que la aplicación establezca una alarma en una aplicación de reloj instalada. Es posible que algunas aplicaciones de reloj no incluyan esta función."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"añadir buzón de voz"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que la aplicación añada mensajes a la bandeja de entrada del buzón de voz."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Establecer"</string> <string name="date_time_done" msgid="2507683751759308828">"Listo"</string> <string name="default_permission_group" msgid="2690160991405646128">"Predeterminado"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUEVO:"</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUEVO:"</font></string> <string name="no_permissions" msgid="7283357728219338112">"No es necesario ningún permiso"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar todos"</b></string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 0e652f3e2ce3..d944b686ca9d 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Teie sõnumid"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Teie SMS-, meili- ja muude sõnumite lugemine ja kirjutamine."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Teie isiklikud andmed"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Otsene juurdepääs tahvelarvutisse salvestatud kontaktidele ja kalendrile."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Otsene juurdepääs telefoni salvestatud kontaktidele ja kalendrile."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Teie asukoht"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Jälgige oma füüsilist asukohta."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Võrgusuhtlus"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Juurdepääs erinevatele võrgufunktsioonidele."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Teie kontod"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Juurdepääs saadaolevatele kontodele."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Riistvara juhtelemendid"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Süsteemi madalama taseme juurdepääs ja juhtimine."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Arendustööriistad"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktsioonid on vajalikud ainult rakenduste arendajatele."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Mäluruum"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Juurdepääs USB-mäluseadmele."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Juurdepääs SD-kaardile."</string> @@ -193,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Võimaldab rakendusel olla olekuriba."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"laienda/ahenda olekuriba"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Võimaldab rakendusel laiendada või ahendada olekuriba."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"katkesta väljuvad kõned"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"marsruutige väljuvad kõned uuesti"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Võimaldab rakendusel töödelda väljuvaid kõnesid ja muuta valitavat numbrit. Pahatahtlikud rakendused võivad jälgida, ümber suunata või takistada väljuvaid kõnesid."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"võta SMS vastu"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"võtke vastu tekstisõnumeid (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Võimaldab rakendusel vastu võtta ja töödelda SMS-sõnumeid. Pahatahtlikud rakendused võivad teie sõnumeid jälgida või neid kustutada teile näitamata."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"võta MMS vastu"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"võtke vastu tekstisõnumeid (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Võimaldab rakendusel vastu võtta ja töödelda multimeediumsõnumeid. Pahatahtlikud rakendused võivad teie sõnumeid jälgida või neid kustutada teile näitamata."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"hädaabiteadete vastuvõtmine"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Võimaldab rakendusel vastu võtta ja töödelda hädaabisõnumeid. See õigus on saadaval ainult süsteemirakendustele."</string> @@ -207,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Võimaldab rakendusel saata SMS-sõnumeid. Pahatahtlikud rakendused võivad teile kulukaks minna, kui saadavad sõnumeid teie nõusolekuta."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"lühisõnumite saatmine ilma kinnituseta"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Võimaldab rakendusel saata SMS-sõnumeid. Pahatahtlikud rakendused võivad teile kulukaks minna, kui saadavad sõnumeid teie nõusolekuta."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"loe SMS-i või MMS-i"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"lugege oma tekstisõnumeid (SMS või MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Võimaldab rakendusel lugeda teie tahvelarvutisse või SIM-kaardile salvestatud SMS-sõnumeid. Pahatahtlikud rakendused võivad lugeda teie konfidentsiaalseid sõnumeid."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Võimaldab rakendusel lugeda teie telefoni või SIM-kaardile salvestatud SMS-sõnumeid. Pahatahtlikud rakendused võivad lugeda teie konfidentsiaalseid sõnumeid."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"muuda SMS-i või MMS-i"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"muutke oma tekstisõnumeid (SMS või MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Võimaldab rakendusel kirjutada teie tahvelarvutisse või SIM-kaardile salvestatud SMS-sõnumitesse. Pahatahtlikud rakendused võivad teie sõnumid kustutada."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Võimaldab rakendusel kirjutada teie telefoni või SIM-kaardile salvestatud SMS-sõnumitesse. Pahatahtlikud rakendused võivad teie sõnumid kustutada."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"võta WAP vastu"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"võtke vastu tekstisõnumeid (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Võimaldab rakendusel vastu võtta ja töödelda WAP-sõnumeid. Pahatahtlikud rakendused võivad teie sõnumeid jälgida või neid kustutada teile näitamata."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"Käitatud rakenduste toomine"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Võimaldab rakendusel hankida teavet praegu töötavate ja hiljuti töötanud ülesannete kohta. Pahatahtlikud rakendused võivad avastada privaatset teavet teiste rakenduste kohta."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"töötavate rakenduste üksikasjade toomine"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Võimaldab rakendusel tuua üksikasjalikku teavet praegu töötavate ja hiljuti käitatud ülesannete kohta. Pahatahtlikud rakendused võivad tuvastada privaatset teavet muude rakenduste kohta."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"käitatud rakenduste ümberjärjestamine"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Võimaldab rakendusel teisaldada ülesanded esiplaanile ja taustale. Pahatahtlikud rakendused võivad sundida end esiplaanile tulema teie loata."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"käitatud rakenduste peatamine"</string> @@ -227,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Võimaldab rakendusel juhtida teiste rakenduste kuva ühilduvuse režiimi. Pahatahtlikud rakendused võivad teisi rakendusi häirida."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"Rakenduse silumise lubamine"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Võimaldab rakendusel lülitada sisse teise rakenduse silumise. Pahatahtlikud rakendused võivad seda kasutada teiste rakenduste peatamiseks."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"muuda UI-seadeid"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"muutke süsteemi kuvaseadeid"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Võimaldab rakendusel muuta praegust konfiguratsiooni, näiteks lokaati või üldist kirjasuurust."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"autorežiimi lubamine"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Võimaldab rakendusel autorežiimi lubada."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"taustaprotsesside peatamine"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"sulgege teised rakendused"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Võimaldab rakendusel peatada teiste rakenduste taustaprotsessid, isegi kui mälu on piisavalt."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"Teiste rakenduste jõuga peatamine"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Lubab rakendusel sunniviisiliselt teisi rakendusi peatada."</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Võimaldab rakendusel edastada teatise WAP PUSH-sõnumi vastuvõtmise kohta. Pahatahtlikud rakendused võivad seda kasutada MMS-sõnumite vastuvõtmise võltsimiseks või mis tahes veebilehe sisu salaja asendamiseks pahatahtlikuga."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"piira töötavate protsesside arvu"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Võimaldab rakendusel juhtida töötavate protsesside maksimaalset arvu. Tavarakenduste puhul pole seda vaja."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"Kõigi taustarakenduste sulgemine"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"sundige taustarakendused sulguma"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Võimaldab rakendusel määrata, kas tegevused lõpetatakse kohe, kui need liiguvad taustale. Tavarakenduste puhul pole seda vaja."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"muuda akustatistikat"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Võimaldab rakendusel muuta kogutud akustatistikat. Mitte kasutada tavarakenduste puhul."</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Võimaldab rakendusel käivitada täieliku varukoopia kinnitusliidese. Mitte kasutada üheski rakenduses."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"kuva volituseta aknad"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Võimaldab rakendusel luua aknaid, mis on mõeldud kasutamiseks süsteemisisesele kasutajaliidesele. Mitte kasutada tavarakenduste puhul."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"kuva süsteemitasemel märguandeid"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tõmmake üle teiste rakenduste"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Võimaldab rakendusel kuvada süsteemihoiatuste aknaid. Pahatahtlikud rakendused võivad hõlmata kogu ekraani."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"muuda üldist animatsioonikiirust"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Võimaldab rakendusel muuta animatsiooni üldist kiirust (animatsioone kiirendada või aeglustada) ükskõik millal."</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Võimaldab rakendusel anda või tühistada teatud lubasid endale või teistele rakendustele. Pahatahtlikud rakendused võivad kasutada seda juurdepääsu hankimiseks sellistele funktsioonidele, mille jaoks te pole luba andnud."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"Eelistatud rakenduste määramine"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Võimaldab rakendusel muuta teie eelistatud rakendusi. Pahatahtlikud rakendused võivad salaja muuta töötavaid rakendusi, pettes teie olemasolevad rakendused koguma teilt privaatseid andmeid."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"muuda üldisi süsteemiseadeid"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"muutke süsteemi seadeid"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Võimaldab rakendusel muuta süsteemiseadete andmeid. Pahatahtlikud rakendused võivad rikkuda teie süsteemi konfiguratsiooni."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"muuda turvalisi süsteemiseadeid"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Võimaldab rakendusel muuta süsteemi turvaseadete andmeid. Mitte kasutada tavarakenduste puhul."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"muuda Google\'i teenustekaarti"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Võimaldab rakendusel muuta Google\'i teenustekaarti. Mitte kasutada tavarakenduste puhul."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"käivita automaatselt alglaadimisel"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"käitage käivitamisel"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Võimaldab rakendusel käivituda ise kohe, kui süsteem on käivitunud. See võib tahvelarvuti käivitamist aeglustada ja lubab rakendusel muuta tahvelarvuti ka üldiselt aeglasemaks, kuna töötab pidevalt."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Võimaldab rakendusel käivituda ise kohe, kui süsteem on käivitunud. See võib telefoni käivitamist aeglustada ja lubab rakendusel muuta telefoni ka üldiselt aeglasemaks, kuna töötab pidevalt."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"kleepsaate saatmine"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Võimaldab rakendusel saata püsivaid edastusi, mis jäävad pärast saate lõppemist alles. Pahatahtlikud rakendused võivad muuta tahvelarvuti aeglaseks või ebastabiilseks, põhjustades selle liiga suurt mälukasutust."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Võimaldab rakendusel saata püsivaid edastusi, mis jäävad pärast saate lõppemist alles. Pahatahtlikud rakendused võivad muuta telefoni aeglaseks või ebastabiilseks, põhjustades selle liiga suurt mälukasutust."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"loe kontaktandmeid"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"kirjuta kontaktandmeid"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"lugege oma kontakte"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Lubab rakendusel lugeda kõikide tahvelarvutisse salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad selle loa abil saata teie kontaktandmed teistele inimestele."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Lubab rakendusel lugeda kõikide telefoni salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad selle loa abil saata teie kontaktandmed teistele inimestele."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"muutke oma kontakte"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Lubab rakendusel muuta kõikide tahvelarvutisse salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad kasutada seda luba kontaktandmete muutmiseks või kustutamiseks."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Lubab rakendusel muuta kõikide telefoni salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad kasutada seda luba kontaktandmete muutmiseks või kustutamiseks."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"kõnelogi lugemine"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Lubab rakendusel lugeda tahvelarvuti kõnelogi, sh teavet sissetulevate ja väljaminevate kõnede kohta. Pahatahtlikud rakendused võivad saata selle abil teie teavet teistele inimestele."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Lubab rakendusel lugeda telefoni kõnelogi, sh teavet sissetulevate ja väljaminevate kõnede kohta. Pahatahtlikud rakendused võivad saata selle abil teie teavet teistele inimestele."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"kõnelogi kirjutamine"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Lubab rakendusel muuta tahvelarvuti kõnelogi, sh sissetulevate ja väljaminevate kõnede andmeid. Pahatahtlikud rakendused võivad kasutada seda kõnelogi kustutamiseks või muutmiseks."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Lubab rakendusel muuta telefoni kõnelogi, sh sissetulevate ja väljaminevate kõnede andmeid. Pahatahtlikud rakendused võivad kasutada seda kõnelogi kustutamiseks või muutmiseks."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"profiili andmete lugemine"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"lugege oma kontaktikaarti"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Võimaldab rakendusel lugeda seadmesse salvestatud isiklikku teavet, näiteks teie nime ja kontaktandmeid. See tähendab, et rakendus saab teid tuvastada ja saata teie profiiliteavet teistele."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"andmete kirjutamine profiili"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"muutke oma kontaktikaarti"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Võimaldab rakendusel muuta või lisada seadmesse salvestatud isiklikku teavet, näiteks teie nime ja kontaktandmeid. See tähendab, et teised rakendused saavad teid tuvastada ja saata teie profiiliteavet teistele."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"Sotsiaalvoo lugemine"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Võimaldab rakendusel hankida juurdepääsu teie ja teie sõprade suhtlusuudistele ning laseb neid sünkroonida. Pahatahtlikud rakendused võivad selle abil lugeda teie ja teie sõprade vahelist suhtlust suhtlusvõrgustikes."</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"sunni telefoni taaskäivitus"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Võimaldab rakendusel sundida tahvelarvutit taaskäivituma."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Võimaldab rakendusel sundida telefoni taaskäivituma."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"paigalda ja lahuta failisüsteeme"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"juurdep. USB-ruumi failisüst."</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"juurdepääs SD-kaardi failisüsteemile"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Võimaldab rakendusel failisüsteeme irdmällu paigaldada ja sealt lahutada."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"vorminda välismälu"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"tühjendage USB-salvestusruum"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"tühjendage SD-kaart"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Võimaldab rakendusel vormindada irdmälu."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"hangi teavet sisemälu kohta"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Võimaldab rakendusel hankida sisemälu teavet."</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Võimaldab rakendusel sisemäluseadme paigaldada/eraldada."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"sisemälu ümbernimetamine"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Võimaldab rakendusel sisemälu ümber nimetada."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"juhi värinaid"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"juhtige vibreerimist"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Võimaldab rakendusel juhtida vibreerimist."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"juhi taskulampi"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Võimaldab rakendusel juhtida taskulampi."</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Võimaldab rakendusel öelda süsteemile, milline rakendus saab kasutada milliseid vidinaid. Selle õigusega rakendus võib anda teistele rakendustele juurdepääsu isiklikele andmetele. Mitte kasutada tavarakenduste puhul."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"muuda telefoni olekut"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Võimaldab rakendusel juhtida seadme telefonifunktsioone. Selle loaga rakendus saab vahetada võrke, lülitada telefoniraadiot sisse ja välja ning teha muudki ilma teid teavitamata."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"telefoni oleku ja identiteedi lugemine"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"lugege telefoni olekut ja identiteeti"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Võimaldab rakendusel juurde pääseda seadme telefonifunktsioonidele. Selle õigusega rakendus suudab kindlaks teha telefoninumbri ja telefoni seerianumbri, kas kõne on aktiivne, ühendatud kõne telefoninumbri jms."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"tahvelarvuti uinumise vältimine"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"väldi telefoni uinumist"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Käivitage madalatasemelise tootjatestina, mis võimaldab täielikku juurdepääsu telefoni riistvarale. Kasutatav ainult juhul, kui telefon töötab tootja testrežiimis."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"määra taustapilt"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Võimaldab rakendusel määrata süsteemi taustapildi."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"määra taustapildi suuruse vihjed"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"korrigeerige oma taustapildi suurust"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Võimaldab rakendusel määrata süsteemi taustapildi suuruse vihjeid."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"lähtesta süsteem tehase vaikeseadetele"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Võimaldab rakendusel süsteemi tehaseseaded täielikult lähtestada, kustutades kõik andmed, konfiguratsiooni ja installitud rakendused."</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Võimaldab rakendusel muuta telefoni ajavööndit."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService\'ina tegutsemine"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Võimaldab rakendusel helistada konto autentijatele."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"leia teadaolevad kontod"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"leidke seadmest kontod"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Võimaldab rakendusel hankida tahvelarvutile teadaolevate kontode loendi."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Võimaldab rakendusel saada telefonile teadaolevate kontode loendi."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"tegutsege konto autentijana"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"looge kontod ja määrake paroolid"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Võimaldab rakendusel kasutada kontohalduri konto autentija võimalusi, sh luua kontosid ning hankida ja määrata paroole."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"kontode loendi haldamine"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"lisage või eemaldage kontosid"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Võimaldab rakendusel teha toiminguid, nagu kontode lisamine ja eemaldamine ning nende paroolide kustutamine."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"konto autentimise mandaadi kasutamine"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"kasutage seadmes olevaid kontosid"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Võimaldab rakendusel taotleda autentimise lubasid."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"vaata võrgu olekut"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"vaadake võrguühendusi"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Võimaldab rakendusel vaadata kõigi võrkude olekut."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"täielik Interneti-juurdepääs"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Võimaldab rakendusel luua võrgupesasid."</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Võimaldab rakendusel muuta jagatud võrgu ühenduvuse olekut."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"muuda taustaandmete kasutusseadeid"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Võimaldab rakendusel muuta taustaandmete kasutuse seadeid."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"vaata WiFi olekut"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"vaadake WiFi-ühendusi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Võimaldab rakendusel kuvada WiFi olekuteavet."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"muuda WiFi olekut"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"ühendage ja katkestage ühendus WiFi-ga"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Võimaldab rakendusel luua ja katkestada ühenduse WiFi-pääsupunktidega ning teha muudatusi seadistatud WiFi-võrkudesse."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"luba WiFi multiedastusvastuvõtt"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Võimaldab rakendusel vastu võtta mitte otse teie seadmele suunatud pakette. See võib olla kasulik teie lähedal pakutavate teenuste leidmisel. Kasutab rohkem energiat kui mitte-multiedastusrežiim."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetoothi haldamine"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"juurdepääs Bluetoothi seadetele"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Võimaldab rakendusel seadistada kohalikku Bluetooth-tahvelarvutit ning leida ja siduda seda kaugseadmetega."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Võimaldab rakendusel seadistada kohalikku Bluetooth-telefoni ning leida ja siduda seda kaugseadmetega."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX-i oleku kuvamine"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Vaadake WiMAX-i ühendusi"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Võimaldab rakendusel vaadata WiMAX-i olekuteavet."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-i oleku muutmine"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Võimaldab rakendusel luua ja katkestada ühenduse WiMAX-i võrguga."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"loo Bluetooth-ühendusi"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"siduge Bluetoothi seadmetega"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Võimaldab rakendusel vaadata kohaliku Bluetooth-tahvelarvuti konfiguratsiooni ning luua ja heaks kiita ühendusi seotud seadmetega."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Võimaldab rakendusel vaadata kohaliku Bluetooth-telefoni konfiguratsiooni ning luua ja heaks kiita ühendusi seotud seadmetega."</string> <string name="permlab_nfc" msgid="4423351274757876953">"lähiväljaside juhtimine"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Võimaldab rakendusel suhelda lähiväljaside (NFC) märgendite, kaartide ja lugeritega."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"keela klahvilukk"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"keelake ekraanilukk"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Võimaldab rakendusel keelata klahviluku ja muu seotud parooli turvalisuse. Selle põhjendatud näiteks on see, kui telefon keelab klahviluku sissetuleva kõne vastuvõtmisel ja lubab klahviluku uuesti, kui kõne on lõpetatud."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"loe sünkroonimisseadeid"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Võimaldab rakendusel lugeda sünkroonimisseadeid, näiteks sünkroonimise lubamist inimeste rakenduse puhul."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"kirjuta sünkroonimisseadeid"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"lülitage sünkroonimine sisse ja välja"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Võimaldab rakendusel muuta sünkroonimisseadeid, näiteks sünkroonimise lubamist inimeste rakenduse puhul."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"loe sünkroonimisstatistikat"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Võimaldab rakendusel lugeda sünkroonimisstatistikat, näiteks teostatud sünkroonimiste ajalugu."</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Võimaldab rakendusel saada üksikasju praegu sünkroonitavate voogude kohta."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"kirjuta tellitud kanaleid"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Võimaldab rakendusel muuta teie praegu sünkroonitud vooge. Pahatahtlikud rakendused võivad muuta teie sünkroonitud vooge."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"Kasutajasõnastiku lugemine"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"lugege termineid, mis te sõnastikku lisasite"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Võimaldab rakendusel lugeda kõiki privaatseid sõnu, nimesid ja fraase, mille kasutaja võis salvestada kasutajasõnastikku."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"Kasutaja määratud sõnastikku kirjutamine"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Võimaldab rakendusel kirjutada kasutajasõnastikku uusi sõnu."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USB-salvestusruumi sisu lugem."</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SD-kaardi sisu lugemine"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Rak. loeb USB-s.-ruumi sisu."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Võimaldab rakendusel lugeda SD-kaardi sisu."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-seadme sisu muutm./kustut."</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"muuda/kustuta SD-kaardi sisu"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lugege USB-salvestusruumi sisu"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lugege oma SD-kaardi sisu"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Võim. lugeda USB-ruumi sisu."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Võimaldab rakendusel lugeda SD-kaardi sisu, mis võib sisaldada fotosid ja meediume."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"muutke, kustut. USB-ruumi sisu"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"muutke või kustutage oma SD-kaardi sisu"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Võimaldab rakendusel kirjutada USB-mäluseadmele."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Võimaldab rakendusel kirjutada SD-kaardile."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"sisemälu sisu muutm./kustut."</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonis pole SIM-kaarti."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Sisestage SIM-kaart."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kaart puudub või on loetamatu. Sisestage SIM-kaart."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kaart on jäädavalt keelatud."\n" Teise SIM-kaardi saamiseks võtke ühendust oma traadita side teenusepakkujaga."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Eelmise loo nupp"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Nupp Järgmine rada"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Vald"</string> <string name="autofill_area" msgid="3547409050889952423">"Piirkond"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Brauseriajaloo ja järjehoidjate lugemine"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lugege oma veebijärjehoidjaid ja -ajalugu"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Lubab rakendusel lugeda kõiki brauseri külastatud URL-e ja kõiki brauseri järjehoidjaid."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"kirjuta brauseri ajalugu ja järjehoidjaid"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"kirjutage veebijärjehoidjaid ja -ajalugu"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Võimaldab rakendusel muuta brauseri ajalugu või tahvelarvutisse salvestatud järjehoidjaid. Pahatahtlikud rakendused võivad seda kasutada teie brauseriandmete kustutamiseks või muutmiseks."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Võimaldab rakendusel muuta brauseri ajalugu või telefoni salvestatud järjehoidjaid. Pahatahtlikud rakendused võivad seda kasutada teie brauseriandmete kustutamiseks või muutmiseks."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"äratuskella äratuse määramine"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"määrake äratus"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Võimaldab rakendusel seada installitud äratuskellarakenduses äratuse. Mõned äratuskellarakendused ei pruugi seda funktsiooni juurutada."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"lisa kõneposti"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Võimaldab rakendusel lisada sõnumeid teie kõneposti postkasti."</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Määra"</string> <string name="date_time_done" msgid="2507683751759308828">"Valmis"</string> <string name="default_permission_group" msgid="2690160991405646128">"Vaikimisi"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"UUS: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"UUS: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Lube pole vaja"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Peida"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Näita kõiki"</b></string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 00750a98bd1a..c7a8be7d0c67 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"رایانه لوحی شما خاموش می شود."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"گوشی شما خاموش می شود."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"آیا میخواهید تلفن خاموش شود؟"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"راهاندازی مجدد در حالت امن"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"آیا میخواهید با حالت امن راهاندازی مجدد کنید؟ با این کار کلیه برنامههای شخص ثالثی که نصب کردهاید غیرفعال میشوند. با راهاندازی دوباره سیستم این برنامهها دوباره بازیابی میشوند."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"اخیر"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"برنامههای جدید موجود نیست."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"گزینه های رایانه لوحی"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"پیام های شما"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"پیام کوتاه، ایمیل و دیگر پیامها را بخوانید."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"اطلاعات شخصی شما"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"دسترسی مستقیم به مخاطبین و تقویم ذخیره شده در رایانه لوحی."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"دسترسی مستقیم به مخاطبین و تقویم ذخیره شده در گوشی."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"موقعیت مکانی شما"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"بر موقعیت مکانی فیزیکی خود نظارت داشته باشید."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"ارتباط شبکه"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"به ویژگیهای مختلف شبکه دسترسی داشته باشید."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"حساب های شما"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"به حساب های موجود دسترسی داشته باشید."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"کنترل های سخت افزار"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"دسترسی سطح پایین و کنترل سیستم."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"ابزارهای توسعه"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"ویژگیهایی که فقط مورد نیاز برنامه نویسان است."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"ذخیره سازی"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"به حافظه USB دسترسی پیدا کنید."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"به کارت SD دسترسی داشته باشید."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"به برنامه اجازه میدهد که تبدیل به نوار وضعیت شود."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"گسترش دادن/جمع کردن نوار وضعیت"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"به برنامه اجازه میدهد تا نوار ابزار را جمع کند یا باز کند."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"توقف تماس های خروجی"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ترسیم مجدد مسیر تماسهای خروجی"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"به برنامه اجازه میدهد تماسهای خروجی را پردازش کند و شمارههایی که باید گرفته شوند را تغییر دهد. برنامههای مخرب میتوانند تماسهای خروجی را کنترل کنند، هدایت کنند یا از آنها جلوگیری کنند."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"دریافت پیامک"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"دریافت پیامهای نوشتاری (پیامک)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"به برنامه اجازه میدهد تا پیامهای کوتاه را دریافت و پردازش کند. برنامههای مخرب میتوانند پیامهای شما را کنترل کنند یا بدون نشاندادن آنها به شما آنها را حذف کنند."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"دریافت MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"دریافت پیامهای نوشتاری (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"به برنامه اجازه میدهد تا پیامهای MMS را دریافت و پردازش کند. برنامههای مخرب پیامهای شما را کنترل میکنند یا بدون نشان دادن آنها به شما آنها را پاک میکنند."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"دریافت پخش های اضطراری"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"به برنامه اجازه میدهد تا پیامهای پخش اضطراری را دریافت و پردازش کند. این مجوز فقط برای برنامههای سیستم در دسترس است."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"به برنامه اجازه میدهد پیامهای کوتاه ارسال کند. ممکن است برنامههای مخرب با ارسال پیام بدون تایید شما برای شما هزینه داشته باشند."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ارسال پیامک بدون تأیید"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"به برنامه اجازه میدهد تا پیام کوتاه ارسال کند. برنامههای مخرب میتوانند با ارسال پیام بدون تایید شما برای شما هزینه داشته باشند."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"خواندن پیامک یا MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"خواندن پیامهای نوشتاری شما (پیامک یا MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"به برنامه اجازه میدهد تا پیامهای کوتاه ذخیره شده در رایانه لوحی یا سیم کارت شما را بخواند. برنامههای مخرب میتوانند پیامهای محرمانه شما را بخوانند."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"به برنامه اجازه میدهد تا پیامهای کوتاه روی تلفن یا سیم کارت را بخواند. برنامههای مخرب میتوانند پیامهای محرمانه شما را بخوانند."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"ویرایش پیامک یا MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"ویرایش پیامهای نوشتاری شما (پیامک یا MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"به برنامه اجازه میدهد تا در پیامهای کوتاه ذخیره شده در رایانه لوحی یا سیم کارت بنویسد. برنامههای مخرب پیامهای شما را حذف میکنند."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"به برنامه اجازه میدهد تا در پیامهای کوتاه ذخیره شده در تلفن یا سیم کارت بنویسد. برنامههای مخرب میتوانند پیامهای شما را حذف کنند."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"دریافت WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"دریافت پیامهای نوشتاری (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"به برنامه اجازه میدهد تا پیامهای WAP را دریافت و پردازش کند. برنامههای مخرب میتوانند پیامهای شما را کنترل کنند یا آنها را بدون نشان دادن آنها به شما حذف کنند."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"بازیابی برنامههای در حال اجرا"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"به برنامه اجازه میدهد تا اطلاعات مربوط به کارهایی که اخیرا و در حال حاضر اجرا میشوند را بازیابی کند. برنامههای مخرب میتوانند اطلاعات شخصی مربوط به برنامههای دیگر را پیدا کنند."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"بازیابی جزئیات برنامههای در حال اجرا"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"به برنامه اجازه میدهد تا اطلاعات مفصلی مربوط به کارهایی که در حال حاضر و اخیراً اجرا میشوند را بازیابی کند. برنامههای مخرب میتوانند اطلاعات شخصی مربوط به برنامههای دیگر را پیدا کنند."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"تنظیم مجدد ترتیب برنامههای در حال اجرا"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"به برنامه اجازه میدهد تا کارها را به پیش زمینه و پس زمینه منتقل کند. برنامههای مخرب میتوانند بدون کنترل به اجبار خود را به جلو منتقل کنند."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"متوقف کردن برنامههای در حال اجرا"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"به برنامه کاربردی اجازه کنترل حالت سازگاری صفحه نمایش برای برنامههای دیگر را میدهد. برنامههای خرابکار ممکن است باعث کارکرد نادرست دیگر برنامهها شوند."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"فعال کردن عیبیابی برنامه"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"به برنامه اجازه میدهد تا عیبیابی را برای برنامهای دیگر فعال کند. برنامههای مخرب میتوانند از آن استفاده کنند تا اجرای برنامههای دیگر را متوقف کنند."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"تغییر تنظیمات UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"تغییر تنظیمات نمایشگر سیستم"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"به برنامه اجازه میدهد تا پیکربندی فعلی، از قبیل اندازه کلی قلم یا محل، را تغییر دهد."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"فعال کردن حالت خودرو"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"به برنامه اجازه میدهد تا حالت خودرو را فعال کند."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"از بین بردن فرآیندهای موجود در پس زمینه"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"بستن سایر برنامهها"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"به برنامه اجازه میدهد تا پردازشهای پس زمینه دیگر برنامهها را از بین ببرد، حتی اگر حافظه کم نباشد."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"توقف اجباری برنامههای دیگر"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"به برنامه اجازه میدهد تا به اجبار برنامههای دیگر را متوقف کند."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"به برنامه اجازه میدهد تا اعلانی را پخش کند که پیام WAP PUSH دریافت کرده است. برنامههای مخرب میتوانند از آن استفاده کنند تا دریافت پیام MMS را جعل کنند یا محتوای هر صفحه وب را با انواع مخرب جایگزین کنند."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"محدود کردن تعداد فرآیندهای در حال اجرا"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"به برنامه اجازه میدهد تا حداکثر تعداد پردازشهایی را که اجرا خواهد شد کنترل کند. هرگز برای برنامههای عادی لازم نیست."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"بستن همه برنامههای پس زمینه"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"بستن اجباری برنامههای پسزمینه"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"به برنامه اجازه میدهد تا به محض اینکه فعالیتها به پس زمینه رفتند تمام شوند. برای برنامههای عادی نیازی نیست."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"اصلاح کردن آمار مربوط به باتری"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"به برنامه اجازه میدهد تا آمار جمع آوری شده باتری را تغییر دهد. برای استفاده برنامههای عادی نیست."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"به برنامه اجازه میدهد تا رابط کاربر تایید نسخه کامل پشتیبان را راهاندازی کند. هر برنامهای نمیتواند از آن استفاده کند."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"نمایش پنجره های غیرمجاز"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"به برنامه اجازه میدهد پنجرههایی را ایجاد کند که میخواهد توسط رابط کاربر سیستم داخلی استفاده شود. برای استفاده برنامههای عادی نیست."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"هشدارهای سطح سیستم نمایش"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ترسیم روی برنامههای دیگر"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"به برنامه اجازه میدهد تا پنجرههای هشدار سیستم را نشان دهد. برنامههای مخرب میتوانند کل صفحه را کنترل کنند."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"اصلاح سرعت انیمیشن کلی"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"به برنامه اجازه میدهد سرعت کلی انیمیشن را هر زمان که بخواهد تغییر دهد (انیمیشنهای سریعتر یا آهستهتر)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"به یک برنامه کاربردی اجازه میدهد تا مجوزهای خاصی را برای خود یا دیگر برنامهها ارائه کرده یا آنها را لغو کند. برنامههای مضر از این حالت برای دسترسی به ویژگیهایی استفاده میکنند که شما اجازه آن را در اختیارشان قرار ندادهاید."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"تنظیم برنامههای ترجیحی"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"به برنامه اجازه میدهد تا برنامههای ترجیحی شما را تغییر دهد. برنامههای مخرب میتوانند بدون اعلان برنامههایی را که اجرا میشوند، تغییر دهند خود را به جای برنامههای کنونی قلمداد کنند تا دادههای شخصی را از شما جمع آوری کنند."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"اصلاح کردن تنظیمات سیستم کلی"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"اصلاح تنظیمات سیستم"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"به برنامه اجازه میدهد تا دادههای تنظیم سیستم را تغییر دهد. برنامههای مخرب میتوانند پیکربندی سیستم شما را خراب کنند."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"اصلاح کردن تنظیمات سیستم ایمن"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"به برنامه اجازه میدهد دادههای تنظیمات امنیتی سیستم را تغییر دهد. برای استفاده برنامههای عادی نیست."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"اصلاح کردن نقشه سرویس های Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"به برنامه اجازه میدهد تا نقشه سرویسهای Google را تغییر دهد. برای استفاده برنامههای عادی نیست."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"شروع به کار خودکار پس از راه اندازی مجدد"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"اجرا هنگام راهاندازی"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"به برنامه اجازه میدهد تا به محض اتمام راهاندازی سیستم خودبخود شروع به کار کند. این کار ممکن است باعث شود مدت زمان بیشتری صرف شدوع به کار رایانه لوحی شود و به برنامه اجازه میدهد تا با اجرای همیشگی رایانه لوحی را کند کند."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"به برنامه اجازه میدهد تا به محض اینکه سیستم راهاندازی شد خودبخود شروع به کار کند. این کار باعث میشود مدت زمان بیشتری صرف شود تا تلفن شروع به کار کند و به برنامه اجازه میدهد تا کل تلفن کند شود چون همیشه در حال اجرا شدن است."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ارسال پخش چسبنده"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"به برنامه اجازه میدهد تا پخشهای ماندگار را که پس از اتمام پخش باقی میمانند ارسال شوند. برنامههای مخرب میتوانند با استفاده بیش از حد از حافظه وضعیت آن را ناپایدار سازند یا باعث کند شدن رایانه لوحی شوند."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"به برنامه اجازه میدهد تا پخشهای ماندگار را که پس از اتمام پخش باقی میمانند ارسال کند. برنامههای مخرب میتوانند با استفاده بیش از حد از حافظه تلفن را کند یا ناپایدار کنند."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"خواندن اطلاعات تماس"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"نوشتن اطلاعات تماس"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"خواندن مخاطبین شما"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی گوشی ذخیره شده است بخواند و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر استفاده کنند."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی گوشی ذخیره شده است پاک کند و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر استفاده کنند."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"اصلاح مخاطبین شما"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی رایانه لوحی شما ذخیره شده است تغییر دهد و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر یا حذف آنها استفاده کنند."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی گوشی ذخیره شده است تغییر دهد و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر یا حذف آنها استفاده کنند."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"خواندن گزارش تماس"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"به برنامه اجازه میدهد گزارشات تماس رایانه لوحی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را بخواند. برنامههای مخرب ممکن است از این ویژگی برای ارسال دادههای شما به دیگران استفاده کنند."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"به برنامه اجازه میدهد گزارشات تماس تلفنی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را بخواند. برنامههای مخرب ممکن است از این ویژگی برای ارسال دادههای شما به دیگران استفاده کنند."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"نوشتن گزارش تماس"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"به برنامه اجازه میدهد گزارشات تماس رایانه لوحی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"به برنامه اجازه میدهد گزارشات تماس تلفنی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"خواندن دادههای نمایه شما"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"خواندن کارت تماس شما"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"به برنامه اجازه میدهد اطلاعات نمایه شخصی ذخیره شده در دستگاه شما را بخواند. یعنی برنامه میتواند شما را شناسایی کند و اطلاعات نمایه شما را به دیگران ارسال کند."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"نوشتن در دادههای نمایه شما"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"اصلاح کارت تماس شما"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"به برنامه اجازه میدهد تا اطلاعات نمایه شخصی ذخیره شده در دستگاه شما را تغییر دهد یا اضافه کند، مانند نام و اطلاعات تماس شما. یعنی برنامههای دیگر میتوانند شما را شناسایی کنند و اطلاعات نمایه شما را برای دیگران ارسال کنند."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"خواندن جریان اجتماعی شما"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"به برنامه امکان میدهد تا به بهروزرسانیهای اجتماعی شما و دوستانتان دسترسی داشته باشد و آنها را همگام کنند. برنامههای مخرب میتوانند از آن برای خواندن ارتباطات خصوصی بین شما و دوستانتان در شبکههای اجتماعی استفاده کنند."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"اجبار برنامه برای راه اندازی مجدد"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"به برنامه اجازه میدهد تا سبب راه اندازی مجدد رایانه لوحی شود."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"به برنامه اجازه میدهد تا سبب راه اندازی مجدد گوشی شود."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"نصب و باز کردن سیستم های فایل"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"دسترسی به سیستم فایل حافظه USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"دسترسی به سیستم فایل کارت SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"به برنامه اجازه میدهد تا فایلهای سیستمی در حافظه جداشدنی نصب شود یا نصب آن لغو شود."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"فرمت کردن دستگاه ذخیره سازی خارجی"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"پاک کردن حافظه USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"پاک کردن کارت SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"به برنامه اجازه میدهد تا حافظه جداشدنی را فرمت کند."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"دریافت اطلاعات مربوط به حافظه داخلی"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"به برنامه اجازه میدهد تا اطلاعات مربوط به حافظه داخلی را دریافت کند."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"به برنامه اجازه میدهد حافظه داخلی را نصب کرده/نصب آنرا لغو کند."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"نامگذاری مجدد دستگاه ذخیره داخلی"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"به برنامه اجازه میدهد تا نام حافظه داخلی را تغییر دهد."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"کنترل لرزاننده"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"کنترل لرزش"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"به برنامه اجازه میدهد تا لرزاننده را کنترل کند."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"کنترل چراغ قوه"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"به برنامه اجازه میدهد تا چراغ قوه را کنترل کند."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"به برنامه اجازه میدهد تا به سیستم اعلام کند کدام ویجت را کدام برنامه میتواند استفاده کند. برنامهای که این مجوز را دارد میتواند به دادههای شخصی دیگر برنامهها دسترسی داشته باشد. برای استفاده برنامههای عادی نیست."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"اصلاح کردن حالت تلفن"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"به برنامه اجازه میدهد ویژگیهای دستگاه را کنترل کند. برنامهای که این مجوز را دارد میتواند بدون اطلاع شما تعویض شبکه داشته باشد، رادیوی تلفن را روشن یا خاموش کند و کارهایی از این قبیل را انجام دهد."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"خواندن وضعیت و هویت تلفن"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"خواندن وضعیت تلفن و شناسه"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"به برنامه اجازه میدهد تا به ویژگیهای دستگاه دسترسی داشته باشد. برنامهای که این مجوز را داشته باشد میتواند حتی در حین تماس، شماره تلفن و شماره سریال تلفن و شمارهای که به آن تماس گرفته میشود و مواردی از این قبیل را تعیین کند."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ممانعت از به خواب رفتن رایانه لوحی"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ممانعت از به خواب رفتن تلفن"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"اجرا به عنوان تست سازنده سطح پایین، امکان دسترسی کامل به سخت افزار تلفن شما را فراهم می آورد. فقط زمانی که تلفن در حالت تست سازنده در حال اجراست قابل دسترسی است."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"تنظیم تصویر زمینه"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"به برنامه اجازه میدهد تا تصویر زمینه سیستم را تنظیم کند."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"تنظیم اندازه تصویر زمینه"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"تنظیم اندازه تصویر زمینه"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"به برنامه اجازه میدهد تا نکات اندازه تصویر زمینه سیستم را تنظیم کند."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"بازنشانی سیستم به موارد پیش فرض کارخانه"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"به برنامه اجازه میدهد تا بطور کامل سیستم را روی تنظیمات کارخانه بازنشانی کند، همه دادهها، پیکربندی و برنامههای نصب شده را پاک کند."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"به برنامه اجازه میدهد تا منطقه زمانی تلفن را تغییر دهد."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"عملکرد به عنوان AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"به برنامه اجازه میدهد با AccountAuthenticators تماس برقرار کند."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"یافتن حساب های شناخته شده"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"یافتن حسابها در دستگاه"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"به برنامه اجازه میدهد تا لیست حسابهای شناختهشده توسط رایانه لوحی را دریافت کند."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"به برنامه اجازه میدهد تا لیست حسابهای شناخته شده توسط تلفن را دریافت کند."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"عملکرد به عنوان تأیید کننده اعتبار حساب"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ایجاد حسابها و تنظیم گذرواژهها"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"به برنامه اجازه میدهد از امکانات تأیید کننده اعتبار حساب AccountManager از جمله ایجاد حساب و دریافت و تنظیم گذرواژهها استفاده کند."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"مدیریت لیست حساب ها"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"افزودن یا حذف حسابها"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"به برنامه اجازه میدهد تا عملکردهایی مانند افزودن و حذف حسابها و حذف گذرواژهها را انجام دهد."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"استفاده از اطلاعات کاربری تأیید اعتبار یک حساب"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"استفاده از حسابها در دستگاه"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"به برنامه اجازه میدهد نشانههای تایید اعتبار را درخواست کند."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"مشاهده وضعیت شبکه"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"مشاهده اتصالات شبکه"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"به برنامه اجازه میدهد تا وضعیت همه شبکهها را مشاهده کند."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"دسترسی کامل به اینترنت"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"به برنامه اجازه میدهد تا سوکتهای شبکه را ایجاد کند."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"به برنامه اجازه میدهد تا وضعیت اتصال شبکه اتصال داده با سیم را تغییر دهد."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"تغییر تنظیمات میزان استفاده داده در پس زمینه"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"به برنامه اجازه میدهد تا تنظیم کاربرد دادههای پس زمینه را تغییر دهد."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"مشاهده وضعیت Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"مشاهده اتصالات Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"به برنامه اجازه میدهد تا اطلاعات مربوط به وضعیت Wi-Fi را مشاهده کند."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"تغییر حالت Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"اتصال به Wi-Fi و قطع اتصال از آن"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"به برنامه اجازه میدهد تا به نقاط دسترسی Wi-Fi وصل شود و ارتباط خود را با آنها قطع کند و تغییراتی را در شبکههای Wi-Fi پیکربندی شده ایجاد کند."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"دریافت چندگانه Wi-Fi را مجاز می کند"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"به برنامه اجازه میدهد تا بستههایی را که مستقیما برای دستگاه شما هدایت نشده دریافت کند. هنگام پیداکردن خدمات ارائهشده در نزدیکی می تواند مفید باشد. نسبت به حالت غیر چند تایی بیشتر نیرو مصرف میکند."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"مدیریت بلوتوث"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"دسترسی به تنظیمات بلوتوث"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"به برنامه اجازه میدهد تا رایانه لوحی بلوتوث محلی را پیکربندی کرده، دستگاههای راه دور را شناسایی کرده و با آنها جفت شود."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"به برنامه اجازه میدهد تا تلفن بلوتوث محلی را پیکربندی کند و دستگاههای راه دور را پیدا کند و با آنها جفت شود."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"مشاهده وضعیت WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"مشاهده اتصالات وایمکس"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"به برنامه اجازه میدهد اطلاعات وضعیت WiMAX را مشاهده کند."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"تغییر وضعیت WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"به برنامه امکان میدهد تا به شبکه WiMAX متصل شده یا از آن قطع اتصال کند."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"ایجاد اتصال های بلوتوث"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"مرتبطسازی با دستگاههای بلوتوث"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"به برنامه اجازه میدهد تا پیکربندی رایانه لوحی بلوتوث محلی را مشاهده کند و اتصال با دستگاههای جفت شده را برقرار کرده و بپذیرد."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"به برنامه اجازه میدهد تا پیکربندی تلفن بلوتوث محلی را مشاهده کند، و اتصالات دستگاههای جفت شده را برقرار کرده و بپذیرد."</string> <string name="permlab_nfc" msgid="4423351274757876953">"کنترل ارتباط راه نزدیک"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"به برنامه اجازه میدهد تا با تگهای ارتباط میدان نزدیک (NFC)، کارتها و فایل خوان ارتباط برقرار کند."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"غیرفعال کردن قفل کلید"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"غیرفعال کردن قفل صفحه شما"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"به برنامه اجازه میدهد قفل کلید و هر گذرواژه امنیتی مرتبط را غیر فعال کند. به عنوان یک مثال مناسب برای این ویژگی میتوان به زمانی اشاره کرده که تلفن هنگام دریافت یک تماس قفل کلید را غیر فعال میکند و پس از پایان تماس دوباره قفل کلید را فعال میکند."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"خواندن تنظیمات همگام سازی"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"به برنامه اجازه میدهد تا تنظیمات همگامسازی را بخواند ماند اینکه آیا برنامه People فعال است یا خیر."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"نوشتن تنظیمات همگام سازی"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"تغییر وضعیت همگامسازی بین فعال و غیرفعال"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"به برنامه اجازه میدهد تا تنظیمات همگامسازی را تغییر دهد مانند همگامسازی وضعیت آب و هوا که برای برنامه People فعال میشود."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"خواندن اطلاعات آماری همگام سازی"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"به برنامه اجازه میدهد تا آمار همگامسازی را بخواند مثلا سابقه همگامسازیهایی که انجام شده است."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"به برنامه اجازه میدهد تا جزئیات مربوط به فیدهای همگام شده کنونی را دریافت کند."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"نوشتن فیدهای مشترک"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"به برنامه اجازه میدهد تا فیدهای همگام شده کنونی را تغییر دهد. برنامههای مخرب میتوانند فیدهای همگام شده را تغییر دهند."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"خواندن فرهنگ لغت تعیین شده توسط کاربر"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"خواندن واژههایی که به فرهنگ لغت اضافه کردید"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"به برنامه اجازه میدهد هر گونه کلمه، نام، عبارت خصوصی را که کاربر در فرهنگ لغت خود ذخیره کرده است بخواند."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"نوشتن در فرهنگ لغت تعریف شده از سوی کاربر"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"به برنامه اجازه میدهد تا کلمات جدید را در فهرست کاربر بنویسد."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"خواندن محتوای حافظه USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"خواندن محتوای کارت SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"به برنامه اجازه خواندن محتوای حافظه USB را میدهد."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"به برنامه اجازه خواندن محتوای کارت SD را میدهد."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"اصلاح/حذف محتواهای حافظه USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"اصلاح کردن/حذف محتویات کارت SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"خواندن محتویات حافظه USB شما"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"خواندن محتویات کارت SD شما"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"به برنامه امکان میدهد محتویات حافظه USB را بخواند که ممکن است حاوی عکس و رسانه باشد."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"به برنامه اجازه میدهد محتویات کارت SD را بخواند که ممکن است حاوی عکس و رسانه باشد."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"اصلاح یا حذف محتویات حافظه USB شما"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"اصلاح یا حذف محتویات کارت SD شما"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"به برنامه اجازه میدهد تا در حافظه USB بنویسد."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"به برنامه اجازه میدهد تا در کارت SD بنویسد."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"تغییر/حذف محتواهای حافظه رسانه داخلی"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"سیم کارت درون تلفن نیست."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"سیم کارت را وارد کنید."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"سیم کارت موجود نیست یا قابل خواندن نیست. یک سیم کارت وارد کنید."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"سیم کارت شما به طور دائم غیر فعال شده است. "\n"برای داشتن سیم کارت دیگر با ارائهدهنده سرویس بیسیم خود تماس بگیرید."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"دکمه تراک قبلی"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"دکمه تراک بعدی"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"نویسه"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"کلمه"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"پیوند"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"خط"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"تست کارخانه انجام نشد"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"ناحیه"</string> <string name="autofill_area" msgid="3547409050889952423">"منطقه"</string> <string name="autofill_emirate" msgid="2893880978835698818">"امارات"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"خواندن سابقه و نشانک های مرورگر"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"خواندن سابقه و نشانکهای وب شما"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"به برنامه اجازه میدهد همه نشانکهای مرورگر و آدرسهای اینترنتی را که مرورگر بازدید کرده است بخواند."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"نوشتن سابقه مرورگر و نشانک ها"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"نوشتن نشانکهای وب و سابقه"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"به برنامه اجازه میدهد تا سابقه مرورگر یا نشانکهای ذخیره شده در رایانه لوحی را تغییر دهد. برنامههای مخرب میتوانند از آن استفاده کنند تا دادههای مرورگر شما را تغییر دهند یا پاک کنند."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"به برنامه اجازه میدهد تا سابقه مرورگر یا نشانکهای ذخیره شده در تلفن را تغییر دهد. برنامههای مخرب میتوانند از آن برای پاک کردن یا تغییر دادههای مرورگر استفاده کنند."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"تنظیم هشدار در ساعت زنگ دار"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"تنظیم یک هشدار"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"به برنامه اجازه میدهد تا هشداری را در برنامه ساعت زنگدار نصب شده تنظیم کند. برخی از برنامههای ساعت زنگدار نمیتوانند این ویژگی را اعمال کنند."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"افزودن پست صوتی"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"به برنامه اجازه میدهد تا پیامها را به صندوق دریافت پست صوتی شما اضافه کند."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"تنظیم"</string> <string name="date_time_done" msgid="2507683751759308828">"انجام شد"</string> <string name="default_permission_group" msgid="2690160991405646128">"پیش فرض"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"جدید: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"جدید: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"مجوزی لازم نیست"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"پنهان کردن"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"نمایش همه"</b></string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index a23d534a3873..3e27cbdfcb79 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tablet-laitteesi sammutetaan."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Puhelin suljetaan."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Haluatko sammuttaa?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Käynnistä vikasietotilassa"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Haluatko käynnistää uudelleen vikasietotilassa? Tällöin kolmansien osapuolten sovelluksia ei käynnistetä. Sovellukset otetaan jälleen käyttöön, kun käynnistät laitteen uudelleen."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Viimeisimmät"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Ei viimeaikaisia sovelluksia"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Tablet-laitteen asetukset"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Omat viestit"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Tekstiviestien, sähköpostin ja muiden viestien lukeminen ja kirjoittaminen."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Henkilötietosi"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Käyttöoikeudet tablet-laitteelle tallennettuihin yhteystietoihin ja kalenteriin."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Saa suora käyttöyhteys puhelimelle tallennettuihin yhteystietoihin ja kalenteriin."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Oma sijainti"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Tarkkaile fyysistä sijaintiasi."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Verkkoviestintä"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Käyttää useita verkon ominaisuuksia."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Omat tilit"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Käytä saatavilla olevia tilejä."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Laitteiston hallinta"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Alemman tason käyttöoikeus ja järjestelmän hallintaoikeus."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Kehittäjätyökalut"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Vain sovelluskehittäjien tarvitsemat ominaisuudet."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Tallennustila"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Käytä USB-tallennustilaa."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Käytä SD-korttia."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Antaa sovelluksen sijaita tilapalkissa."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"laajentaa/tiivistää tilarivin"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Antaa sovelluksen laajentaa tai tiivistää tilarivin."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"katkaise soitettavia puheluita"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ohjaa uudelleen lähtevät puhelut"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Antaa sovelluksen käsitellä lähteviä puheluita ja muuttaa kohdenumeroita. Haitalliset sovellukset voivat valvoa, uudelleenohjata tai estää lähteviä puheluita."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"vastaanota tekstiviestejä"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"vastaanota tekstiviestejä (teksti)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Antaa sovelluksen vastaanottaa ja käsitellä tekstiviestejä. Haitalliset sovellukset voivat valvoa viestejä tai poistaa niitä näyttämättä niitä sinulle."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"vastaanota multimediaviestejä"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"vastaanota tekstiviestejä (multimedia)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Antaa sovelluksen vastaanottaa ja käsitellä MMS-viestejä. Haitalliset sovellukset voivat valvoa viestejä tai poistaa niitä näyttämättä niitä sinulle."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"vastaanota hätätilalähetyksiä"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Antaa sovelluksen vastaanottaa ja käsitellä hätälähetysviestejä. Tämä lupa on vain järjestelmäsovellusten käytettävissä."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Antaa sovelluksen lähettää tekstiviestejä. Haitalliset sovellukset voivat tuhlata rahaa lähettämällä viestejä ilman vahvistusta."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"lähettää tekstiviestejä ilman vahvistusta"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Antaa sovelluksen lähettää tekstiviestejä. Haitalliset sovellukset voivat tuhlata rahaa lähettämällä viestejä ilman vahvistusta."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"lue multimedia- tai tekstiviestejä"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"lue tekstiviestejä (teksti tai multimedia)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Antaa sovelluksen lukea tablet-laitteelle tai SIM-kortille tallennettuja tekstiviestejä. Haitalliset sovellukset saattavat lukea luottamuksellisia viestejä."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Antaa sovelluksen lukea puhelimelle tai SIM-kortille tallennettuja tekstiviestejä. Haitalliset sovellukset saattavat lukea luottamuksellisia viestejä."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"muokkaa multimedia- tai tekstiviestejä"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"muokkaa tekstiviestejä (teksti tai multimedia)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Antaa sovelluksen kirjoittaa tablet-laitteelle tai SIM-kortille tallennettuihin tekstiviesteihin. Haitalliset sovellukset voivat poistaa viestejä."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Antaa sovelluksen kirjoittaa puhelimelle tai SIM-kortille tallennettuihin tekstiviesteihin. Haitalliset sovellukset voivat poistaa viestejä."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"vastaanota WAP-viestejä"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"vastaanota tekstiviestejä (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Antaa sovelluksen vastaanottaa ja käsitellä WAP-viestejä. Haitalliset sovellukset voivat valvoa viestejä tai poistaa niitä näyttämättä niitä sinulle."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"käynnissä olevien sovellusten noutaminen"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Antaa sovelluksen noutaa käynnissä oleviin ja käynnissä olleisiin tehtäviin liittyviä tietoja. Haitalliset sovellukset saattavat saada näin muihin sovelluksiin liittyviä yksityisiä tietoja."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hae tiedot suoritettavista sovelluksista"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Antaa sovellukselle oikeuden noutaa käynnissä oleviin ja käynnissä olleisiin tehtäviin liittyviä tietoja. Haitalliset sovellukset saattavat saada näin muihin sovelluksiin liittyviä yksityisiä tietoja."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"käynnissä olevien sovellusten järjesteleminen"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Antaa sovelluksen siirtää tehtäviä etualalle ja taustalle. Haitalliset sovellukset voivat pakottaa itsensä etualalle ilman käyttäjän hallintaa."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"käynnissä olevien sovellusten pysäyttäminen"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Sallii sovelluksen hallita toisten sovellusten näytön yhteensopivuustilaa. Haittasovellukset voivat häiritä toisten sovellusten toimintaa."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"sovellusten vianetsinnän käyttöönotto"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Antaa sovelluksen ottaa vianetsinnän käyttöön toisessa sovelluksessa. Haitalliset ohjelmat voivat lopettaa tällä muita sovelluksia."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"muuta käyttöliittymäsi asetuksia"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"muuta järjestelmän näyttöasetuksia"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Sallii sovelluksen muuttaa nykyistä määritystä, kuten maata tai yleistä kirjasinkokoa."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"ota autotila käyttöön"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Antaa sovelluksen ottaa autotilan käyttöön."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"sulje taustaprosessit"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"sulje muita sovelluksia"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Antaa sovelluksen lopettaa muiden sovellusten taustaprosesseja myös silloin, kun muisti ei ole vähissä."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"muiden sovellusten pysähtymisen pakottaminen"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Antaa sovelluksen pakottaa muita sovelluksia pysähtymään."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Antaa sovelluksen lähettää ilmoituksen WAP PUSH -viestin vastaanotosta. Haitalliset sovellukset voivat käyttää tätä MMS-viestien vastaanoton väärentämiseen tai sivujen sisällön korvaamiseen huomaamattomasti haitallisella sisällöllä."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"rajoita käynnissä olevien prosessien määrää"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Antaa sovelluksen hallita suoritettavien sovellusten enimmäismäärää. Ei tavallisten sovellusten käyttöön."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"kaikkien taustalla toimivien sovellusten sulkeminen"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"pakota taustasovelluksia sulkeutumaan"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Antaa sovelluksen hallita, suoritetaanko toiminnot aina loppuun heti, kun ne siirtyvät taustalle. Ei tavallisten sovellusten käyttöön."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"muokkaa akun tilastoja"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Antaa sovelluksen muokata kerättyjä akkutilastoja. Ei tavallisten sovellusten käyttöön."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Antaa sovelluksen käynnistää täyden varmuuskopioinnin vahvistuskäyttöliittymän. Minkään sovelluksen ei tule käyttää tätä."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"näytä luvattomia ikkunoita"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Antaa sovelluksen luoda ikkunoita, jotka on tarkoitettu sisäisen järjestelmäkäyttöliittymän käytettäviksi. Ei tavallisten sovellusten käyttöön."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"näytä järjestelmätason ilmoituksia"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"piirrä muihin sovelluksiin"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Antaa sovelluksen näyttää järjestelmähälytysikkunoita. Haitalliset ohjelmat voivat ottaa koko näytön haltuun."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"muokkaa yleistä animaationopeutta"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Antaa sovelluksen muuttaa yleistä animaationopeutta (nopeuttaa tai hidastaa animaatioita) milloin tahansa."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Antaa sovelluksen myöntää tai kieltää tiettyjä käyttööoikeuksia itselleen tai muille sovelluksille. Haittaohjelmat voivat käyttää tämän ominaisuuden avulla toimintoja, joiden käyttöön et ole antanut lupaa."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ensisijaisten sovellusten asettaminen"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Antaa sovelluksen muokata ensisijaisia sovelluksia. Haitalliset sovellukset voivat muuttaa käynnistettäviä sovelluksia huomaamattomasti ja kerätä henkilökohtaisia tietoja matkimalla nykyisiä sovelluksia."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"muokkaa yleisiä järjestelmän asetuksia"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"muokkaa järjestelmän asetuksia"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Antaa sovelluksen muokata järjestelmän asetustietoja. Haitalliset sovellukset voivat vahingoittaa järjestelmän määritystä."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"muokkaa suojatun järjestelmän asetuksia"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Antaa sovelluksen muokata järjestelmän suojattuja asetustietoja. Ei tavallisten sovellusten käyttöön."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"muokkaa Googlen palvelukarttaa"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Antaa sovelluksen muokata Googlen palvelukarttaa. Ei tavallisten sovellusten käyttöön."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"käynnisty automaattisesti uudelleenkäynnistyksen yhteydessä"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"suorita laitteen käynnistyessä"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Antaa sovelluksen käynnistyä heti, kun laite on käynnistynyt. Tämä voi pidentää tablet-laitteen käynnistysaikaa ja hidastaa sen yleistä käyttöä sovelluksen ollessa aina käynnissä."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Antaa sovelluksen käynnistyä heti, kun laite on käynnistynyt. Tämä voi pidentää puhelimen käynnistysaikaa ja hidastaa puhelimen yleistä käyttöä sovelluksen ollessa aina käynnissä."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"lähetä tärkeä lähetys"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Antaa sovelluksen lähettää pysyviä lähetyksiä, jotka pysyvät olemassa lähetyksen päätyttyä. Haitalliset sovellukset voivat tehdä tablet-laitteesta hitaan tai epävakaan kasvattamalla sen muistinkäyttöä liikaa."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Antaa sovelluksen lähettää pysyviä lähetyksiä, jotka pysyvät olemassa lähetyksen päätyttyä. Haitalliset sovellukset voivat tehdä puhelimesta hitaan tai epävakaan kasvattamalla sen muistinkäyttöä liikaa."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"lue yhteystietoja"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"kirjoita yhteystietoja"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"lue yhteystietoja"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Antaa sovelluksen lukea kaikki tablet-laitteesi yhteystiedot, myös tiedot siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat lähettää sen avulla yhteystietojasi muille."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Antaa sovelluksen lukea kaikki puhelimesi yhteystiedot, myös tiedot siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat lähettää sen avulla yhteystietojasi muille."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"muokkaa yhteystietoja"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Antaa sovelluksen muokata kaikkia tablet-laitteesi yhteystietoja, myös tietoja siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat poistaa tai muokata sen avulla yhteystietojasi."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Antaa sovelluksen muokata kaikkia puhelimesi yhteystietoja, myös tietoja siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat poistaa tai muokata sen avulla yhteystietojasi."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"lue puhelulokia"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Antaa sovelluksen lukea tablet-laitteesi puhelulokia, kuten tietoja vastatuista ja soitetuista puheluista. Haitalliset sovellukset voivat lähettää tietojasi muille henkilöille."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Antaa sovelluksen lukea puhelimesi puhelulokia, kuten tietoja vastatuista ja soitetuista puheluista. Haitalliset sovellukset voivat lähettää tietojasi muille henkilöille."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"kirjoita puhelulokiin"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Antaa sovelluksen muokata tablet-laitteesi puhelulokia, kuten tietoja vastatuista ja soitetuista puheluista. Haitalliset sovellukset voivat poistaa puhelulokisi tai muokata sitä."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Antaa sovelluksen muokata puhelimesi puhelulokia, kuten tietoja vastatuista ja soitetuista puheluista. Haitalliset sovellukset voivat poistaa puhelulokisi tai muokata sitä."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"lukea profiilisi tiedot"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"lue omia yhteystietoja"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Antaa sovelluksen lukea laitteelle tallennettuja henkilökohtaisia tietoja, kuten nimen ja yhteystietoja. Tämä antaa sovelluksen tunnistaa sinut ja lähettää profiilitietojasi muille."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"kirjoittaa profiilin tietoihin"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"muokkaa omia yhteystietoja"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Antaa sovelluksen muuttaa laitteelle tallennettuja henkilökohtaisia tietoja, kuten nimeä ja yhteystietoja, tai lisätä niitä. Tämä antaa muiden sovellusten tunnistaa sinut ja lähettää profiilitietojasi muille."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lue sosiaalista streamia"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Antaa sovelluksen käyttää ja synkronoida sinun ja kavereidesi päivityksiä sosiaalisista palveluista. Haitalliset sovellukset voivat käyttää tätä sosiaalisissa verkostoissa kavereidesi kanssa käytyjen yksityisten keskustelujen lukemiseen."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"pakota puhelin käynnistymään uudelleen"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Antaa sovelluksen pakottaa tablet-laitteen käynnistymään uudelleen."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Antaa sovelluksen pakottaa puhelimen käynnistymään uudelleen."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"ota käyttöön tiedostojärjestelmiä ja poistaa niitä käytöstä"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"käytä USB:n tiedostojärj."</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"käytä SD-kortin tiedostojärjestelmää"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Antaa sovelluksen ottaa käyttöön ja poistaa käytöstä siirrettävän tallennustilan tiedostojärjestelmiä."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"alusta ulkoinen tallennustila"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"tyhjennä USB-tallennustila"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"tyhjennä SD-kortti"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Antaa sovelluksen alustaa siirrettävän tallennustilan."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"hae tietoja sisäisestä tallennustilasta"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Antaa sovelluksen hakea tietoja sisäisestä tallennustilasta."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Antaa sovelluksen ottaa käyttöön tai poistaa käytöstä sisäistä tallennustilaa."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"nimeä sisäistä tallennustilaa uudelleen"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Antaa sovelluksen nimetä sisäisen tallennustilan uudelleen."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"hallitse värinää"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"hallitse värinää"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Antaa sovelluksen hallita värinää."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"hallitse taskulamppua"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Antaa sovelluksen hallita taskulamppua."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Antaa sovelluksen kertoa järjestelmälle, mitä widgetejä mikäkin sovellus voi käyttää. Tämän luvan saanut sovellus voi antaa muille sovelluksille oikeuden käyttää henkilökohtaisia tietoja. Ei tavallisten sovellusten käyttöön."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"muokkaa puhelimen tilaa"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Antaa sovelluksen hallita laitteen puhelinominaisuuksia. Jos sovelluksella on tämä oikeus, se voi esimerkiksi vaihtaa verkkoa tai ottaa puhelinradion käyttöön tai poistaa sen käytöstä ilmoittamatta käyttäjälle."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"lue puhelimen tila ja identiteetti"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"lue puhelimen tila ja identiteetti"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Antaa sovelluksen käyttää laitteen puhelinominaisuuksia. Tällä luvalla sovellus voi määrittää puhelimen puhelinnumeron ja sarjanumeron, puhelun aktiivisuuden, puhelun kohdenumeron sekä muita vastaavia tietoja."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"estä tablet-laitetta menemästä virransäästötilaan"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"estä puhelinta menemästä virransäästötilaan"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Suorita alemman tason valmistajan testinä ja anna täydet oikeudet puhelimen laitteistolle. Käytettävissä vain, kun puhelin on valmistajan testitilassa."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"aseta taustakuva"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Antaa sovelluksen asettaa laitteen taustakuvan."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"aseta taustakuvan kokovihjeitä"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"säädä taustakuvan kokoa"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Antaa sovelluksen asettaa laitteen taustakuvakoon vinkkejä."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"palauta järjestelmän tehdasasetukset"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Antaa sovelluksen palauttaa laitteen täysin tehdasasetuksiin sekä poistaa kaikki tiedot, määritykset ja asennetut sovellukset."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Antaa sovelluksen muuttaa puhelimen aikavyöhykettä."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"toimi AccountManagerService-sovelluksena"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Antaa sovelluksen soittaa puheluja tilien todentajille."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"saa selville tunnetut tilit"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"etsi tilejä laitteelta"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Antaa sovelluksen noutaa tablet-laitteella käytettävien tilien luettelon."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Antaa sovelluksen noutaa puhelimella käytettävien tilien luettelon."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"toimia tilin varmentajana"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"luo tilejä ja aseta salasanoja"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Antaa sovelluksen käyttää tilienhallinnan tilintodennustehtäviä, kuten uusien tilien luomista sekä niiden salasanojen lukemista ja asettamista."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"hallinnoi tililuetteloa"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"lisää tai poista tilejä"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Antaa sovelluksen suorittaa toimintoja, kuten lisätä ja poistaa tilejä sekä poistaa niiden salasanoja."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"käytä tilin todennustunnuksia"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"käytä laitteen tilejä"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Antaa sovelluksen pyytää todennustunnuksia."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"näytä verkoston tila"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"tarkastele verkkoyhteyksiä"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Antaa sovelluksen tarkastella kaikkien verkkojen tilaa."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"käytä internetiä"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Antaa sovelluksen luoda verkkopistokkeita."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Antaa sovelluksen muuttaa internetyhteyden jakamisen tilaa."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"muuta taustatietojen käyttöasetuksia"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Antaa sovelluksen muuttaa taustatietojen käyttöasetuksia."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"näyttää wifi-yhteyden tilan"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"näytä wifi-yhteydet"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Antaa sovelluksen tarkastella wifi-yhteyden tilaa."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"vaihda wifi-yhteyden tilaa"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"muodosta ja katkaise wifi-yhteys"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Antaa sovelluksen yhdistää wifi-tukiasemiin tai katkaista yhteyden sekä tehdä muutoksia määritettyihin wifi-verkkoihin."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"anna ottaa vastaan wifi-ryhmälähetyksiä"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Antaa sovelluksen vastaanottaa paketteja, joita ei ole osoitettu suoraan laitteellesi. Tämä saattaa olla hyödyllistä etsittäessä lähellä olevia palveluita. Tila käyttää enemmän virtaa kuin ei-monilähetystila."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth-hallinta"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"käytä Bluetooth-asetuksia"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Antaa sovelluksen määrittää paikallisen Bluetooth-tabletin asetukset sekä tunnistaa muita laitteita ja muodostaa niiden kanssa laitepareja."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Antaa sovelluksen määrittää paikallisen Bluetooth-puhelimen asetukset sekä tunnistaa muita laitteita ja muodostaa niiden kanssa laitepareja."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Tarkastele WiMAX-verkon tilaa"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Näytä WiMAX-yhteydet"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Antaa sovelluksen tarkastella WiMAX-verkon tilaa."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Vaihda WiMAX-verkon tilaa"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Antaa sovelluksen muodostaa yhteyden WiMAX-verkkoon ja katkaista yhteyden."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"luo Bluetooth-yhteyksiä"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"muodosta laitepari Bluetooth-laitteiden kanssa"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Antaa sovelluksen tarkastella paikallisen Bluetooth-tabletin asetuksia sekä muodostaa ja hyväksyä laitepariyhteyksiä."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Antaa sovelluksen tarkastella paikallisen Bluetooth-puhelimen asetuksia sekä muodostaa ja hyväksyä laitepariyhteyksiä muihin laitteisiin."</string> <string name="permlab_nfc" msgid="4423351274757876953">"hallitse Near Field Communication -tunnistusta"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Antaa sovelluksen kommunikoida NFC (Near Field Communication) -tunnisteiden, -korttien ja -lukijoiden kanssa."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"poista näppäinlukitus käytöstä"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"poista ruudun lukitus käytöstä"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Antaa sovelluksen ottaa näppäinlukon ja siihen liittyvän salasanasuojauksen pois käytöstä. Luvallinen esimerkki tästä on, kun puhelin poistaa näppäinlukon käytöstä puhelun saapuessa ja asettaa lukon takaisin käyttöön puhelun päättyessä."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"lue synkronointiasetuksia"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Antaa sovelluksen lukea synkronointiasetuksia, kuten sitä, onko Ihmiset-sovelluksen synkronointi käytössä."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"kirjoita synkronointiasetuksia"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ota synkronointi käyttöön tai poista se käytöstä"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Antaa sovelluksen muokata synkronointiasetuksia, kuten sitä, onko Ihmiset-sovelluksen synkronointi käytössä."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"lue synkronointitilastoja"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Antaa sovelluksen lukea synkronointitilastoja, kuten tehtyjen synkronointien historiaa."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Antaa sovelluksen saada tietoja tällä hetkellä synkronoitavista syötteistä."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"kirjoita tilattuja syötteitä"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Antaa sovelluksen muokata synkronoitavia syötteitä. Haitalliset sovellukset voivat muuttaa synkronoitavia syötteitä."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"käyttäjän määrittelemän sanakirjan lukeminen"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"lue sanakirjaan lisättyjä termejä"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Antaa sovelluksen lukea yksityisiä sanoja, nimiä tai ilmauksia, joita käyttäjä on voinut tallentaa käyttäjän sanakirjaan."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"käyttäjän määrittelemään sanakirjaan kirjoittaminen"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Antaa sovelluksen kirjoittaa uusia sanoja käyttäjän sanakirjaan."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"lue USB-tallennustilan sisältöä"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"lue SD-kortin sisältöä"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Antaa sovelluksen lukea USB-tallennustilan sisältöä."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Antaa sovelluksen lukea SD-kortin sisältöä."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"muokkaa/poista USB-sisältöä"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"muokkaa/poista SD-kortin sisältöä"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lue USB-tallennustilan sis."</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lue SD-kortin sisältöä"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Lue USB-muistin sisältöä (kuvia ja mediaa)."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Antaa sovelluksen lukea SD-kortin sisältöä. Kortti voi sisältää valokuvia ja muuta mediaa."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"muokkaa tai poista USB:n sis."</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"muokkaa tai poista SD-kortin sisältöä"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Antaa sovelluksen kirjoittaa USB-tallennustilaan."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Antaa sovelluksen kirjoittaa SD-kortille."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"muokkaa/poista sisäisen säilytystilan sisältöä"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Puhelimessa ei ole SIM-korttia."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Aseta SIM-kortti."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-korttia ei löydy tai ei voi lukea. Kytke SIM-kortti."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kortti on poistettu pysyvästi käytöstä."\n" Ota yhteyttä operaattoriisi ja hanki uusi SIM-kortti."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Edellinen kappale -painike"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Seuraava kappale -painike"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"merkki"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"sana"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"linkki"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"rivi"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Tehdastesti epäonnistui"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Kunta"</string> <string name="autofill_area" msgid="3547409050889952423">"Alue"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emiraatti"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lue selaimen historiaa ja kirjanmerkkejä"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lue verkon kirjanmerkkejä ja historiaa"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Antaa sovelluksen lukea kaikkia selaimen avaamia URL-osoitteita ja kaikkia selaimen kirjanmerkkejä."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"kirjoita selaimen historiaa ja kirjanmerkkejä"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"kirjoita verkon kirjanmerkkejä ja historiaa"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Antaa sovelluksen muokata Selaimen historiaa tai tablet-laitteelle tallennettuja kirjanmerkkejä. Haitalliset sovellukset voivat käyttää tätä Selaimen tietojen poistamiseen tai muokkaamiseen."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Antaa sovelluksen muokata Selaimen historiaa tai puhelimelle tallennettuja kirjanmerkkejä. Haitalliset sovellukset voivat käyttää tätä Selaimen tietojen poistamiseen tai muokkaamiseen."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"aseta herätys herätyskelloon"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"aseta herätys"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Antaa sovelluksen asettaa hälytyksen sisäiseen herätyskellosovellukseen. Jotkin herätyskellosovellukset eivät välttämättä käytä tätä ominaisuutta."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"lisää vastaajaviesti"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Antaa sovelluksen lisätä viestejä saapuneisiin vastaajaviesteihin."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Aseta"</string> <string name="date_time_done" msgid="2507683751759308828">"Valmis"</string> <string name="default_permission_group" msgid="2690160991405646128">"Oletus"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"UUTTA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"UUTTA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Lupia ei tarvita"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Piilota"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Näytä kaikki"</b></string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index c4d04aa6c3b7..6b8a2fd0fc09 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Vos messages"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Permet de lire et de rédiger vos SMS, e-mails et autres messages."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vos informations personnelles"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accéder directement aux contacts et à l\'agenda enregistrés sur la tablette"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accéder directement aux contacts et à l\'agenda enregistrés sur votre téléphone"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Votre position"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Déterminer votre position géographique"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Communications réseau"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Accéder à différentes fonctionnalités du réseau"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vos comptes"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accéder aux comptes disponibles"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Commandes du matériel"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Accès et contrôle de faible niveau du système."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Outils de développement"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Ces fonctionnalités sont destinées uniquement aux développeurs d\'applications."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Stockage"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accéder à la mémoire de stockage USB"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accéder à la carte SD"</string> @@ -193,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permet à l\'application de faire office de barre d\'état."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"Agrandir/réduire la barre d\'état"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permet à l\'application de réduire ou de développer la barre d\'état."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"Interception d\'appels sortants"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"transférer les appels sortants"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permet à l\'application de traiter les appels sortants et de modifier le numéro à composer. Des applications malveillantes peuvent surveiller, rediriger ou empêcher les appels sortants."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"Réception de SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"recevoir des messages texte (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permet à l\'application de recevoir et de traiter des SMS. Des applications malveillantes peuvent surveiller vos messages ou les supprimer avant même que vous puissiez les voir."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"Réception des MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"recevoir des messages texte (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permet à l\'application de recevoir et de traiter des MMS. Des applications malveillantes peuvent surveiller vos messages ou les supprimer avant même que vous puissiez les voir."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recevoir les messages de diffusion d\'urgence"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permet à l\'application de recevoir et de traiter les messages d\'urgence. Cette autorisation n\'est disponible que pour les applications système."</string> @@ -207,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Permet à l\'application d\'envoyer des SMS. Des applications malveillantes peuvent engendrer des frais en envoyant des messages à votre insu."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"envoyer des SMS sans confirmation"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permet à l\'application d\'envoyer des SMS. Des applications malveillantes peuvent engendrer des frais en envoyant des messages sans votre confirmation."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"Lecture des SMS ou MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"voir les messages texte (SMS ou MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permet à l\'application de lire les SMS stockés sur votre tablette ou sur la carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour lire vos messages confidentiels."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permet à l\'application de lire les SMS stockés sur votre téléphone ou sur la carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour lire vos messages confidentiels."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"Modification de SMS ou de MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"modifier les messages texte (SMS ou MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permet à l\'application de modifier les SMS stockés sur votre tablette ou sur la carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour supprimer vos messages."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permet à l\'application de modifier les SMS stockés sur votre téléphone ou sur votre carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour supprimer vos messages."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"Réception de WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recevoir des messages texte (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permet à l\'application de recevoir et de traiter des messages WAP. Des applications malveillantes peuvent surveiller vos messages ou les supprimer avant même que vous puissiez les voir."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"récupérer les applications en cours d\'exécution"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permet à l\'application de récupérer les informations relatives aux tâches actuellement ou récemment exécutées. Des applications malveillantes peuvent exploiter cette fonctionnalité pour obtenir des informations privées relatives à d\'autres applications."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"récupérer les détails des applications en cours d\'exécution"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permet à l\'application de récupérer des informations détaillées sur les tâches en cours d\'exécution ou récemment exécutées. Des applications malveillantes peuvent utiliser cette fonctionnalité pour obtenir des informations confidentielles relatives à d\'autres applications."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"réorganiser les applications en cours d\'exécution"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permet à l\'application de faire passer les tâches de premier plan en arrière-plan. Des applications malveillantes peuvent exploiter cette fonctionnalité pour passer au premier plan sans votre consentement."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"arrêter les applications en cours d\'exécution"</string> @@ -227,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permettre de contrôler le mode de compatibilité de l\'écran des autres applications. Des applications malveillantes peuvent perturber le fonctionnement d\'autres applications."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"activer le débogage des applications"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permet à l\'application d\'activer le débogage d\'une autre application. Des applications malveillantes peuvent exploiter cette fonctionnalité pour en fermer d\'autres."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"Modification des paramètres de l\'IU"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modifier les paramètres d\'affichage du système"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permet à l\'application de modifier la configuration actuelle, par exemple les paramètres régionaux ou la taille de la police."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"activer le mode voiture"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permet à l\'application d\'activer le mode Voiture."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"arrêter les processus en arrière-plan"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"fermer les autres applications"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permet à l\'application de fermer les processus en arrière-plan des autres applications, même si la mémoire est suffisante."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"forcer l\'arrêt des autres applications"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permet à l\'application de forcer l\'arrêt d\'autres applications."</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permet à l\'application d\'envoyer une notification indiquant la réception d\'un message WAP PUSH. Des applications malveillantes peuvent exploiter cette fonctionnalité pour créer de faux MMS entrants ou pour remplacer le contenu d\'une page Web par du contenu malveillant."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"Nombre maximal de processus en cours d\'exécution"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permet à l\'application de contrôler le nombre maximal de processus devant s\'exécuter. Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"fermer toutes les applications en arrière-plan"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forcer la fermeture des applications en arrière-plan"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permet à l\'application de contrôler si les activités sont toujours terminées ou non lorsqu\'elles passent en arrière-plan. Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"Modification des statistiques de la batterie"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permet à l\'application de modifier les statistiques collectées concernant la batterie. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permet à l\'application de lancer l\'interface utilisateur de confirmation de sauvegarde complète. Seules certaines applications peuvent bénéficier de cette permission."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"Affichage de fenêtres non autorisées"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permet à l\'application de créer des fenêtres destinées à être utilisées par l\'interface utilisateur du système interne. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"Affichage d\'alertes système"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ignorer les autres applications"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permet à l\'application d\'afficher les fenêtres d\'alerte système. Des applications malveillantes peuvent exploiter cette fonctionnalité pour prendre le contrôle de la totalité de l\'écran."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"Réglage de la vitesse des animations"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permet à l\'application de modifier à tout moment la vitesse générale des animations pour les ralentir ou les accélérer."</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permet à une application d\'accorder ou de révoquer des autorisations spécifiques pour celle-ci ou pour d\'autres applications. Des applications malveillantes peuvent exploiter cette autorisation pour accéder à des fonctionnalités auxquelles vous ne leur avez pas donné l\'accès."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"définir les applications préférées"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permet à l\'application de modifier vos applications préférées. Des applications malveillantes peuvent exploiter cette fonctionnalité pour modifier les applications exécutées en usurpant l\'identité de vos applications existantes dans le but de recueillir des données privées."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"Modification des paramètres généraux du système"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modifier les paramètres du système"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permet à l\'application de modifier les paramètres du système. Des applications malveillantes peuvent exploiter cette fonctionnalité pour corrompre la configuration de votre système."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"Modifier les paramètres de sécurité du système"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permet à l\'application de modifier les paramètres sécurisés du système. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Modification de la carte des services Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permet à l\'application de modifier la carte des services Google. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"Lancement automatique au démarrage"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"s\'exécuter au démarrage"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permet à l\'application de se lancer une fois le démarrage du système terminé. Elle peut rallonger le temps de démarrage de la tablette et ralentir son fonctionnement global en raison de son exécution continue."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permet à l\'application de se lancer une fois le démarrage du système terminé. Elle peut rallonger le temps de démarrage du téléphone et ralentir son fonctionnement global en raison de son exécution continue."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"Envoi d\'une diffusion persistante"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permet à l\'application d\'envoyer des diffusions \"persistantes\", qui perdurent après la fin de la diffusion. Des applications malveillantes peuvent ainsi ralentir la tablette ou la rendre instable en l\'obligeant à utiliser trop de mémoire."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permet à l\'application d\'envoyer des diffusions \"persistantes\", qui perdurent une fois la diffusion terminée. Des applications malveillantes peuvent ainsi ralentir le téléphone ou le rendre instable en l\'obligeant à utiliser trop de mémoire."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"Accès aux données des contacts"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"Édition des données d\'un contact"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"voir les contacts"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permet à l\'application de lire toutes les données de vos contacts enregistrées sur votre tablette, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin d\'envoyer les données de vos contacts à d\'autres personnes."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permet à l\'application de lire toutes les données de vos contacts enregistrées sur votre téléphone, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin d\'envoyer les données de vos contacts à d\'autres personnes."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modifier les contacts"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permet à l\'application de modifier les données de vos contacts enregistrées sur votre tablette, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin de supprimer ou de modifier les données de vos contacts."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permet à l\'application de modifier les données de vos contacts enregistrées sur votre téléphone, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin de supprimer ou de modifier les données de vos contacts."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"lire le journal d\'appels"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permet à l\'application de lire le journal d\'appels de votre tablette, y compris les données relatives aux appels entrants et sortants. Des applications malveillantes peuvent utiliser cette fonctionnalité pour envoyer vos données à des tiers."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permet à l\'application de lire le journal d\'appels de votre téléphone, y compris les données relatives aux appels entrants et sortants. Des applications malveillantes peuvent utiliser cette fonctionnalité pour envoyer vos données à des tiers."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"modifier le journal d\'appels"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permet à l\'application de lire le journal d\'appels de votre tablette, y compris les données relatives aux appels entrants et sortants. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier votre journal d\'appels."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permet à l\'application de lire le journal d\'appels de votre téléphone, y compris les données relatives aux appels entrants et sortants. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier votre journal d\'appels."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"lire vos données de profil"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"voir votre fiche de contact"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permet à l\'application de lire les informations de profil stockées sur votre appareil, telles que votre nom et vos coordonnées, ou d\'en ajouter. D\'autres applications peuvent alors vous identifier et envoyer vos informations de profil à des tiers."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"modifier vos données de profil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modifier votre fiche de contact"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permet à l\'application de modifier les informations de profil stockées sur votre appareil, telles que votre nom et vos coordonnées, ou d\'en ajouter. D\'autres applications peuvent alors vous identifier et envoyer vos informations de profil à des tiers."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lire flux des réseaux sociaux"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permet à l\'application d\'accéder aux mises à jour de vos amis sur les réseaux sociaux et de les synchroniser. Des applications malveillantes peuvent exploiter cette fonctionnalité pour accéder à des communications privées entre vous et vos amis sur ces réseaux."</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forcer le redémarrage du téléphone"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permet à l\'application de forcer le redémarrage de la tablette."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permet à l\'application de forcer le redémarrage du téléphone."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"Installer et désinstaller des systèmes de fichiers"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"accéder système fichiers mémoire USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accéder au système de fichiers de la carte SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permet à l\'application d\'installer et de désinstaller des systèmes de fichiers pour des périphériques de stockage amovibles."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"Formatage du périphérique de stockage externe"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"effacer la mémoire USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"effacer la carte SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permet à l\'application de formater le périphérique de stockage amovible."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"obtenir des informations sur la mémoire de stockage interne"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permet à l\'application d\'obtenir des informations sur la mémoire de stockage interne."</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permet à l\'application d\'installer ou de désinstaller la mémoire de stockage interne."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"renommer la mémoire de stockage interne"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permet à l\'application de renommer la mémoire de stockage interne."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"Contrôle du vibreur"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"contrôler le vibreur"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permet à l\'application de contrôler le vibreur."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"Contrôle de la lampe de poche"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permet à l\'application de contrôler la lampe de poche."</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permet à l\'application d\'indiquer au système les widgets pouvant être utilisés par les applications. Une application disposant de cette autorisation peut accorder à d\'autres applications l\'accès à des données personnelles. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Modification de l\'état du téléphone"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permet à l\'application de contrôler les fonctionnalités de téléphonie de l\'appareil. Une application disposant de cette autorisation peut, par exemple, basculer d\'un réseau à l\'autre et activer ou désactiver le signal radio du téléphone à votre insu."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"Lire l\'état et l\'identité du téléphone"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"voir l\'état et l\'identité du téléphone"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permet à l\'application d\'accéder aux fonctionnalités de téléphonie de l\'appareil. Cette autorisation permet de déterminer le numéro d\'appel et le numéro de série du téléphone, mais également de déterminer si un appel est actif, à quel numéro cet appel est connecté, etc."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"empêcher la tablette de passer en mode veille"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"empêcher le téléphone de passer en mode veille"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Permet d\'exécuter une application en mode test fabricant de faible niveau en autorisant ainsi l\'accès au téléphone. Cette fonctionnalité est uniquement disponible lorsque le téléphone est en mode test fabricant."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"Configuration du fond d\'écran"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permet à l\'application de définir le fond d\'écran du système."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Sélection de la la taille du fond d\'écran"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"modifier la taille du fond d\'écran"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permet à l\'application de définir les bulles d\'aide concernant la taille du fond d\'écran du système."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"Réinitialisation du système à ses paramètres d\'usine"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permet à l\'application de rétablir la configuration d\'usine du système en effaçant toutes les données, ainsi que les paramètres et les applications installées."</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permet à l\'application de modifier le fuseau horaire du téléphone."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"Agir en tant que service AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permet à l\'application d\'appeler le service AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"Identification des comptes connus"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"rechercher des comptes sur l\'appareil"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permet à l\'application d\'obtenir la liste des comptes connus de la tablette."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permet à l\'application d\'obtenir la liste des comptes connus du téléphone."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"Agir en tant que fonction d\'authentification de compte"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"créer des comptes et définir des mots de passe"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permet à l\'application d\'utiliser les fonctionnalités d\'authentification de compte du service AccountManager, y compris pour créer des comptes, et obtenir et définir les mots de passe associés."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"Gérer la liste des comptes"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"ajouter ou supprimer des comptes"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permet à l\'application d\'effectuer certaines opérations, par exemple d\'ajouter ou de supprimer des comptes et d\'effacer les mots de passe associés."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"Utiliser les informations d\'authentification d\'un compte"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"utiliser des comptes sur l\'appareil"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permet à l\'application de demander des jetons d\'authentification."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"Affichage de l\'état du réseau"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"afficher les connexions réseau"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permet à l\'application d\'afficher l\'état de tous les réseaux."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"Accès Internet complet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permet à l\'application de créer des connecteurs réseau."</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet à l\'application de modifier l\'état de la connectivité du partage de connexion."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"modifier le paramètre d\'utilisation des données en arrière-plan"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet à l\'application de modifier les paramètres de consommation des données en arrière-plan."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Affichage de l\'état du Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"afficher les connexions Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permet à l\'application d\'afficher des informations concernant l\'état de la connexion Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Modifier l\'état du Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"activer/désactiver la connexion Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permet à l\'application de se connecter à des points d\'accès Wi-Fi, de s\'en déconnecter et de modifier les réseaux Wi-Fi configurés."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"autoriser la réception de données en Wi-Fi multidiffusion"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permet à l\'application de recevoir des paquets qui ne sont pas directement adressés à votre appareil. Cela peut se révéler utile pour la recherche de services disponibles à proximité. Ce mode consomme plus que le mode non multidiffusion."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"gestion Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accéder aux paramètres Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permet à l\'application de configurer la tablette Bluetooth locale, d\'identifier des appareils distants et de les associer à la tablette."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permet à l\'application de configurer le téléphone Bluetooth local, d\'identifier des appareils distants et de les associer au téléphone."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Afficher l\'état du WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"afficher les connexions WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permet à l\'application de consulter les informations sur l\'état du WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Modifier l\'état du WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permet à l\'application de se connecter au réseau WiMAX et de s\'en déconnecter."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Création de connexions Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"associer à des appareils Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permet à l\'application d\'obtenir la configuration de la tablette Bluetooth locale, de se connecter à des appareils associés et d\'accepter leur connexion."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permet à l\'application d\'obtenir la configuration du téléphone Bluetooth local, de se connecter à des appareils associés et d\'accepter leur connexion."</string> <string name="permlab_nfc" msgid="4423351274757876953">"contrôler la communication en champ proche"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permet à l\'application de communiquer avec des tags, des cartes et des lecteurs compatibles avec la technologie NFC (communication en champ proche)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"Désactivation du verrouillage des touches"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"désactiver le verrouillage de l\'écran"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permet à l\'application de désactiver le verrouillage des touches et toute sécurité par mot de passe associée. Par exemple, votre téléphone désactive le verrouillage du clavier lorsque vous recevez un appel, puis le réactive lorsque vous raccrochez."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"Lecture des paramètres de synchronisation"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permet à l\'application de lire les paramètres de synchronisation, tels que l\'activation de la synchronisation pour l\'application Contacts."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"Écriture des paramètres de synchronisation"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activer/désactiver la synchronisation"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permet à l\'application de modifier les paramètres de synchronisation, tels que l\'activation de la synchronisation pour l\'application Contacts."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"Lecture des statistiques de synchronisation"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permet à l\'application de lire les statistiques de synchronisation, par exemple l\'historique des synchronisations effectuées."</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permet à l\'application d\'obtenir des informations sur les flux en cours de synchronisation."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"Écriture des flux auxquels vous êtes abonné"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permet à l\'application de modifier les flux en cours de synchronisation. Des applications malveillantes peuvent exploiter cette fonctionnalité pour modifier vos flux synchronisés."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"lire le dictionnaire défini par l\'utilisateur"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"voir les termes ajoutés au dictionnaire"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permet à l\'application de lire tous les mots, noms et expressions privés que l\'utilisateur a pu enregistrer dans son dictionnaire personnel."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"enregistrer dans le dictionnaire défini par l\'utilisateur"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permet à l\'application d\'enregistrer de nouveaux mots dans le dictionnaire personnel de l\'utilisateur."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"lire contenu de la mémoire USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"lire le contenu de la carte SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permet à l\'appli de lire contenu de mémoire USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permet à l\'application de lire le contenu de la carte SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"Modifier/Supprimer contenu mémoire USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modifier/supprimer le contenu de la carte SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"voir le contenu de la mémoire USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"voir le contenu de la carte SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permet à l\'appli de lire le contenu de la mémoire USB (photos, fichiers multimédias, etc.)."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permet à l\'application de lire le contenu d\'une carte SD, qui peut inclure des photos et des fichiers multimédias."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modifier ou supprimer le contenu de la mémoire USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modifier ou supprimer le contenu de la carte SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permet à l\'application de modifier le contenu de la mémoire de stockage USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permet à l\'application de modifier le contenu de la carte SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"Modifier/Supprimer contenu mémoire interne"</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Aucune carte SIM n\'est insérée dans le téléphone."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insérez une carte SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Carte SIM absente ou illisible. Insérez une carte SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Votre carte SIM a été définitivement désactivée."\n" Veuillez contacter votre opérateur de téléphonie mobile pour en obtenir une autre."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Bouton du titre précédent"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Bouton du titre suivant"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Commune"</string> <string name="autofill_area" msgid="3547409050889952423">"Région"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Émirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lire l\'historique et les favoris du navigateur"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"voir l\'historique et les favoris Web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permet à l\'application de lire toutes les URL auxquelles le navigateur a accédé, ainsi que tous ses favoris."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"écrire dans l\'historique et les favoris du navigateur"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"modifier l\'historique et les favoris Web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris stockés sur votre tablette. Des applications malveillantes peuvent exploiter cette fonctionnalité pour effacer ou modifier les données de votre navigateur."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris stockés sur votre téléphone. Des applications malveillantes peuvent exploiter cette fonctionnalité pour effacer ou modifier les données de votre navigateur."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"régler le réveil"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"définir une alarme"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permet à l\'application de régler la sonnerie d\'un réveil installé. Cette fonctionnalité n\'est pas disponible sur tous les réveils."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"ajouter un message vocal"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permet à l\'application d\'ajouter des messages à votre messagerie vocale."</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Définir"</string> <string name="date_time_done" msgid="2507683751759308828">"OK"</string> <string name="default_permission_group" msgid="2690160991405646128">"Par défaut"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOUVEAU"</font>" :"</string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOUVEAU"</font>" :"</string> <string name="no_permissions" msgid="7283357728219338112">"Aucune autorisation requise"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Masquer"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Tout afficher"</b></string> diff --git a/core/res/res/values-h720dp/dimens.xml b/core/res/res/values-h720dp/dimens.xml index 6e991836bf8e..5a9c777e21c2 100644 --- a/core/res/res/values-h720dp/dimens.xml +++ b/core/res/res/values-h720dp/dimens.xml @@ -25,6 +25,6 @@ <dimen name="preference_screen_header_padding_side">0dip</dimen> <integer name="preference_screen_header_scrollbarStyle">0x0</integer> <!-- insideOverlay --> - <integer name="preference_fragment_scrollbarStyle">0x0</integer> <!-- insideOverlay --> + <integer name="preference_fragment_scrollbarStyle">0x02000000</integer> <!-- outsideOverlay --> </resources> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 8a04917d60cb..1afc3cdfe94e 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"आपके संदेश"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"अपने SMS, ईमेल, और अन्य संदेशों को पढ़ें और लिखें."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"आपकी निजी जानकारी"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"टेबलेट पर संग्रहीत आपके संपर्कों और कैलेंडर में सीधे पहुंचें."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"फ़ोन पर संग्रहीत आपके संपर्कों और कैलेंडर में सीधे पहुंचें."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"आपका स्थान"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"अपने भौतिक स्थान पर नज़र रखें."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"नेटवर्क संचार"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"विभिन्न नेटवर्क सुविधाओं पर पहुंचें."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"आपके खाते"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"उपलब्ध खातों में पहुंचें."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"हार्डवेयर नियंत्रण"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"सिस्टम का निम्न-स्तर पहुंच और नियंत्रण."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"डेवलपमेंट टूल"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"सुविधाएं जो केवल एप्लिकेशन डेवलपर के लिए आवश्यक हैं."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"संग्रहण"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB संग्रहण में पहुंचें."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD कार्ड में पहुंचें."</string> @@ -193,30 +261,32 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"एप्लिकेशन को स्थिति बार होने देता है."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"स्थिति बार विस्तृत/संक्षिप्त करें"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"एप्लिकेशन को स्थिति बार को विस्तृत या संक्षिप्त करने देता है."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"आउटगोइंग कॉल बीच में रोकें"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"आउटगोइंग कॉल को कहीं और भेजें"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"एप्लिकेशन को आउटगोइंग कॉल संसाधित करने और डायल किए जाने वाला नंबर बदलने देता है. दुर्भावनापूर्ण एप्लिकेशन आउटगोइंग कॉल की निगरानी कर सकते हैं, रीडायरेक्ट कर सकते हैं, या उन्हें रोक सकते हैं."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS प्राप्त करें"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"पाठ संदेश (SMS) प्राप्त करें"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"एप्लिकेशन को SMS संदेशों को प्राप्त करने और संसाधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों की निगरानी कर सकते हैं या आपको दिखाए बिना उन्हें हटा सकते हैं."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS प्राप्त करें"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"पाठ संदेश (MMS) प्राप्त करें"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"एप्लिकेशन को MMS संदेश प्राप्त करने और संसाधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों की निगरानी कर सकते हैं या आपको दिखाए बिना उन्हें हटा सकते हैं."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"आपातकालीन प्रसारण प्राप्त करें"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"एप्लिकेशन को आपातकालीन प्रसारण संदेशों को प्राप्त करने और संसाधित करने देता है. यह अनुमति केवल सिस्टम एप्लिकेशन में उपलब्ध है."</string> <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"सेल प्रसारण संदेश पढ़ें"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"एप्लिकेशन को आपके उपकरण द्वारा प्राप्त सेल प्रसारण संदेशों को पढ़ने देता है. कुछ स्थानों पर आपको आपातकालीन स्थितियों की चेतानवी देने के लिए सेल प्रसारण अलर्ट वितरित किए जाते हैं. आपातकालीन सेल प्रसारण प्राप्त होने पर दुर्भावनापूर्ण एप्लिकेशन आपके उपकरण के निष्पादन या संचालन में हस्तक्षेप कर सकते हैं."</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"एप्लिकेशन को आपके उपकरण द्वारा प्राप्त सेल प्रसारण संदेशों को पढ़ने देता है. कुछ स्थानों पर आपको आपातकालीन स्थितियों की चेतावनी देने के लिए सेल प्रसारण अलर्ट वितरित किए जाते हैं. आपातकालीन सेल प्रसारण प्राप्त होने पर दुर्भावनापूर्ण एप्लिकेशन आपके उपकरण के निष्पादन या संचालन में हस्तक्षेप कर सकते हैं."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"SMS संदेश भेजें"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"एप्लिकेशन को SMS संदेशों को भेजने देता है. दुर्भावनापूर्ण एप्लिकेशन आपकी पुष्टि के बिना संदेश भेजकर आप पर शुल्क लगा सकते हैं."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"बिना किसी पुष्टि के SMS संदेश भेजें"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"एप्लिकेशन को SMS संदेशों को भेजने देता है. दुर्भावनापूर्ण एप्लिकेशन आपकी पुष्टि के बिना संदेशों को भेजकर आप पर शुल्क लगा सकते हैं."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS या MMS पढ़ें"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"अपने पाठ संदेश (SMS या MMS) पढ़ें"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"एप्लिकेशन को आपके टेबलेट या सिम कार्ड पर संग्रहीत SMS संदेशों को पढ़ने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके गोपनीय संदेश पढ़ सकते हैं."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"एप्लिकेशन को आपके फ़ोन या सिम कार्ड पर संग्रहीत SMS संदेशों को पढ़ने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके गोपनीय संदेशों को पढ़ सकते हैं."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS या MMS संपादित करें"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"अपने पाठ संदेश (SMS या MMS) संपादित करें"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"एप्लिकेशन को आपके टेबलेट या सिम कार्ड में संग्रहीत SMS संदेशों में लिखने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों को हटा सकते हैं."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"एप्लिकेशन को आपके फ़ोन या सिम कार्ड में संग्रहीत SMS संदेशों को लिखने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों को हटा सकते हैं."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP प्राप्त करें"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"पाठ संदेश (WAP) प्राप्त करें"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"एप्लिकेशन को WAP संदेशों को प्राप्त करने और संसाधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों की निगरानी कर सकते हैं या आपको दिखाए बिना उन्हें हटा सकते हैं."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"चल रहे एप्लिकेशन पुनर्प्राप्त करें"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"एप्लिकेशन को वर्तमान में और हाल ही में चल रहे कार्यों की जानकारी पुर्नप्राप्त करने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य एप्लिकेशन के बारे में निजी जानकारी खोज सकते हैं."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"चल रहे एप्लिकेशन के विवरण प्राप्त करें"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"एप्लिकेशन को वर्तमान में और हाल ही में चल रहे कार्यों की जानकारी प्राप्त करने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य एप्लिकेशन के बारे में निजी जानकारी खोज सकते हैं."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"चल रहे एप्लिकेशन पुन: क्रमित करें"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"एप्लिकेशन को अग्रभूमि और पृष्ठभूमि में कार्यों को ले जाने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके नियंत्रण के बिना स्वयं को बलपूर्वक आगे कर सकते हैं."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"चलने वाले एप्लिकेशन रोकें"</string> @@ -227,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"एप्लिकेशन को अन्य एप्लिकेशन के स्क्रीन संगतता मोड को नियंत्रित करने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य एप्लिकेशन का व्यवहार बाधित कर सकते हैं."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"एप्लिकेशन डीबग करना सक्षम करें"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"एप्लिकेशन को अन्य एप्लिकेशन के लिए डीबग किया जाना चालू करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग अन्य एप्लिकेशन को समाप्त करने के लिए कर सकते हैं."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"अपनी UI सेटिंग बदलें"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"सिस्टम प्रदर्शन सेटिंग बदलें"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"एप्लिकेशन को वर्तमान कॉन्फ़िगरेशन, जैसे स्थान या समग्र फ़ॉन्ट आकार, बदलने देता है."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"कार मोड सक्षम करें"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"एप्लिकेशन को कार मोड सक्षम करने देता है."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"पृष्ठभूमि प्रक्रियाएं रोकें"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"अन्य एप्लिकेशन बंद करें"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"एप्लिकेशन को स्मृति कम नहीं होने के बावजूद भी अन्य एप्लिकेशन की पृष्ठिभूमि प्रक्रियाएं समाप्त करने देता है."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"अन्य एप्लिकेशन बलपूर्वक बंद करें"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"एप्लिकेशन को अन्य एप्लिकेशन बलपूर्वक बंद करने देता है."</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"एप्लिकेशन को वह सूचना प्रसारित करने देता है जो WAP PUSH संदेश को प्राप्त हुआ है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग नकली MMS संदेश प्राप्त करने या किसी वेबपृष्ठ की सामग्री को दुर्भावनापूर्ण दूसरे रूप से चुपचाप प्रतिस्थापित करने के लिए कर सकते हैं."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"चल रही प्रक्रियाओं की संख्या सीमित करें"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"एप्लिकेशन को चलाई जाने वाली अधिकतम प्रक्रियाओं को नियंत्रित करने देता है. सामान्य एप्लिकेशन के लिए कभी आवश्यक नहीं होती."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"सभी पृष्ठभूमि एप्लिकेशन बंद करें"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"पृष्ठभूमि एप्लिकेशन को बलपूर्वक बंद करें"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"एप्लिकेशन को यह नियंत्रित करने देता है कि पृष्ठभूमि में जाते ही गतिविधियां पूर्ण हो जाती है या नही. सामान्य एप्लिकेशन के लिए कभी आवश्यकता नहीं होती."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"बैटरी आंकड़े संशोधित करें"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"एप्लिकेशन को बैटरी के संकलित आंकड़ों को संशोधित करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"एप्लिकेशन को पूर्ण बैकअप पुष्टिकरण UI लॉन्च करने देता है. किसी एप्लिकेशन द्वारा उपयोग के लिए नहीं."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"अनधिकृत विंडो दिखाएं"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"किसी एप्लिकेशन को ऐसी विंडो बनाने देता है जिनका उपयोग आंतरिक सिस्टम उपयोगकर्ता इंटरफ़ेस द्वारा किया जाना है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"सिस्टम-स्तर अलर्ट प्रदर्शित करें"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"अन्य एप्लिकेशन पर खींचें"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"एप्लिकेशन को सिस्टम अलर्ट विंडो प्रदर्शित करने देता है. दुर्भावनापूर्ण एप्लिकेशन संपूर्ण स्क्रीन टेक ओवर कर सकते हैं."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"वैश्विक एनिमेशन गति संशोधित करें"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"एप्लिकेशन को किसी भी समय वैश्विक एनिमेशन गति (तेज़ या धीमे एनिमेशन) बदलने देता है."</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"एप्लिकेशन को उसके या अन्य एप्लिकेशन के लिए विशेष अनुमतियां देने या रद्द करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग उन सुविधाओं तक पहुंचने के लिए कर सकते हैं जो आपने उन्हें नहीं दी हैं."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"पसंदीदा एप्लिकेशन सेट करें"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"एप्लिकेशन को आपके पसंदीदा एप्लिकेशन को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपसे निजी डेटा एकत्रित करने के लिए आपके मौजूदा एप्लिकेशन को स्पूफ़ करके, चलाए जाने वाले एप्लिकेशन को चुपचाप बदल सकते हैं."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"वैश्विक सिस्टम सेटिंग संशोधित करें"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"सिस्टम सेटिंग संशोधित करें"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"एप्लिकेशन को सिस्टम सेटिंग डेटा संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके सिस्टम के कॉन्फ़िगरेशन को दूषित कर सकते हैं."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"सुरक्षित सिस्टम सेटिंग संशोधित करें"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"एप्लिकेशन को सिस्टम के सुरक्षित सेटिंग डेटा को संशोधित करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Google सेवाएं मैप संशोधित करें"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"एप्लिकेशन को Google सेवाओं का मानचित्र संशोधित करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"बूट पर स्वचालित रूप से प्रारंभ करें"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"प्रारंभ होने पर चलाएं"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"एप्लिकेशन को सिस्टम द्वारा बूटिंग पूर्ण करते ही स्वतः आरंभ करने देता है. इससे टेबलेट को आरंभ होने में अधिक समय लग सकता है और एप्लिकेशन को निरंतर चलाकर संपूर्ण टेबलेट को धीमा करने देता है."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"एप्लिकेशन को सिस्टम द्वारा बूटिंग पूर्ण करते ही स्वतः प्रारंभ होने देता है. इससे फ़ोन को प्रारंभ होने में अधिक समय लग सकता है और एप्लिकेशन के निरंतर चलते रहने से संपूर्ण फ़ोन प्रक्रियाएं धीमी हो सकती हैं."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"स्टिकी प्रसारण भेजें"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"एप्लिकेशन को स्टिकी प्रसारण भेजने देता है, जो प्रसारण समाप्त होने के बाद भी बने रहते हैं. दुर्भावनापूर्ण एप्लिकेशन टेबलेट की बहुत अधिक स्मृति का उपयोग करके उसे धीमा या अस्थिर कर सकते हैं."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"एप्लिकेशन को स्टिकी प्रसारण भेजने देता है, जो प्रसारण समाप्त होने के बाद भी बना रहता है. दुर्भावनापूर्ण एप्लिकेशन फ़ोन की बहुत अधिक स्मृति का उपयोग करके उसे धीमा या अस्थिर कर सकते हैं."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"संपर्क डेटा पढ़ें"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"संपर्क डेटा लिखें"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"अपने संपर्क पढ़ें"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल, ईमेल, या उनसे संचार करने की आवृत्ति सहित, आपके टेबलेट पर संग्रहीत आपके संपर्कों का सभी डेटा पढ़ने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल करने, ईमेल करने, या उनसे संचार करने की आवृत्ति सहित, आपके फ़ोन पर संग्रहीत आपके संपर्कों का सभी डेटा पढ़ने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"अपने संपर्क संशोधित करें"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल, ईमेल, या उनसे संचार करने की आवृत्ति सहित, आपके टेबलेट पर संग्रहीत आपके संपर्कों का डेटा संशोधित करने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल, ईमेल, या उनसे संचार करने की आवृत्ति सहित, आपके फ़ोन पर संग्रहीत आपके संपर्कों का डेटा संशोधित करने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"कॉल लॉग पढ़ें"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"एप्लिकेशन को इनकमिंग और आउटगोइंग कॉल के डेटा सहित, आपके टेबलेट का कॉल लॉग पढ़ने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य लोगों को आपका डेटा भेजने के लिए इसका उपयोग कर सकते हैं."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"एप्लिकेशन को इनकमिंग और आउटगोइंग कॉल के डेटा सहित, आपके फ़ोन का कॉल लॉग पढ़ने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य लोगों को आपका डेटा भेजने के लिए इसका उपयोग कर सकते हैं."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"कॉल लॉग लिखें"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"एप्लिकेशन को इनकमिंग और आउटगोइंग कॉल के डेटा सहित, आपके टेबलेट का कॉल लॉग संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके कॉल लॉग को मिटाने या संशोधित करने के लिए इसका उपयोग कर सकते हैं."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"एप्लिकेशन को इनकमिंग और आउटगोइंग कॉल के डेटा सहित, आपके फ़ोन का कॉल लॉग संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके कॉल लॉग को मिटाने या संशोधित करने के लिए इसका उपयोग कर सकते हैं."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"अपना प्रोफ़ाइल डेटा पढ़ें"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"स्वयं का संपर्क कार्ड पढ़ें"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"एप्लिकेशन को आपके उपकरण में संग्रहीत नाम और संपर्क जानकारी जैसी निजी प्रोफ़ाइल जानकारी पढ़ने देता है. इसका अर्थ है कि एप्लिकेशन आपको पहचान सकता है और आपकी प्रोफ़ाइल की जानकारी अन्य लोगों को भेज सकता है."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"अपने प्रोफ़ाइल डेटा में लिखें"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"स्वयं का संपर्क कार्ड संशोधित करें"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"एप्लिकेशन को आपके उपकरण पर संग्रहीत निजी प्रोफ़ाइल जानकारी, जैसे आपका नाम और संपर्क जानकारी बदलने या जोड़ने देता है. इसका अर्थ है कि अन्य एप्लिकेशन आपको पहचान सकते हैं और आपकी प्रोफ़ाइल जानकारी दूसरों को भेज सकते हैं."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"अपनी सामाजिक स्ट्रीम पढ़ें"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"एप्लिकेशन को आपके और आपके मित्रों के सामाजिक अपडेट पर पहुंचने और समन्वयित करने देता है. दुर्भावनापूर्ण एप्लिकेशन सामाजिक नेटवर्क पर आपके और आपके मित्रों के बीच निजी संचार पढ़ने के लिए इसका उपयोग कर सकते हैं."</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"फ़ोन रीबूट के लिए बाध्य करें"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"एप्लिकेशन को टेबलेट रीबूट करने के लिए बाध्य करने देता है."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"एप्लिकेशन को फ़ोन बलपूर्वक रीबूट करने देता है."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"फ़ाइलसिस्टम माउंट और अनमाउंट करें"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB संग्रहण फ़ाइल सिस्टम पर पहुंचें"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD कार्ड फ़ाइल सिस्टम पर पहुंचें"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"एप्लिकेशन को निकाले जाने योग्य संग्रहण के लिए फ़ाइल सिस्टम माउंट और अनमाउंट करने देता है."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"बाहरी संग्रहण प्रारूपित करें"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB संग्रहण मिटाएं"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD कार्ड मिटाएं"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"एप्लिकेशन को निकालने योग्य संग्रहण फ़ॉर्मेट करने देता है."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"आंतरिक संग्रहण पर जानकारी प्राप्त करें"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"एप्लिकेशन को आंतरिक संग्रहण की जानकारी प्राप्त करने देता है."</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"एप्लिकेशन को आंतरिक संग्रहण माउंट/अनमाउंट करने देता है."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"आंतरिक संग्रहण का नाम बदलें"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"एप्लिकेशन को आंतरिक संग्रहण का नाम बदलने देता है."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"कंपनकर्त्ता को नियंत्रित करें"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"कंपन नियंत्रित करें"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"एप्लिकेशन को कंपनकर्ता नियंत्रित करने देता है."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"फ़्लैशलाइट नियंत्रित करें"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"एप्लिकेशन को फ़्लैशलाइट नियंत्रित करने देता है."</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"एप्लिकेशन को सिस्टम को यह बताने देता है कि किस एप्लिकेशन द्वारा कौन से विजेट का उपयोग किया जा सकता है. कोई एप्लिकेशन, इस अनुमति के साथ अन्य एप्लिकेशन के निजी डेटा पर पहुंच सकते हैं. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"फ़ोन स्थिति संशोधित करें"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"एप्लिकेशन को उपकरण की फ़ोन सुविधाएं नियंत्रित करने देता है. इस अनुमति वाला कोई एप्लिकेशन आपको सूचित किए बिना नेटवर्क स्विच कर सकता है, फ़ोन का रेडियो चालू और बंद कर सकता है और ऐसे ही अन्य कार्य कर सकता है."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"फ़ोन की स्थिति और पहचान पढें"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"फ़ोन की स्थिति और पहचान पढ़ें"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"एप्लिकेशन को उपकरण की फ़ोन सुविधाओं तक पहुंचने देता है. इस अनुमति वाला कोई एप्लिकेशन इस फ़ोन का फ़ोन नंबर और सीरियल नंबर बता सकता है, यह बता सकता है कि कोई कॉल चल रहा है, वह नंबर जिससे कॉल किया गया है और ऐसी ही अन्य जानकारी."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"टेबलेट को निष्क्रिय होने से रोकें"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"फ़ोन को निष्क्रिय होने से रोकें"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"फ़ोन हार्डवेयर में पूर्ण पहुंच की अनुमति देते हुए निम्न-स्तर निर्माता परीक्षण के रूप में चलाएं. केवल तभी उपलब्ध जब कोई फ़ोन निर्माता परीक्षण मोड में चल रहा हो."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"वॉलपेपर सेट करें"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"एप्लिकेशन को सिस्टम वॉलपेपर सेट करने देता है."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"वॉलपेपर आकार सुझाव सेट करें"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"अपने वॉलपेपर का आकार समायोजित करें"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"एप्लिकेशन को सिस्टम वॉलपेपर आकार संकेत सेट करने देता है."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"फ़ैक्ट्री डिफ़ॉल्ट पर सिस्टम रीसेट करें"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"एप्लिकेशन को सभी डेटा, कॉन्फ़िगरेशन, और इंस्टॉल एप्लिकेशन मिटाकर, सिस्टम को पूरी तरह उसकी फ़ैक्टरी सेटिंग पर रीसेट करने देता है."</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"एप्लिकेशन को टेबलेट का समय क्षेत्र बदलने देता है."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"खाता प्रबंधक सेवा के रूप में कार्य करें"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"एप्लिकेशन को खाता प्रमाणकों को कॉल करने देता है."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"ज्ञात खातों का पता लगाएं"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"उपकरण पर खाते ढूंढें"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"किसी एप्लिकेशन को टेबलेट को ज्ञात खातों की सूची प्राप्त करने देता है."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"किसी एप्लिकेशन को फ़ोन को ज्ञात खातों की सूची प्राप्त करने देता है."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"खाता प्रमाणकर्त्ता के रूप में कार्य करें"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"खाते बनाएं और पासवर्ड सेट करें"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"एप्िलकेशन को खाता बनाने और उनके पासवर्ड प्राप्त करने और सेट करने सहित, खाता प्रबंधक की खाता प्रमाणक क्षमताओं का उपयोग करने देता है."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"खाता सूची प्रबंधित करें"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"खाते जोडें या निकालें"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"एप्लिकेशन को खाते जोड़ना और निकालना और उनके पासवर्ड हटाने जैसे कार्य करने देता है."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"किसी खाते के प्रमाणीकरण क्रेडेंशियल का उपयोग करें"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"उपकरण पर खातों का उपयोग करें"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"एप्लिकेशन को प्रमाणीकरण टोकन का अनुरोध करने देता है."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"नेटवर्क स्थिति देखें"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"नेटवर्क कनेक्शन देखें"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"एप्लिकेशन को सभी नेटवर्क की स्थिति को देखने देता है."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"पूर्ण इंटरनेट पहुंच"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"एप्लिकेशन को नेटवर्क सॉकेट बनाने देता है."</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"एप्लिकेशन को टेदर की गई नेटवर्क कनेक्टिविटी की स्थिति बदलने देता है."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"पृष्ठभूमि डेटा उपयोग सेटिंग बदलें"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"एप्लिकेशन को पृष्ठभूमि डेटा उपयोग सेटिंग बदलने देता है."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Wi-Fi स्थिति देखें"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi कनेक्शन देखें"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"एप्लिकेशन को Wi-Fi की स्थिति की जानकारी देखने देता है."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Wi-Fi स्थिति बदलें"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi से कनेक्ट और डिस्कनेक्ट करें"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"एप्लिकेशन को Wi-Fi पहुंच बिंदुओं से कनेक्ट और डिस्कनेक्ट करने और कॉन्फ़िगर किए गए Wi-Fi नेटवर्क में परिवर्तन करने देता है."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi मल्टीकास्ट प्राप्ति को अनुमति दें"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"एप्लिकेशन को ऐसे पैकेट प्राप्त करने देता है जो सीधे आपके उपकरण के लिए लक्षित न हों. आस-पास ऑफ़र की गई सेवाओं का पता लगाते समय यह उपयोगी हो सकता है. यह गैर-मल्टीकास्ट मोड से अधिक पावर का उपयोग करता है."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth व्यवस्थापन"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth सेटिंग पर पहुंचें"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"किसी एप्लिकेशन को स्थानीय Bluetooth टेबलेट कॉन्फ़िगर करने की और रिमोट उपकरणों के साथ खोजने और युग्मित करने देता है."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"एप्लिकेशन को स्थानीय Bluetooth फ़ोन कॉन्फ़िगर करने देता है, और रिमोट उपकरणों के साथ खोजने और युग्मित करने देता है."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX स्थिति देखें"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX कनेक्शन देखें"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"एप्लिकेशन को WiMAX की स्थिति की जानकारी देखने देता है."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX स्थिति बदलें"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"एप्लिकेशन को WiMAX नेटवर्क से कनेक्ट और डिस्कनेक्ट होने देता है."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth कनेक्शन बनाएं"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth उपकरणों के साथ युग्मित करें"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"एप्लिकेशन को स्थानीय Bluetooth टेबलेट का कॉन्फ़िगरेशन देखने और युग्मित उपकरणों के साथ कनेक्शन बनाने और स्वीकार करने देता है."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"एप्लिकेशन को स्थानीय Bluetooth फ़ोन का कॉन्फ़िगरेशन देखने, और युग्मित उपकरणों से कनेक्शन करने और स्वीकार करने देता है."</string> <string name="permlab_nfc" msgid="4423351274757876953">"नियर फ़ील्ड कम्यूनिकेशन नियंत्रित करें"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"एप्लिकेशन को नियर फ़ील्ड कम्यूनिकेशन (NFC) टैग, कार्ड, और रीडर के साथ संचार करने देता है."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"कीलॉक अक्षम करें"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"अपना स्क्रीन लॉक अक्षम करें"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"एप्लिकेशन को कीलॉक और कोई भी संबद्ध पासवर्ड सुरक्षा अक्षम करने देता है. इसका एक उपयुक्त उदाहरण इनकमिंग फ़ोन कॉल प्राप्त होते समय फ़ोन कीलॉक को अक्षम करना, और कॉल समाप्त हो जाने के बाद कीलॉक को पुन: सक्षम करना है."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"सिंक सेटिंग पढ़ें"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"एप्लिकेशन को समन्वयन सेटिंग पढ़ने देता है, जैसे लोग एप्लिकेशन के लिए समन्वयन सक्षम है या नहीं."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"सिंक सेटिंग लिखें"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"समन्वयन बंद या चालू टॉगल करें"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"एप्लिकेशन को समन्वयन सेटिंग संशोधित करने देता है, जैसे लोग एप्लिकेशन के लिए समन्वयन सक्षम है या नहीं."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"सिंक आंकड़े पढ़ें"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"एप्लिकेशन को समन्वयन आंकड़े पढ़ने देता है; उदा. हो चुके समन्वयनों का इतिहास."</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"एप्लिकेशन को वर्तमान में समन्वयित फ़ीड के बारे में विवरण प्राप्त करने देता है."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"ग्राहकी-प्राप्त फ़ीड लिखें"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"एप्लिकेशन को आपके वर्तमान समन्वयित फ़ीड को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके समन्वयित फ़ीड को बदल सकते है."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"उपयोगकर्ता-निर्धारित डिक्शनरी पढ़ें"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"डिक्शनरी में आपके द्वारा जोड़े गए शब्दों को पढ़ें"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"एप्लिकेशन को ऐसे निजी शब्दों, नामों और वाक्यांशों को पढ़ने देता है जो संभवत: उपयोगकर्ता द्वारा उपयोगकर्ता डिक्शनरी में संग्रहीत किए गए हों."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"उपयोगकर्ता-निर्धारित डिक्शनरी में लिखें"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"एप्लिकेशन को उपयोगकर्ता डिक्शनरी में नए शब्द लिखने देता है."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USB संग्रहण की सामग्री पढ़ें"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SD कार्ड की सामग्री पढ़ें"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"एप्लि. को USB संग्रहण की सामग्री पढ़ने देता है."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"एप्लिकेशन को SD कार्ड की सामग्री पढ़ने देता है."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB संग्रहण सामग्रियों को संशोधित करें/हटाएं"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD कार्ड सामग्रियां संशोधित करें/हटाएं"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"अपने USB संग्रहण की सामग्री पढ़ें"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"अपने SD कार्ड की सामग्री पढ़ें"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"एप्लि. को USB संग्रहण की सामग्री पढ़ने देता है, जिसमें फ़ोटो व मीडिया हो सकते हैं."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"एप्लिकेशन को SD कार्ड की सामग्री पढ़ने देता है, जिसमें फ़ोटो और मीडिया हो सकते हैं."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"अपने USB संग्रहण की सामग्री संशोधित करें या हटाएं"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"अपने SD कार्ड की सामग्री संशोधित करें या हटाएं"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"एप्लि. को USB संग्रहण में लिखने देता है."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"एप्लिकेशन को SD कार्ड पर लिखने देता है."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"आंतरिक मीडिया संग्रहण सामग्रियों को संशोधित करें/हटाएं"</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"फ़ोन में कोई सिम कार्ड नहीं है."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"कोई सिमकार्ड डालें."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"सिम कार्ड गुम है या पढ़ने योग्य नहीं है. कोई सिम कार्ड डालें."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"आपका सिम कार्ड स्थायी रूप से अक्षम कर दिया गया है."\n" दूसरे SIM कार्ड के लिए अपने वायरलेस सेवा प्रदाता से संपर्क करें."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"पिछला ट्रैक बटन"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"अगला ट्रैक बटन"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"मोहल्ला"</string> <string name="autofill_area" msgid="3547409050889952423">"क्षेत्र"</string> <string name="autofill_emirate" msgid="2893880978835698818">"अमीरात"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ब्राउज़र का इतिहास और बुकमार्क पढ़ें"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"अपने वेब बुकमार्क और इतिहास पढ़ें"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"एप्लिकेशन को ब्राउज़र द्वारा देखे गए सभी URL, और ब्राउज़र के सभी बुकमार्क पढ़ने देता है."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"ब्राउज़र का इतिहास और बुकमार्क लिखें"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"वेब बुकमार्क और इतिहास लिखें"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"एप्लिकेशन को आपके टेबलेट में संग्रहीत ब्राउज़र इतिहास या बुकमार्क को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग आपके ब्राउज़र डेटा को मिटाने या संशोधित करने के लिए कर सकते हैं."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"एप्लिकेशन को आपके फ़ोन में संग्रहीत ब्राउज़र इतिहास या बुकमार्क को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग आपके ब्राउज़र डेटा को मिटाने या संशोधित करने के लिए कर सकते हैं."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"अलार्म क्लॉक में अलार्म सेट करें"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"अलार्म सेट करें"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"एप्लिकेशन को इंस्टॉल किए गए अलार्म घड़ी एप्लिकेशन में अलार्म सेट करने देता है. हो सकता है कुछ अलार्म घड़ी एप्लिकेशन में यह सुविधा न हो."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"ध्वनिमेल जोड़ें"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"एप्लिकेशन को आपके ध्वनिमेल इनबॉक्स में संदेश जोड़ने देता है."</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"सेट करें"</string> <string name="date_time_done" msgid="2507683751759308828">"पूर्ण"</string> <string name="default_permission_group" msgid="2690160991405646128">"डिफ़ॉल्ट"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"नया: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"नया: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"किसी अनुमति की आवश्यकता नहीं है"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"छुपाएं"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"सभी दिखाएं"</b></string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 0b2f035ff47f..fafb31c1fdf2 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Vaš tabletni uređaj će se isključiti."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Vaš će se telefon ipak isključiti"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Želite li isključiti uređaj?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Ponovno pokretanje u sigurnom načinu rada"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Želite li ponovo pokrenuti uređaj u sigurnom načinu rada? To će onemogućiti sve aplikacije treće strane koje ste instalirali. Bit će vraćene kada ponovo pokrenete uređaj."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Nedavni"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Nema nedavnih aplikacija."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opcije tabletnog uređaja"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Vaše poruke"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Čitajte i pišite SMS-ove, poruke e-pošte i ostale poruke."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vaši osobni podaci"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Izravan pristup kontaktima i kalendaru pohranjenima na tabletnom uređaju."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Izravan pristup kontaktima i kalendaru pohranjenom na telefonu."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Vaša lokacija"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Pratite svoju fizičku lokaciju."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Mrežna komunikacija"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Pristupajte raznim značajkama mreže."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaši računi"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Pristup dostupnim računima."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardverske kontrole"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Niskorazinski pristup i nadzor nad sustavom."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Razvojni alati"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Značajke potrebne samo za razvojne programere aplikacija."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Prostor za pohranu"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Pristupi memoriji USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pristup SD kartici."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Aplikaciji omogućuje da bude traka statusa."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"proširivanje/sažimanje trake statusa"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Omogućuje aplikaciji proširivanje ili sažimanje trake statusa."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"prekini izlazne pozive"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"preusmjeravanje odlaznih poziva"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Omogućuje aplikaciji obradu odlaznih poziva i promjenu broja za biranje. Zlonamjerne aplikacije mogu nadzirati, preusmjeravati ili sprječavati odlazne pozive."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"primanje SMS-a"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"primanje tekstnih poruka (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Omogućuje aplikaciji primanje i obradu SMS poruka. Zlonamjerne aplikacije mogu nadzirati vaše poruke ili ih brisati, a da vam ih ne pokažu."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"primanje MMS-a"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"primanje tekstnih poruka (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Omogućuje aplikaciji primanje i obradu MMS poruka. Zlonamjerne aplikacije mogu nadzirati vaše poruke ili ih brisati, a da vam ih ne pokažu."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"primanje hitnih odašiljanja"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Omogućuje aplikaciji primanje i obradu poruka hitnih odašiljanja. Ta je dozvola dostupna samo aplikacijama sustava."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Omogućuje aplikaciji slanje SMS poruka. Zlonamjerne aplikacije mogu vam prouzročiti troškove šaljući poruke bez vašeg znanja."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"slanje SMS poruka bez potvrde"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Omogućuje aplikaciji slanje SMS poruka. Zlonamjerne aplikacije mogu vam prouzročiti troškove šaljući poruke bez vašeg znanja."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"čitanje SMS-a ili MMS-a"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"čitanje tekstnih poruka (SMS ili MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Omogućuje aplikaciji čitanje SMS poruka pohranjenih na tabletnom računalu ili SIM kartici. Zlonamjerne aplikacije mogu čitati vaše povjerljive poruke."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Omogućuje aplikaciji čitanje SMS poruka pohranjenih na telefonu ili SIM kartici. Zlonamjerne aplikacije mogu čitati vaše povjerljive poruke."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"uređivanje SMS-a ili MMS-a"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"uređivanje tekstnih poruka (SMS ili MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Omogućuje aplikaciji pisanje u SMS poruke pohranjene na vašem tabletnom računalu ili SIM kartici. Zlonamjerne aplikacije mogu izbrisati vaše poruke."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Omogućuje aplikaciji pisanje u SMS poruke pohranjene na telefonu ili SIM kartici. Zlonamjerne aplikacije mogu izbrisati vaše poruke."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"primanje WAP-a"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"primanje tekstnih poruka (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Omogućuje aplikaciji primanje i obradu WAP poruka. Zlonamjerne aplikacije mogu nadzirati vaše poruke ili ih brisati, a da vam ih ne pokažu."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"dohvaćanje pokrenutih aplikacija"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Omogućuje aplikaciji dohvaćanje informacija o trenutačno i nedavno pokrenutim zadacima. Zlonamjerne aplikacije mogu otkriti privatne informacije o drugim aplikacijama."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"dohvaćanje pojedinosti o pokrenutim aplikacijama"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Aplikaciji omogućuje dohvaćanje detaljnih informacija o trenutačno i nedavno pokrenutim zadacima. Zlonamjerne aplikacije mogu otkriti privatne informacije o drugim aplikacijama."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"promjena redoslijeda pokrenutih aplikacija"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Omogućuje aplikaciji da premjesti zadatke u prednji plan ili pozadinu. Zlonamjerne aplikacije mogu na silu doći u prednji plan bez vašeg nadzora."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"zaustavljanje pokrenutih aplikacija"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Aplikaciji omogućuje upravljanje načinom kompatibilnosti aplikacija sa zaslonom. Zlonamjerne aplikacije mogu prekinuti takvo ponašanje ostalih aplikacija."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"omogućavanje rješavanja programskih pogrešaka u aplikaciji"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Omogućuje aplikaciji uključivanje uklanjanja programskih pogrešaka za drugu aplikaciju. Zlonamjerne aplikacije mogu na taj način ukloniti druge aplikacije."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"promjena postavki korisničkog sučelja"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"promjena postavki prikaza sustava"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Aplikaciji omogućuje promjenu trenutačne konfiguracije kao što je oznaka zemlje/jezika ili opća veličina fonta."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"omogućavanje načina rada za automobil"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Aplikaciji omogućuje uključivanje načina rada u vožnji."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"prekida pozadinske postupke"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zatvaranje ostalih aplikacija"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Omogućuje aplikaciji prekidanje pozadinskih procesa drugih aplikacija, čak i ako ima dovoljno memorije."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"prisilno zaustavljanje ostalih aplikacija"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Aplikaciji omogućuje prisilno zaustavljanje drugih aplikacija."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Omogućuje aplikaciji emitiranje obavijesti da je primljena WAP PUSH poruka. Zlonamjerne aplikacije mogu to upotrijebiti da bi krivotvorile prijem MMS poruka ili da bi potajno zamijenile sadržaj bilo koje web-stranice zlonamjernim varijantama."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ograničavanje broja pokrenutih postupaka"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Omogućuje aplikaciji upravljanje maksimalnim brojem postupaka koji će biti pokrenuti. Nikada nije potrebno za uobičajene aplikacije."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"zatvaranje svih pozadinskih aplikacija"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"prisilno zatvaranje pozadinskih aplikacija"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Omogućuje aplikaciji da upravlja time hoće li radnje uvijek prekinuti s radom čim odu u pozadinu. Nikada nije potrebno za normalne aplikacije."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"izmjena statistike o bateriji"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Omogućuje aplikaciji promjenu prikupljene statistike o potrošnji baterije. Nije namijenjena uobičajenim aplikacijama."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Omogućuje aplikaciji pokretanje korisničkog sučelja za potvrdu potpune sigurnosne kopije. Aplikacije ne bi trebale upotrebljavati tu opciju."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"prikaz neovlaštenih prozora"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Omogućuje aplikaciji stvaranje prozora koje bi trebalo upotrebljavati korisničko sučelje internog sustava. Nije namijenjeno uobičajenim aplikacijama."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"prikaz upozorenja na razini sustava"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"crtanje preko drugih aplikacija"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Aplikaciji omogućuje prikaz prozora za sistemska upozorenja. Zlonamjerne aplikacije mogu preuzeti cijeli zaslon."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"izmjena globalne brzine animacije"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"U bilo kojem trenutku aplikaciji omogućuje promjenu globalne brzine animacija (brža ili sporija animacija)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Aplikaciji omogućuje da odobri ili odbije određena dopuštenja za sebe ili druge aplikacije. Zlonamjerne aplikacije to mogu upotrijebiti za pristup značajkama za koje im niste odobrili pristup."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"postavljanje željenih aplikacija"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Omogućuje aplikaciji promjenu vaših željenih aplikacija. Zlonamjerne aplikacije mogu potajno promijeniti aplikacije koje su pokrenute, zavaravajući vaše postojeće aplikacije kako bi prikupljale privatne podatke od vas."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"izmjena postavki globalnog sustava"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"izmjena postavki sustava"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Omogućuje aplikaciji izmjenu podataka postavki sustava. Zlonamjerne aplikacije mogu oštetiti konfiguraciju sustava."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"izmjena postavki sigurnosti sustava"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Omogućuje aplikaciji izmjenu podataka sigurnosnih postavki sustava. Nije namijenjena uobičajenim aplikacijama."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"izmjena karte Google usluga"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Aplikaciji omogućuje izmjenu karte Googleovih usluga. Nije namijenjena uobičajenim aplikacijama."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatski pokreni ponovno pokretanje"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"izvršavanje pri pokretanju"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Omogućuje aplikaciji da se sama pokrene čim sustav završi s pokretanjem. To može produljiti pokretanje tabletnog računala i omogućiti aplikaciji da općenito uspori tabletno računalo svojim neprekidnim izvršavanjem."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Omogućuje aplikaciji da se sama pokrene čim sustav završi s pokretanjem. To može produljiti pokretanje telefona i omogućiti aplikaciji da općenito uspori telefon svojim neprekidnim izvršavanjem."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"slanje privlačnih prijenosa"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Omogućuje aplikaciji slanje \"ljepljivih\" emitiranja, koja se zadržavaju nakon što emitiranje završi. Zlonamjerne aplikacije mogu usporiti tabletno računalo ili ga učiniti nestabilnim uzrokujući pretjeranu upotrebu memorije."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Omogućuje aplikaciji slanje \"ljepljivih\" emitiranja, koja se zadržavaju nakon što emitiranje završi. Zlonamjerne aplikacije mogu usporiti telefon ili ga učiniti nestabilnim uzrokujući pretjeranu upotrebu memorije."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"čitanje kontaktnih podataka"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"pisanje kontaktnih podataka"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"čitanje kontakata"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Omogućuje aplikaciji čitanje svih podataka o vašim kontaktima pohranjenim na vašem tabletnom računalu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju e-adresa i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt slale drugim osobama."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Omogućuje aplikaciji čitanje svih podataka o vašim kontaktima pohranjenim na vašem telefonu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju e-adresa i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt slale drugim osobama."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"izmjena kontakata"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Omogućuje aplikaciji izmjenu podataka o vašim kontaktima pohranjenim na vašem tabletnom računalu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju e-adresa i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt izbrisale ili izmijenile."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Omogućuje aplikaciji izmjenu podataka o vašim kontaktima pohranjenim na vašem telefonu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju adresa e-pošte i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt izbrisale ili izmijenile."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"čitanje dnevnika poziva"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Aplikaciji omogućuje čitanje dnevnika poziva vašeg tabletnog računala zajedno s podacima o dolaznim i odlaznim pozivima. Zlonamjerne aplikacije to mogu upotrebljavati za slanje vaših podataka drugim osobama."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Aplikaciji omogućuje čitanje dnevnika poziva vašeg telefona zajedno s podacima o dolaznim i odlaznim pozivima. Zlonamjerne aplikacije to mogu upotrebljavati za slanje vaših podataka drugim osobama."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"pisanje u dnevnik poziva"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Aplikaciji omogućuje izmjenu dnevnika poziva vašeg tabletnog računala zajedno s podacima o dolaznim i odlaznim pozivima. Zlonamjerne aplikacije to mogu upotrebljavati za brisanje ili izmjenu vašeg dnevnika poziva."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Aplikaciji omogućuje izmjenu dnevnika poziva vašeg telefona zajedno s podacima o dolaznim i odlaznim pozivima. Zlonamjerne aplikacije to mogu upotrebljavati za brisanje ili izmjenu vašeg dnevnika poziva."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"čitanje podataka vašeg profila"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"čitanje vaše kontaktne kartice"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Omogućuje aplikaciji čitanje osobnih podataka profila pohranjenih na uređaju, kao što su vaše ime ili kontaktni podaci. To znači da vas aplikacija može identificirati i slati informacije s vašeg profila drugima."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"pisanje u podatke profila"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"izmjena vaše kontaktne kartice"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Omogućuje aplikaciji promjenu ili dodavanje osobnih podataka profila pohranjenih na uređaju, kao što su vaše ime i kontaktni podaci. To znači da vas druge aplikacije mogu identificirati i slati informacije s vašeg profila drugima."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"čitanje društvenog streama"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Aplikaciji omogućuje pristup vašim ažuriranjima na društvenim mrežama ili ažuriranjima vaših prijatelja na društvenim mrežama i sinkronizaciju tih ažuriranja. Zlonamjerne aplikacije mogu to upotrijebiti za čitanje privatne komunikacije između vas i vaših prijatelja na društvenim mrežama."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"prisilno ponovno pokretanje telefona"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Aplikaciji omogućuje prisilno ponovno pokretanje tabletnog računala."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Aplikaciji omogućuje prisilno ponovno pokretanje telefona."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"učitavanje i skidanje datotečnih sustava"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"pristupanje dat. sustavu USB-a"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"pristupanje datotečnom sustavu SD kartice"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Aplikaciji omogućuje instaliranje i deinstaliranje datotečnih sustava za prijenosnu pohranu."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatiranje vanjske pohrane"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"brisanje USB pohrane"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"brisanje SD kartice"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Aplikaciji omogućuje formatiranje prijenosnog medija za pohranu."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"dohvati informacije o unutarnjoj pohrani"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Aplikaciji omogućuje dohvaćanje informacija o internoj pohrani."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Aplikaciji omogućuje uključivanje/isključivanje interne pohrane."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"preimenuj unutarnju pohranu"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Aplikaciji omogućuje preimenovanje interne pohrane."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"nadzor nad vibracijom"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"upravljanje vibracijom"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Aplikaciji omogućuje nadzor nad vibratorom."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"nadzor bljeskalice"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Aplikaciji omogućuje upravljanje bljeskalicom."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Omogućuje aplikaciji da obavijesti sustav koje widgete može upotrebljavati koja aplikacija. Aplikacija s tom dozvolom može drugim aplikacijama dati pristup osobnim podacima. Nije namijenjena uobičajenim aplikacijama."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"promjena stanja telefona"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Omogućuje aplikaciji upravljanje telefonskim značajkama uređaja. Aplikacija s tom dozvolom može izmjenjivati mreže, uključiti i isključiti radiouređaj telefona i tome slično, a da vas o tome uopće ne obavijesti."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"čitanje stanja i identiteta računala"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"čitanje statusa i identiteta telefona"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Omogućuje aplikaciji pristup telefonskim značajkama uređaja. Aplikacija s tom dozvolom može utvrditi telefonski broj i serijski broj ovog telefona, je li poziv aktivan, broj kojem je upućen poziv i slično."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"spriječi mirovanje tabletnog uređaja"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"sprečava telefon da prijeđe u stanje mirovanja"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Pokrenite kao niskorazinski proizvođački test, uz omogućavanje potpunog pristupa telefonskom hardveru. Dostupno je samo ako telefon radi u proizvođačkom testnom načinu rada."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"postavi pozadinsku sliku"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Aplikaciji omogućuje postavljanje pozadinskih slika sustava."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"postavljanje savjeta za veličinu pozadinske slike"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"prilagođavanje veličine pozadinske slike"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Aplikaciji omogućuje postavljanje savjeta za veličinu sistemske pozadinske slike."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"poništavanje sustava na tvornički zadane postavke"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Omogućuje aplikaciji potpuno vraćanje sustava na tvorničke postavke čime se brišu svi podaci, konfiguracija i instalirane aplikacije."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Aplikaciji omogućuje promjenu vremenske zone na telefonu."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"ima ulogu Usluge voditelja računa"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Aplikaciji omogućuje pozivanje ovjerovitelja računa AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"otkrivanje poznatih računa"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"pronalaženje računa na uređaju"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Aplikaciji omogućuje dobivanje popisa računa koji su poznati tabletnom računalu."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Aplikaciji omogućuje dobivanje popisa računa koji su poznati telefonu."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"ima ulogu kontrolora autentičnosti računa"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"stvaranje računa i postavljenje zaporki"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Aplikaciji omogućuje upotrebu mogućnosti AccountManagera za autentifikaciju računa, uključujući stvaranje računa te dobivanje i postavljanje njihovih zaporki."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"upravljanje popisom aplikacija"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"dodavanje ili uklanjanje računa"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Aplikaciji omogućuje obavljanje operacija kao što su dodavanje i uklanjanje računa i brisanje zaporke."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"upotreba vjerodajnica za provjeru autentičnosti računa"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"upotreba računa na uređaju"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Aplikaciji omogućuje traženje oznaka za autentifikaciju."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"prikaži mrežno stanje"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"prikaz mrežnih veza"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Aplikaciji omogućuje prikaz stanja svih mreža."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"potpun internetski pristup"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Aplikaciji omogućuje stvaranje mrežnih utičnica."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Aplikaciji omogućuje promjenu stanja modemskog mrežnog povezivanja."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"promjena postavke upotrebe pozadinskih podataka"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Aplikaciji omogućuje promjenu postavke za upotrebu pozadinskih podataka."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"prikaz Wi-Fi stanja"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"prikaz Wi-Fi veza"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Aplikaciji omogućuje prikaz informacija o stanju WiFi mreže."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"izmijeni Wi-Fi stanje"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"uspostavljanje i prekidanje veze s Wi-Fi mrežom"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Aplikaciji omogućuje povezivanje na pristupne točke WiFi mreže i prekid te veze te promjene u konfiguriranim WiFi mrežama."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"omogući višenamjenski Wi-Fi prijem"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Aplikaciji omogućuje primanje paketa koji nisu poslani izravno vašem uređaju. To može biti korisno kada se otkrivaju usluge u blizini. Troši se više energije nego u načinu rada koji ne podržava dostavu na više uređaja."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth administracija"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"pristupanje postavkama Bluetootha"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Aplikaciji omogućuje konfiguraciju lokalnog tabletnog računala s Bluetoothom te otkrivanje i uparivanje s udaljenim uređajima."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Aplikaciji omogućuje konfiguraciju lokalnog Bluetooth telefona i otkrivanje i uparivanje s udaljenim uređajima."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Prikaz stanja WiMAX mreže"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Prikaz WiMAX veza"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Omogućuje aplikaciji prikaz informacija o stanju WiMAX mreže."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Promjena stanja WiMAX mreže"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Aplikaciji omogućuje povezivanje s WiMAX mrežom i prekidanje veze."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"stvaranje Bluetooth veza"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"uparivanje s Bluetooth uređajima"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Aplikaciji omogućuje pregled konfiguracije lokalnog Bluetooth tabletnog računala i uspostavljanje i prihvaćanje veza s uparenim uređajima."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Aplikaciji omogućuje pregled konfiguracije lokalnog Bluetooth telefona te uspostavljanje i prihvaćanje veza s uparenim uređajima."</string> <string name="permlab_nfc" msgid="4423351274757876953">"upravljaj beskontaktnom (NFC) komunikacijom"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Aplikaciji omogućuje komunikaciju s oznakama, karticama i čitačima komunikacije kratkog dometa (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"onemogući zaključavanje tipkovnice"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"onemogućavanje zaključavanja zaslona"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Aplikaciji omogućuje onemogućavanje zaključavanja tipkovnice i svih pripadajućih sigurnosnih zaporki. Dobar primjer toga onemogućavanja jest zaključavanje tipkovnice kod primanja dolaznog telefonskog poziva, nakon kojeg se zaključavanje tipkovnice ponovo omogućuje."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"čitanje postavki sinkronizacije"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Aplikaciji omogućuje čitanje postavki sinkronizacije, na primjer, je li sinkronizacija omogućena za aplikaciju Osobe."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"postavke sinkronizacije pisanja"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"uključivanje/isključivanje sinkronizacije"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Aplikaciji omogućuje izmjenu postavki sinkronizacije, kao što je opcija omogućavanja sinkronizacije aplikacije Osobe."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"čitanje statistike o sinkronizaciji"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Aplikaciji omogućuje čitanje statistika sinkronizacije, primjerice povijesti izvršenih sinkronizacija."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Aplikaciji omogućuje dohvaćanje detalja o trenutačno sinkroniziranim feedovima."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"pisanje pretplaćenih feedova"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Omogućuje aplikaciji promjenu vaših trenutačno sinkroniziranih feedova. Zlonamjerne aplikacije mogu promijeniti vaše sinkronizirane feedove."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"čitanje korisnički definiranog rječnika"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"čitanje pojmova koje ste dodali u rječnik"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Aplikaciji omogućuje čitanje svih privatnih riječi, imena i izraza koje je korisnik pohranio u korisničkom rječniku."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"pisanje u korisnički definiran rječnik"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Aplikaciji omogućuje pisanje novih riječi u korisnički rječnik."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"čitanje sadržaja USB pohrane"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"čitanje sadržaja SD kartice"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Aplikaciji omog. čitanje sadržaja USB pohrane."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Aplikaciji omogućuje čitanje sadržaja SD kartice."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"izmjeni/briši sadržaje memorije USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"izmjena/brisanje sadržaja SD kartice"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"čitanje sadržaja USB pohrane"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"čitanje sadržaja SD kartice"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Omogućuje aplikaciji čitanje sadržaja USB pohrane, koji mogu uključivati fotografije i medije."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Omogućuje aplikaciji čitanje sadržaja SD kartice, koji mogu uključivati fotografije i medije."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"izmjena/brisanje sadrž. USB-a"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"izmjena ili brisanje sadržaja SD kartice"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Dopušta pisanje u USB pohranu."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Aplikaciji omogućuje pisanje na SD karticu."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"izmijeni/izbriši sadržaj pohranjen na internim medijima"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"U telefonu nema SIM kartice."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Umetnite SIM karticu."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM kartica nedostaje ili nije čitljiva. Umetnite SIM karticu."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaša SIM kartica trajno je onemogućena."\n" Obratite se svom pružatelju bežičnih usluga da biste dobili drugu SIM karticu."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Gumb Prethodni zapis"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Gumb Sljedeći zapis"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"znak"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"riječ"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"veza"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"redak"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Tvorničko testiranje nije uspjelo"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Župa"</string> <string name="autofill_area" msgid="3547409050889952423">"Područje"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"čitanje povijesti i oznaka preglednika"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"čitanje web-oznaka i povijesti"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Aplikaciji omogućuje čitanje svih URL-ova koje je preglednik posjetio i svih oznaka preglednika."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"pisanje povijesti i oznaka preglednika"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"pisanje web-oznaka i povijesti"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Omogućuje aplikaciji promjenu povijesti ili oznaka preglednika pohranjenih na vašem tabletnom računalu. Zlonamjerne aplikacije mogu to upotrijebiti za brisanje ili promjenu podataka u vašem pregledniku."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Omogućuje aplikaciji promjenu preglednikove povijesti ili oznaka pohranjenih na vašem telefonu. Zlonamjerne aplikacije mogu to upotrijebiti za brisanje ili promjenu podataka na vašem pregledniku."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"namjesti alarm na budilici"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"postavljanje alarma"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Omogućuje aplikaciji postavljanje alarma na instaliranoj aplikaciji budilici. Neke aplikacije budilice možda neće primijeniti tu značajku."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"dodaj govornu poštu"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Omogućuje aplikaciji da doda poruke u vašu govornu poštu."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Postavi"</string> <string name="date_time_done" msgid="2507683751759308828">"Gotovo"</string> <string name="default_permission_group" msgid="2690160991405646128">"Zadano"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVO: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nije potrebno dopuštenje"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Sakrij"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Pokaži sve"</b></string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 0213339432d2..4a36a8ad3e52 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"A táblagép ki fog kapcsolni."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"A telefon le fog állni."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Kikapcsolja?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Újraindítás csökkentett módban"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Szeretné csökkentett módban újraindítani a rendszert? Ez letiltja a telepített, harmadik féltől származó alkalmazásokat. Újraindításkor ezek visszaállnak."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Legutóbbiak"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Nincs újabb alkalmazás."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Táblagép beállításait"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Saját üzenetek"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS-ek, e-mailek és egyéb üzenetek olvasása és írása."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Az Ön személyes adatai"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Közvetlen hozzáférés a táblagépen tárolt névjegyekhez és naptárhoz."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Közvetlen hozzáférés a telefonon tárolt névjegyekhez és naptárhoz."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Tartózkodási hely"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Tartózkodási hely figyelése."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Hálózati kommunikáció"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Hozzáférés különböző hálózati funkciókhoz."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Az Ön fiókjai"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Hozzáférés az elérhető fiókokhoz."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardver vezérlése"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Alacsony szintű hozzáférés és a rendszer vezérlése."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Fejlesztői eszközök"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Csak az alkalmazásfejlesztők számára fontos funkciók."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Tárhely"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Az USB-tár elérése."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Az SD-kártya elérése."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Lehetővé teszi az alkalmazás számára, hogy az állapotsoron legyen."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"állapotsáv részletes- és listanézete"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Lehetővé teszi az alkalmazás számára, hogy váltson az állapotsor részletes és listanézete között."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"kimenő hívások elfogása"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"kimenő hívások átirányítása"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Lehetővé teszi az alkalmazás számára a kimenő hívások kezdeményezését és a tárcsázandó szám módosítását. Rosszindulatú alkalmazások felügyelhetik, átirányíthatják vagy megakadályozhatják a kimenő hívásokat."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS fogadása"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"szöveges üzenetek (SMS) fogadása"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Lehetővé teszi az alkalmazás számára, hogy SMS-eet fogadjon és dolgozzon fel. A rosszindulatú alkalmazások megfigyelhetik vagy törölhetik az üzeneteket anélkül, hogy Ön látná azokat."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS fogadása"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"szöveges üzenetek (MMS) fogadása"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Lehetővé teszi az alkalmazás számára, hogy MMS-eket fogadjon és dolgozzon fel. A rosszindulatú alkalmazások megfigyelhetik vagy törölhetik az üzeneteket anélkül, hogy Ön látná azokat."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"vészhelyzeti közlemények fogadása"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Lehetővé teszi az alkalmazás számára vészhelyzeti üzenetek fogadását és feldolgozását. Ez az engedély csak rendszeralkalmazások számára érhető el."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Lehetővé teszi az alkalmazás számára SMS üzeneteket küldését. A rosszindulatú alkalmazások pénzbe kerülő üzeneteket küldhetnek az Ön jóváhagyása nélkül."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS üzenetek küldése megerősítés nélkül"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Lehetővé teszi az alkalmazás számára SMS üzeneteket küldését. A rosszindulatú alkalmazások pénzbe kerülő üzeneteket küldhetnek az Ön jóváhagyása nélkül."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS vagy MMS olvasása"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"szöveges üzenetek (SMS vagy MMS) olvasása"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Lehetővé teszi az alkalmazás számára, hogy olvassa a táblagépen vagy a SIM kártyán lévő SMS-eket. A rosszindulatú alkalmazások elolvashatják a bizalmas üzeneteket."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Lehetővé teszi az alkalmazás számára, hogy olvassa a táblagépen vagy a SIM kártyán lévő SMS-eket. A rosszindulatú alkalmazások elolvashatják a bizalmas üzeneteket."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS vagy MMS szerkesztése"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"szöveges üzenetek (SMS vagy MMS) szerkesztése"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Lehetővé teszi az alkalmazás számára, hogy írjon a táblagépen vagy a SIM kártyán lévő SMS-ekbe. A rosszindulatú alkalmazások törölhetik az üzeneteket."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Lehetővé teszi az alkalmazás számára, hogy írjon a telefonon vagy a SIM kártyán lévő SMS-ekbe. A rosszindulatú alkalmazások törölhetik az üzeneteket."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP fogadása"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"szöveges üzenetek (WAP) fogadása"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Lehetővé teszi az alkalmazás számára, hogy WAP üzeneteket fogadjon és dolgozzon fel. A rosszindulatú alkalmazások megfigyelhetik vagy törölhetik az üzeneteket anélkül, hogy Ön látná azokat."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"futó alkalmazások lekérése"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Lehetővé teszi az alkalmazás számára a jelenleg és a nemrég futó feladatok adatainak lekérését. A rosszindulatú alkalmazások privát adatokhoz juthatnak más alkalmazásokról."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"futó alkalmazások részleteinek lekérése"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Lehetővé teszi az alkalmazás számára a jelenleg és a nemrég futó feladatok részletes adatainak lekérését. A rosszindulatú alkalmazások más alkalmazásokkal kapcsolatos privát adatokhoz férhetnek hozzá."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"futó alkalmazások átrendezése"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Lehetővé teszi az alkalmazás számára, hogy feladatokat helyezzen át az előtérből a háttérbe és fordítva. A rosszindulatú alkalmazások az előtérbe helyezhetik magukat az Ön engedélye nélkül."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"futó alkalmazások leállítása"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Lehetővé teszi, hogy az alkalmazás szabályozza az egyéb alkalmazások képernyő-kompatibilitási módját. A kártékony alkalmazások megzavarhatják a többi alkalmazás viselkedését."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"alkalmazások hibakeresésének bekapcsolása"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Lehetővé teszi az alkalmazás számára, hogy hibakeresést végezzen egy másik alkalmazáson. A rosszindulatú alkalmazások ezzel leállíthatnak más alkalmazásokat."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"a felhasználói felület beállításainak módosítása"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"rendszer megjelenítési beállításainak módosítása"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Lehetővé teszi az alkalmazás számára a jelenlegi konfiguráció, így például a nyelv- és országkód vagy az általános betűméret módosítását."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"gépkocsi üzemmód bekapcsolása"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Lehetővé teszi az alkalmazás számára a gépkocsi üzemmód bekapcsolását."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"háttérfolyamatok leállítása"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"más alkalmazások bezárása"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Lehetővé teszi az alkalmazás számára más alkalmazások háttérben futó folyamatainak leállítását akkor is, ha a memória nem alacsony."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"más alkalmazások kényszerített leállítása"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Lehetővé teszi az alkalmazás számára, hogy kényszerrel leállítson más alkalmazásokat."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Lehetővé teszi az alkalmazás számára értesítés küldését WAP PUSH üzenet érkezése esetén. A rosszindulatú alkalmazások arra használhatják ezt, hogy MMS-kézbesítési jelentést hamisítsanak, vagy hogy a háttérben rosszindulatú variánssal cseréljék le bármelyik weboldal tartalmát."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"futó folyamatok számának korlátozása"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Lehetővé teszi az alkalmazás számára a futtatható folyamatok maximális számának vezérlését. Soha nem lehet rá szüksége a normál alkalmazásoknak."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"összes háttéralkalmazás bezárása"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"háttéralkalmazások leállításának kényszerítése"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Lehetővé teszi az alkalmazás számára annak vezérlését, hogy a tevékenységek mindig befejeződjenek-e, amint a háttérbe kerülnek. A normál alkalmazások soha nem használják ezt."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"akkumulátorstatisztikák módosítása"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Lehetővé teszi az alkalmazás számára az összegyűjtött akkumulátorhasználati statisztikák módosítását. Normál alkalmazások nem használhatják."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Lehetővé teszi, hogy az alkalmazás elindítsa a teljes biztonsági mentést megerősítő kezelőfelületet. Nem használható egyetlen alkalmazás által sem."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"azonosítatlan ablakok megjelenítése"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Lehetővé teszi az alkalmazás számára olyan ablakok létrehozását, amelyek a belső rendszer felhasználói felületét kívánják használni. Normál alkalmazások nem használhatják."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"rendszerszintű riasztások megjelenítése"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ráhúzás más alkalmazásokra"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Lehetővé teszi az alkalmazás számára a rendszerriasztás-ablakok megjelenítését. A rosszindulatú alkalmazások elfoglalhatják a teljes képernyőt."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"animáció általános sebességének módosítása"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Lehetővé teszi az alkalmazás számára, hogy bármikor globálisan módosítsa az animációk sebességét (gyorsabb vagy lassabb animációk)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Lehetővé teszi, hogy egy alkalmazás engedélyeket adjon vagy vonjon vissza saját maga vagy más alkalmazás számára. A rosszindulatú alkalmazások olyan funkciókhoz való hozzáféréshez használhatják ezt, amelyeket nem engedélyezett számukra."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"előnyben részesített alkalmazások beállítása"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Lehetővé teszi az alkalmazás számára a preferált alkalmazások módosítását. A rosszindulatú alkalmazások ezáltal észrevétlenül megváltoztathatják a futó alkalmazásokat, személyes adatokat gyűjtve Öntől."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"rendszer globális beállításainak módosítása"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"rendszerbeállítások módosítása"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Lehetővé teszi az alkalmazás számára a rendszer beállítási adatainak módosítását. A rosszindulatú alkalmazások tönkretehetik a rendszer konfigurációját."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"rendszer biztonsági beállításainak módosítása"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a rendszer biztonsági beállításainak adatait. Normál alkalmazások nem használhatják."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Google-szolgáltatások térképének módosítása"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a Google-szolgáltatások térképét. Normál alkalmazások nem használhatják."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatikus indítás rendszerindításkor"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"futtatás indításkor"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Lehetővé teszi az alkalmazás számára, hogy elindítsa magát a rendszerindítás befejezése után. Ez meghosszabbíthatja a táblagép elindításának idejét, az állandó futás miatt pedig lelassíthatja a táblagépet."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Lehetővé teszi az alkalmazás számára, hogy elindítsa magát a rendszerindítás befejezése után. Ez meghosszabbíthatja a telefon elindításának idejét, az állandó futás miatt pedig lelassíthatja a telefont."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ragadós üzenet küldése"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Lehetővé teszi az alkalmazás számára a ragadós üzenetek küldését, amelyek a sugárzás után is megmaradnak. A rosszindulatú alkalmazások lelassíthatják vagy instabillá tehetik a táblagépet a túlzott memóriahasználattal."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Lehetővé teszi az alkalmazás számára ragadós üzenetek küldését, amelyek a sugárzás után is megmaradnak. A rosszindulatú alkalmazások lelassíthatják vagy instabillá tehetik a táblagépet a túlzott memóriahasználattal."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"névjegyadatok olvasása"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"névjegyadatok írása"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"saját névjegyek olvasása"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Lehetővé teszi az alkalmazás számára a táblagépen tárolt névjegyekre vonatkozó összes adat -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- olvasását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy névjegyeit elküldjék más személyeknek."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Lehetővé teszi az alkalmazás számára a telefonon tárolt névjegyekre vonatkozó összes adat -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- olvasását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy névjegyeit elküldjék más személyeknek."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"kapcsolatok módosítása"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Lehetővé teszi az alkalmazás számára a táblagépen tárolt névjegyekre vonatkozó adatok -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- módosítását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy módosítsák vagy töröljék névjegyeinek adatait."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Lehetővé teszi az alkalmazás számára a telefonon tárolt névjegyekre vonatkozó adatok -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- módosítását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy módosítsák vagy töröljék névjegyeinek adatait."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"Híváslista beolvasása"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Lehetővé teszi, hogy az alkalmazás hozzáférjen a táblagép híváslistájához, beleértve a bejövő és kimenő hívások adatait. A rosszindulatú alkalmazások ezt arra használhatják, hogy az adatait elküldjék másoknak."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Lehetővé teszi, hogy az alkalmazás hozzáférjen híváslistájához, beleértve a bejövő és kimenő hívások adatait. A rosszindulatú alkalmazások ezt arra használhatják, hogy az adatait elküldjék másoknak."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"Híváslista készítése"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Lehetővé teszi, hogy az alkalmazás módosítsa a táblagép híváslistáját, beleértve a bejövő és kimenő hívások adatait is. A rosszindulatú alkalmazások ezt arra használhatják, hogy híváslistáját töröljék vagy módosítsák."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Lehetővé teszi, hogy az alkalmazás módosítsa a telefon híváslistáját, beleértve a bejövő és kimenő hívások adatait is. A rosszindulatú alkalmazások ezt arra használhatják, hogy híváslistáját töröljék vagy módosítsák."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"olvassa el profiladatait"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"saját névjegykártya olvasása"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Lehetővé teszi az alkalmazás számára a készüléken tárolt személyes profiladatok, például a név és elérhetőség olvasását. Ez azt jelenti, hogy más alkalmazások is azonosíthatják Önt, és elküldhetik másoknak a profiladatait."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"írás a profiladatokba"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"saját névjegykártya módosítása"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Lehetővé teszi az alkalmazás számára a készüléken tárolt személyes profiladatok, például a név és elérhetőség módosítását vagy hozzáadását. Ez azt jelenti, hogy más alkalmazások is azonosíthatják Önt, és elküldhetik másoknak a profiladatait."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"közösségi adatfolyam olvasása"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen közösségi frissítéseihez, és szinkronizálja azokat. Rosszindulatú alkalmazások arra használhatják ezt, hogy hozzáférjenek barátaival történő magánbeszélgetéseihez a közösségi hálózatokon."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefon újraindításának kikényszerítése"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Lehetővé teszi az alkalmazások számára, hogy újraindítsák a táblagépet."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Lehetővé teszi az alkalmazás számára a telefon kényszerített újraindítását."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"fájlrendszerek csatolása és leválasztása"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"hozzáférés az USB-háttértárhoz"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"hozzáférés az SD-kártyához"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Lehetővé teszi az alkalmazás számára a külső adathordozók fájlrendszereinek csatlakoztatását és leválasztását."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"külső tárhely formázása"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB-háttértár törlése"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD-kártya törlése"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Lehetővé teszi az alkalmazás számára a cserélhető tárhely megformázását."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"információkérés a belső tárhelyről"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Lehetővé teszi az alkalmazás számára, hogy információkat kérjen a belső tárhelyről."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Lehetővé teszi az alkalmazás számára, hogy csatlakoztassa/leválassza a belső tárhelyet."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"belső tárhely átnevezése"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Lehetővé teszi az alkalmazás számára, hogy átnevezze a belső tárhelyet."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"rezgés vezérlése"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"rezgés szabályozása"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Lehetővé teszi az alkalmazás számára a rezgés vezérlését."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"vaku vezérlése"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Lehetővé teszi az alkalmazás számára a vaku vezérlését."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Lehetővé teszi az alkalmazás számára, hogy megmondja a rendszernek, melyik alkalmazás melyik modulokat használhatja. Ezzel az engedéllyel az alkalmazások hozzáférést biztosíthatnak a személyes adatokhoz más alkalmazásoknak. Normál alkalmazások nem használhatják."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon állapotának módosítása"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Lehetővé teszi az alkalmazás számára, hogy az eszköz telefonálási funkcióit vezérelje. Egy ilyen engedéllyel rendelkező alkalmazás váltani tud a hálózatok között, be- és kikapcsolhatja a telefon rádióját, és hasonlókat tehet anélkül, hogy valaha értesítené Önt."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"telefon állapotának és azonosságának olvasása"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefonállapot és azonosító olvasása"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen az eszköz telefonálási funkcióihoz. Az engedéllyel rendelkező alkalmazás megállapíthatja a telefon sorozat- és telefonszámát, hívás során a másik fél telefonszámát stb."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"táblagép alvás üzemmódjának megakadályozása"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefon alvó üzemmódjának megakadályozása"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Futtatás alacsony szintű gyártói tesztként, lehetővé téve a telefon hardverének teljes körű elérését. Csak akkor érhető el, ha a telefon gyártói tesztüzemmódban van."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"háttérkép beállítása"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Lehetővé teszi az alkalmazás számára, hogy beállítása a rendszer háttérképét."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"háttérképméret-beállítási tippek"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"háttérkép méretének módosítása"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Lehetővé teszi az alkalmazás számára, hogy beállítsa a rendszer háttérképének méretével kapcsolatos tippeket."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"rendszer visszaállítása a gyári beállításokra"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Lehetővé teszi az alkalmazás számára a gyári beállítások teljes visszaállítását, törölve minden adatot, beállítást és telepített alkalmazást."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a telefon időzónáját."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"fiókfelügyeleti szolgáltatásként szereplés"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Lehetővé teszi az alkalmazás számára, hogy meghívjon fiókhitelesítőket."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"ismert fiókok felderítése"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"fiókok keresése az eszközön"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Lehetővé teszi az alkalmazás számára, hogy lekérje a táblagép által ismert fiókok listáját."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Lehetővé teszi az alkalmazás számára, hogy lekérje a telefon által ismert fiókok listáját."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"fiókhitelesítőként szereplés"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"fiókok létrehozása, és jelszavak beállítása"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Lehetővé teszi az alkalmazás számára, hogy használja a Fiókkezelő fiókhitelesítő funkcióit, beleértve a fiókok létrehozását, illetve jelszavuk lekérdezését és beállítását."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"fióklista kezelése"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"fiókok hozzáadása vagy eltávolítása"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Lehetővé teszi az alkalmazás számára olyan műveletek végrehajtását, mint a fiókok hozzáadása és eltávolítása, illetve a jelszavuk törlése."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"egy fiók bejelentkezési adatainak használata"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"a készüléken lévő fiókok használata"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Lehetővé teszi az alkalmazás számára azonosítási tokenek kérését."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"hálózat állapotának megtekintése"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"hálózati kapcsolatok megtekintése"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Lehetővé teszi az alkalmazás számára, hogy megtekintse az összes hálózat állapotát."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"teljes internet-hozzáférés"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Lehetővé teszi az alkalmazás számára hálózati socketek létrehozását."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Lehetővé teszi az alkalmazás számára a megosztott hálózati csatlakoztathatóság állapotának módosítását."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"háttéradatok használati beállításának módosítása"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Lehetővé teszi az alkalmazás számára a háttérben történő adathasználat beállításainak módosítását."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Wi-Fi állapotának megtekintése"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi kapcsolatok megtekintése"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Lehetővé teszi az alkalmazás számára a Wi-Fi állapotinformációk megtekintését."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Wi-Fi állapot módosítása"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"kapcsolódás Wi-Fi-hez és a kapcsolat bontása"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Lehetővé teszi az alkalmazás számára, hogy kapcsolódjon Wi-Fi hozzáférési pontokhoz, és megszüntesse a kapcsolatot, valamint hogy módosítsa a beállított Wi-Fi hálózatokat."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi multicast vétel engedélyezése"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Lehetővé teszi az alkalmazás számára a nem közvetlenül a készüléknek címzett csomagok fogadását. Ez hasznos lehet a közelben kínált szolgáltatások felfedezésére. Több energiát használ, mint a nem többirányú üzemmód."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth-adminisztráció"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth-beállítások elérése"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Lehetővé teszi az alkalmazás számára, hogy konfigurálja a helyi Bluetooth-t, valamint hogy távoli eszközöket fedezzen fel és párosítson."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Lehetővé teszi az alkalmazás számára, hogy konfigurálja a helyi Bluetooth telefont, valamint hogy távoli eszközöket fedezzen fel és párosítson."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX-állapot megtekintése"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX kapcsolatok megtekintése"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Lehetővé teszi, hogy az alkalmazás megtekintse a WiMAX-állapotinformációkat."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-állapot módosítása"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Lehetővé teszi az alkalmazás WiMAX hálózathoz való kapcsolódását, és a lekapcsolódását onnan."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth kapcsolatok létrehozása"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth-eszközök párosítása"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Lehetővé teszi az alkalmazás számára a helyi Bluetooth táblagép konfigurációjának megtekintését, valamint kapcsolatok kezdeményezését és fogadását a párosított eszközökkel."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Lehetővé teszi az alkalmazás számára a helyi Bluetooth telefon konfigurációjának megtekintését, valamint kapcsolatok kezdeményezését és fogadását a párosított eszközökkel."</string> <string name="permlab_nfc" msgid="4423351274757876953">"NFC technológia vezérlése"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Lehetővé teszi az alkalmazás számára, hogy NFC (Near Field Communication - kis hatósugarú vezeték nélküli kommunikáció) technológiát használó címkékkel, kártyákkal és leolvasókkal kommunikáljon."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"billentyűzár kikapcsolása"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"képernyőzár kikapcsolása"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Lehetővé teszi az alkalmazás számára a billentyűzár és bármely kapcsolódó jelszavas védelem kikapcsolását. Jogos példa erre, amikor a telefon letiltja a billentyűzárat bejövő hívás esetén, majd újra bekapcsolja azt, ha a hívás befejeződik."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"szinkronizálási beállítások olvasása"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Lehetővé teszi az alkalmazás számára a szinkronizálási beállítások olvasását, például, hogy a szinkronizálás aktiválva van-e a Személyek alkalmazás esetében."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"szinkronizálási beállítások írása"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"szinkronizálás be-és kikapcsolása"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a szinkronizálási beállításokat, például, hogy a szinkronizálás aktiválva van-e a Személyek alkalmazás esetében."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"szinkronizálási statisztikák olvasása"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Lehetővé teszi az alkalmazás számára a szinkronizálási statisztikák, például a megtörtént szinkronizálások előzményeinek olvasását."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Lehetővé teszi az alkalmazás számára, hogy részleteket kapjon a jelenleg szinkronizált hírcsatornákról."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"feliratkozott hírcsatornák írása"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a jelenleg szinkronizált hírcsatornákat. A rosszindulatú alkalmazások módosíthatják a szinkronizált hírcsatornákat."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"a felhasználó által definiált szótár olvasása"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"szótárhoz adott kifejezések olvasása"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Lehetővé teszi az alkalmazás számára, hogy olvassa a felhasználói szótárban tárolt saját szavakat, neveket és kifejezéseket."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"a felhasználó által definiált szótár írása"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Lehetővé teszi az alkalmazás számára, hogy új szavakat írjon a felhasználói szótárba."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USB-tár tartalmának beolvasása"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SD-kártya tartalmának beolvasása"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Beolvashat USB-tartalmakat."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Lehetővé teszi az alkalmazás számára SD-kártyák tartalmának beolvasását."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-tár tartalmának módosítása és törlése"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"az SD-kártya tartalmának módosítása és törlése"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB-tár tartalmának olvasása"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD-kártya tartalmának olvasása"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Lehetővé teszi az alkalmazás számára az USB-háttértár tartalmának olvasását, beleértve a fényképeket és a médiafájlokat."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Lehetővé teszi az alkalmazás számára az SD-kártya tartalmának olvasását, beleértve a fényképeket és a médiafájlokat."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB-tár törlése/módosítása"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"SD-kártya tartalmának módosítása vagy törlése"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Az alkalmazás USB-tárra írhat."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Lehetővé teszi az alkalmazás számára, hogy írjon az SD-kártyára."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"belső tár tartalmának módosítása/törlése"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Nincs SIM-kártya a telefonban."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Helyezzen be egy SIM kártyát."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"A SIM kártya hiányzik vagy nem olvasható. Helyezzen be egy SIM kártyát."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kártyája véglegesen letiltva."\n" Forduljon a vezeték nélküli szolgáltatójához másik SIM kártya beszerzése érdekében."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Előző szám gomb"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Következő szám gomb"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"karakter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"szó"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"sor"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"A gyári teszt sikertelen"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Közösség"</string> <string name="autofill_area" msgid="3547409050889952423">"Terület"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirátus"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"böngészési előzmények és könyvjelzők olvasása"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"internetes könyvjelzők és előzmények olvasása"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Lehetővé teszi az alkalmazás számára, hogy beolvassa a böngésző által felkeresett összes URL-t és a böngésző könyvjelzőit."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"böngészési előzmények és könyvjelzők írása"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"internetes könyvjelzők és előzmények írása"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző előzményeit vagy a táblagépén tárolt könyvjelzőket. A rosszindulatú alkalmazások kihasználhatják ezt a böngésző adatainak törlésére vagy módosítására."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző előzményeit vagy a telefonján tárolt könyvjelzőket. A rosszindulatú alkalmazások kihasználhatják ezt a böngésző adatainak törlésére vagy módosítására."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"ébresztő beállítása az ébresztőórában"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"ébresztés beállítása"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Lehetővé teszi az alkalmazás számára, hogy ébresztőt állítson be egy telepített ébresztőóra alkalmazásban. Egyes ilyen alkalmazásokban lehet, hogy nem működik ez a funkció."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"hangposta hozzáadása"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Lehetővé teszi az alkalmazás számára, hogy üzeneteket adjon hozzá bejövő hangpostájához."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Beállítás"</string> <string name="date_time_done" msgid="2507683751759308828">"Kész"</string> <string name="default_permission_group" msgid="2690160991405646128">"Alapértelmezett"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ÚJ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"ÚJ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nincs szükség engedélyre"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Elrejtés"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Az összes megjelenítése"</b></string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 17ed86b80929..658bd2f1953d 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tablet Anda akan dimatikan."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Ponsel Anda akan dimatikan."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Anda ingin mematikannya?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reboot ke mode aman"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Apakah Anda ingin reboot ke mode aman? Tindakan ini akan menonaktifkan semua aplikasi pihak ketiga yang telah dipasang. Aplikasi tersebut akan dipulihkan ketika Anda melakukan reboot lagi."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Terbaru"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Tidak ada apl terbaru."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opsi tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Pesan Anda"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Membaca dan menulis SMS, email, dan pesan Anda lainnya."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informasi pribadi Anda"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Akses langsung ke kenalan dan kalender yang disimpan di tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"akses langsung pada data kenalan dan kalender yang tersimpan pada ponsel."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Lokasi Anda"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Memonitor lokasi fisik Anda."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Komunikasi jaringan"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Mengakses berbagai fitur jaringan."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Akun-akun Anda"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Akses akun yang tersedia."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontrol perangkat keras"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Akses tingkat rendah dan kontrol sistem."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Peralatan pengembangan"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Fitur hanya diperlukan oleh pengembang apl."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Penyimpanan"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Akses penyimpanan USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Akses kartu SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Mengizinkan apl menjadi bilah status."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"luaskan/ciutkan bilah status"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Mengizinkan apl memperluas atau menciutkan bilah status."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"cegat panggilan keluar"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ubah rute panggilan keluar"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Mengizinkan apl memproses panggilan keluar dan mengubah nomor yang akan dipanggil. Apl berbahaya dapat memantau, mengalihkan, atau mencegah panggilan keluar."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"terima SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"terima pesan teks (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Mengizinkan apl menerima dan memproses pesan SMS. Apl berbahaya dapat memantau atau menghapus pesan tanpa menunjukkannya kepada Anda."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"menerima MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"terima pesan teks (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Mengizinkan apl menerima dan memproses pesan MMS. Apl berbahaya dapat memantau atau menghapus pesan tanpa menunjukkannya kepada Anda."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"terima siaran darurat"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Mengizinkan apl menerima dan memproses pesan siaran darurat. Izin ini hanya tersedia untuk apl sistem."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Mengizinkan apl mengirim pesan SMS. Apl berbahaya dapat menimbulkan pengeluaran dengan mengirimkan pesan tanpa konfirmasi."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"mengirim SMS tanpa konfirmasi"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Mengizinkan apl mengirim pesan SMS. Apl berbahaya dapat menimbulkan pengeluaran dengan mengirimkan pesan tanpa konfirmasi Anda."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"baca SMS atau MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"membaca pesan teks (SMS atau MMS) Anda"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Mengizinkan apl membaca pesan SMS yang tersimpan di tablet atau kartu SIM. Apl berbahaya dapat membaca pesan rahasia Anda."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Mengizinkan apl membaca pesan SMS yang tersimpan di ponsel atau kartu SIM. Apl berbahaya dapat membaca pesan rahasia Anda."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"edit SMS atau MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"edit pesan teks (SMS atau MMS) Anda"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Mengizinkan apl menulis ke pesan SMS yang tersimpan di tablet atau kartu SIM. Apl berbahaya dapat menghapus pesan Anda."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Mengizinkan apl menulis ke pesan SMS yang tersimpan di ponsel atau kartu SIM. Apl berbahaya dapat menghapus pesan Anda."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"terima WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"terima pesan teks (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Mengizinkan apl menerima dan memproses pesan WAP. Apl berbahaya dapat memantau pesan atau menghapusnya tanpa menunjukkannya kepada Anda."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"mengambil apl yang berjalan"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Mengizinkan apl mengambil informasi tentang tugas yang sedang dijalankan dan yang baru-baru ini dijalankan. Apl berbahaya dapat menemukan informasi pribadi tentang apl lain."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"mengambil detail aplikasi yang sedang berjalan"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Izinkan aplikasi mengambil informasi mendetail tentang tugas yang saat ini dan baru-baru ini dijalankan. Aplikasi berbahaya dapat menemukan informasi pribadi tentang aplikasi lain."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"menyusun ulang apl yang berjalan"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Mengizinkan apl memindah tugas ke latar depan dan latar belakang. Apl berbahaya dapat memaksa berpindah ke depan tanpa kontrol Anda."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"menghentikan apl yang berjalan"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Memungkinkan apl mengontrol mode kompatibilitas layar aplikasi lain. Aplikasi berbahaya dapat merusak perilaku aplikasi lain."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"mengaktifkan debugging apl"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Mengizinkan apl mengaktifkan debugging untuk apl lain. Apl berbahaya dapat menggunakan cara ini untuk menutup apl lain."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"ubah setelan UI Anda"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"ubah setelan tampilan sistem"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Mengizinkan apl mengubah konfigurasi saat ini, misalnya lokal atau ukuran font keseluruhan."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktifkan mode mobil"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Mengizinkan apl mengaktifkan mode mobil."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"hentikan proses latar belakang"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"tutup aplikasi lainnya"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Mengizinkan apl menghentikan proses latar belakang apl lain, meskipun tidak sedang kekurangan memori."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"memaksa apl lain berhenti"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Mengizinkan apl menghentikan apl lain dengan paksa."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Mengizinkan apl menyiarkan pemberitahuan bahwa pesan WAP PUSH telah diterima. Apl berbahaya dapat menggunakan ini untuk memalsukan penerimaan pesan MMS atau diam-diam mengganti konten laman web apa pun dengan varian berbahaya."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"batasi jumlah dari proses yang berjalan"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Mengizinkan apl mengontrol jumlah maksimum proses yang akan berjalan. Tidak pernah diperlukan oleh apl normal."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"menutup semua apl latar belakang"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"paksa aplikasi latar belakang agar menutup"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Mengizinkan apl mengontrol apakah aktivitas selalu selesai setelah berpindah ke latar belakang. Tidak pernah digunakan untuk apl normal."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"ubah statistika baterai"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Mengizinkan apl memodifikasi statistik baterai yang dikumpulkan. Tidak untuk digunakan oleh apl normal."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Mengizinkan apl meluncurkan UI konfirmasi pencadangan penuh. Tidak untuk digunakan oleh apl apa pun."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"tampilkan jendela yang tidak diizinkan"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Mengizinkan apl membuat jendela agar dapat digunakan oleh antarmuka pengguna sistem internal. Tidak untuk digunakan oleh apl normal."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"tampilkan lansiran tingkat sistem"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tutup aplikasi lain"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Mengizinkan apl menampilkan jendela lansiran sistem. Apl berbahaya dapat mengambil alih seluruh layar."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ubah kecepatan animasi global"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Mengizinkan apl mengubah kecepatan animasi global (animasi lebih cepat atau lebih lambat) kapan saja."</string> @@ -304,15 +372,15 @@ <string name="permdesc_deletePackages" msgid="7411480275167205081">"Mengizinkan apl menghapus paket Android. Apl berbahaya dapat menggunakan ini untuk menghapus apl penting."</string> <string name="permlab_clearAppUserData" msgid="274109191845842756">"menghapus data apl lainnya"</string> <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"Mengizinkan apl menghapus data pengguna."</string> - <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"menghapus tembolok apl lainnya"</string> - <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"Mengizinkan apl menghapus file tembolok."</string> + <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"menghapus cache apl lainnya"</string> + <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"Mengizinkan apl menghapus file cache."</string> <string name="permlab_getPackageSize" msgid="7472921768357981986">"mengukur ruang penyimpanan apl"</string> <string name="permdesc_getPackageSize" msgid="3921068154420738296">"Mengizinkan apl mengambil kode, data, dan ukuran temboloknya"</string> <string name="permlab_installPackages" msgid="2199128482820306924">"langsung memasang apl"</string> <string name="permdesc_installPackages" msgid="5628530972548071284">"Mengizinkan apl memasang paket Android yang baru atau diperbarui. Apl berbahaya dapat menggunakan ini untuk menambahkan apl baru dengan sembarang izin yang kuat."</string> - <string name="permlab_clearAppCache" msgid="7487279391723526815">"menghapus semua data tembolok apl"</string> - <string name="permdesc_clearAppCache" product="tablet" msgid="3523396284474042284">"Mengizinkan apl mengosongkan penyimpanan tablet dengan menghapus file dalam direktori tembolok apl. Akses biasanya sangat terbatas dan hanya diberikan bagi proses sistem."</string> - <string name="permdesc_clearAppCache" product="default" msgid="5067988373366292186">"Mengizinkan apl mengosongkan penyimpanan ponsel dengan menghapus file dalam direktori tembolok apl. Akses biasanya sangat terbatas dan hanya diberikan bagi proses sistem."</string> + <string name="permlab_clearAppCache" msgid="7487279391723526815">"menghapus semua data cache apl"</string> + <string name="permdesc_clearAppCache" product="tablet" msgid="3523396284474042284">"Mengizinkan apl mengosongkan penyimpanan tablet dengan menghapus file dalam direktori cache apl. Akses biasanya sangat terbatas dan hanya diberikan bagi proses sistem."</string> + <string name="permdesc_clearAppCache" product="default" msgid="5067988373366292186">"Mengizinkan apl mengosongkan penyimpanan ponsel dengan menghapus file dalam direktori cache apl. Akses biasanya sangat terbatas dan hanya diberikan bagi proses sistem."</string> <string name="permlab_movePackage" msgid="3289890271645921411">"memindahkan sumber daya apl"</string> <string name="permdesc_movePackage" msgid="319562217778244524">"Mengizinkan apl memindahkan sumber daya apl dari media internal ke eksternal dan sebaliknya."</string> <string name="permlab_readLogs" msgid="6615778543198967614">"baca data log sensitif"</string> @@ -321,7 +389,7 @@ <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"menggunakan media pengawasandi apa pun untuk pemutaran"</string> <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Mengizinkan apl menggunakan pengawasandi media apa pun yang terpasang guna mengawasandikan media untuk diputar."</string> <string name="permlab_diagnostic" msgid="8076743953908000342">"baca/tulis ke sumber daya yang dimiliki oleh diag"</string> - <string name="permdesc_diagnostic" msgid="6608295692002452283">"Mengizinkan apl membaca dan menulis ke sumber daya apa pun yang dimiliki oleh grup diag; misalnya, file dalam /dev. Izin ini berpotensi mempengaruhi kestabilan dan keamanan sistem. Sebaiknya ini HANYA digunakan untuk diagnostik khusus perangkat keras oleh pabrikan atau operator."</string> + <string name="permdesc_diagnostic" msgid="6608295692002452283">"Mengizinkan apl membaca dan menulis ke sumber daya apa pun yang dimiliki oleh grup diag; misalnya, file dalam /dev. Izin ini berpotensi memengaruhi kestabilan dan keamanan sistem. Sebaiknya ini HANYA digunakan untuk diagnostik khusus perangkat keras oleh pabrikan atau operator."</string> <string name="permlab_changeComponentState" msgid="6335576775711095931">"mengaktifkan atau menonaktifkan komponen apl"</string> <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"Mengizinkan apl mengubah apakah komponen apl lain diaktifkan atau tidak. Apl berbahaya dapat menggunakan ini untuk menonaktifkan kemampuan tablet yang penting. Izin ini harus digunakan dengan hati-hati karena dapat menjadikan komponen apl tidak dapat digunakan, tidak konsisten, atau tidak stabil."</string> <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"Mengizinkan apl mengubah apakah komponen apl lain diaktifkan atau tidak. Apl berbahaya dapat menggunakan izin ini untuk menonaktifkan kemampuan ponsel yang penting. Izin ini harus digunakan dengan hati-hati, karena mungkin saja menjadikan komponen apl tidak dapat digunakan, tidak konsisten, atau tidak stabil."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Memungkinkan aplikasi memberikan atau mencabut izin khusus untuk aplikasi tersebut atau aplikasi lainnya. Aplikasi berbahaya dapat menggunakannya untuk mengakses fitur yang tidak Anda beri izin."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"menyetel apl yang disukai"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Mengizinkan apl memodifikasi apl pilihan Anda. Apl berbahaya dapat diam-diam mengubah apl yang berjalan, menipu apl yang ada untuk mengumpulkan data pribadi dari Anda."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"ubah setelan sistem global"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"ubah setelan sistem"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Mengizinkan apl memodifikasi data setelan sistem. Apl berbahaya dapat merusak konfigurasi sistem anda."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"ubah setelan sistem aman"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Mengizinkan apl memodifikasi data setelan aman sistem. Tidak untuk digunakan oleh apl normal."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"ubah peta layanan Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Mengizinkan apl memodifikasi peta layanan Google. Tidak untuk digunakan oleh apl normal."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"mulai secara otomatis pada saat boot"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"dijalankan saat dimulai"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Mengizinkan apl memulai sendiri segera setelah sistem selesai booting. Hal ini dapat memperpanjang waktu yang diperlukan untuk memulai tablet dan memungkinkan apl memperlambat tablet secara keseluruhan jika terus berjalan."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Mengizinkan apl memulai sendiri segera setelah sistem selesai booting. Hal ini dapat memperpanjang waktu yang diperlukan untuk memulai ponsel dan memungkinkan apl memperlambat ponsel secara keseluruhan jika terus berjalan."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"kirim siaran memikat"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Mengizinkan apl mengirim siaran permanen, yang tetap ada setelah siaran berakhir. Apl berbahaya dapat membuat tablet menjadi lambat atau tidak stabil dengan memicu penggunaan memori yang terlalu banyak."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Mengizinkan apl mengirim siaran permanen, yang tetap ada setelah siaran berakhir. Apl berbahaya dapat membuat ponsel menjadi lambat atau tidak stabil dengan memicu penggunaan memori yang terlalu banyak."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"baca data kenalan"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"tuliskan data kenalan"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"baca kontak Anda"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Memungkinkan aplikasi membaca semua data tentang kontak yang disimpan pada tablet Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan izin ini untuk mengirim kontak Anda kepada orang lain."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Memungkinkan aplikasi membaca semua data tentang kontak yang disimpan pada ponsel Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan izin ini untuk mengirim kontak Anda kepada orang lain."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"ubah kontak Anda"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Memungkinkan aplikasi mengubah semua data tentang kontak yang disimpan pada tablet Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan ini untuk menghapus atau mengubah kontak Anda."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Memungkinkan aplikasi mengubah semua data tentang kontak yang disimpan pada ponsel Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan ini untuk menghapus atau mengubah kontak Anda."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"membaca log panggilan"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Memungkinkan apl membaca log panggilan tablet Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk mengirim data ke orang lain."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Memungkinkan apl membaca log panggilan ponsel Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk mengirim data ke orang lain."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"menulis log panggilan"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Memungkinkan apl memodifikasi log panggilan tablet Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk menghapus atau memodifikasi log panggilan Anda."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Memungkinkan apl memodifikasi log panggilan ponsel Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk menghapus atau memodifikasi log panggilan Anda."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"membaca data profil Anda"</string> - <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Mengizinkan apl membaca informasi profil pribadi yang tersimpan di perangkat Anda, misalnya nama dan informasi kenalan Anda. Ini artinya apl dapat mengenali dan mengirim informasi profil Anda ke orang lain."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"menulis ke data profil Anda"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"baca kartu kontak Anda"</string> + <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Mengizinkan apl membaca informasi profil pribadi yang tersimpan di perangkat Anda, misalnya nama dan informasi kontak Anda. Ini artinya apl dapat mengenali dan mengirim informasi profil Anda ke orang lain."</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"ubah kartu kontak Anda"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Mengizinkan apl mengubah atau menambah informasi profil pribadi yang tersimpan di perangkat Anda, seperti nama dan informasi kontak. Ini berarti apl lain dapat mengenali Anda dan mengirim informasi profil Anda ke orang lain."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"membaca aliran sosial Anda"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Mengizinkan apl mengakses dan menyinkronkan pembaruan sosial dari Anda dan teman. Apl berbahaya dapat menggunakannya untuk membaca komunikasi pribadi antara Anda dan teman di jaringan sosial."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"paksa reboot ponsel"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Mengizinkan apl memaksa tablet melakukan reboot."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Mengizinkan apl memaksa ponsel melakukan reboot."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"pasang dan lepas filesystem"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"akses sistem file simpanan USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"akses sistem file Kartu SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Mengizinkan apl memasang dan melepas sistem file untuk penyimpanan yang dapat dicopot."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"format penyimpanan eksternal"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"hapus penyimpanan USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"hapus Kartu SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Mengizinkan apl memformat penyimpanan yang dapat dicopot."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"dapatkan informasi pada penyimpanan internal"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Mengizinkan apl mendapatkan informasi di penyimpanan internal."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Mengizinkan apl memasang/melepas penyimpanan internal."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"ganti nama penyimpanan internal"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Mengizinkan apl mengganti nama penyimpanan internal."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"mengontrol penggetar"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kontrol getaran"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Mengizinkan aplikasi untuk mengendalikan vibrator."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"mengontrol lampu senter"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Mengizinkan apl mengontrol lampu kilat."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Mengizinkan apl memberi tahu sistem tentang widget mana yang dapat digunakan oleh suatu apl. Apl dengan izin ini dapat memberikan akses ke data pribadi untuk apl lain. Tidak untuk digunakan oleh apl normal."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ubah kondisi ponsel"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Mengizinkan apl mengontrol fitur telepon perangkat. Apl dengan izin ini dapat mengalihkan jaringan, menyalakan dan mematikan radio ponsel, dan melakukan hal serupa lainnya tanpa pernah memberi tahu Anda."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"baca kondisi dan identitas ponsel"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"baca identitas dan status ponsel"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Mengizinkan apl mengakses fitur ponsel perangkat. Apl dengan izin ini dapat menentukan nomor telepon dan nomor seri ponsel ini, apakah panggilan sedang aktif atau tidak, nomor yang terhubung ke panggilan, dan sejenisnya."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"cegah tablet dari tidur"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"mencegah ponsel menjadi tidak aktif"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Jalankan sebagai uji pabrik tingkat rendah, yang memungkinkan akses penuh pada perangkat keras ponsel. Hanya tersedia ketika ponsel berjalan pada mode uji pabrik."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"atur wallpaper"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Mengizinkan apl menyetel wallpaper sistem."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"atur petunjuk ukuran wallpaper"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"sesuaikan ukuran wallpaper Anda"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Mengizinkan apl menyetel petunjuk ukuran wallpaper sistem."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"setel ulang sistem ke setelan default pabrik"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Mengizinkan apl menyetel ulang sistem ke setelan pabrik sepenuhnya, menghapus semua data, konfigurasi, dan apl yang terpasang."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Mengizinkan apl mengubah zona waktu pada ponsel."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"bertindak sebagai AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Mengizinkan apl melakukan panggilan ke AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"menemukan akun yang diketahui"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"cari akun pada perangkat"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Mengizinkan apl mendapatkan daftar akun yang dikenal oleh tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Memungkinkan apl mendapatkan daftar akun yang dikenali oleh ponsel."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"bertindak sebagai autentikator akun"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"buat akun dan setel sandi"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Mengizinkan apl menggunakan kemampuan pengautentikasi akun dari AccountManager, termasuk membuat akun dan mendapatkan serta menyetel sandinya."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"kelola daftar akun"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"tambah atau hapus akun"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Mengizinkan apl melakukan operasi seperti menambah dan menghapus akun, serta menghapus sandinya."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"gunakan kredensial autentikasi dari suatu akun"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"gunakan akun pada perangkat"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Mengizinkan apl meminta token autentikasi."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"melihat keadaan jaringan"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"lihat sambungan jaringan"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Mengizinkan apl melihat keadaan semua jaringan."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"akses internet penuh"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Mengizinkan apl membuat soket jaringan."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Mengizinkan apl mengubah status konektivitas jaringan yang tertambat."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"mengubah setelan penggunaan data latar belakang"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Mengizinkan apl mengubah setelan penggunaan data latar belakang."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"lihat kondisi Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"lihat sambungan Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Mengizinkan apl melihat informasi tentang keadaan Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"ubah status Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"sambung dan putuskan Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Mengizinkan apl menyambung ke dan memutus dari titik akses Wi-Fi, dan mengubah jaringan Wi-Fi yang telah dikonfigurasi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Izinkan penerimaan Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Mengizinkan apl menerima paket yang tidak langsung dialamatkan ke perangkat Anda. Izin ini akan berguna saat mencari layanan yang ditawarkan di lokasi terdekat. Apl ini menggunakan lebih banyak daya daripada mode selain multicast."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Administrasi Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"akses setelan Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Mengizinkan apl mengonfigurasi tablet Bluetooth lokal, dan menemukan serta menyandingkan dengan perangkat jarak jauh."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Mengizinkan apl mengonfigurasi ponsel Bluetooth lokal, dan menemukan serta menyandingkan dengan perangkat jarak jauh."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Lihat status WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Lihat sambungan WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Mengizinkan apl melihat informasi tentang keadaan WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Ubah status WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Mengizinkan apl menyambung ke dan memutus dari jaringan WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"buat sambungan Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"sandingkan dengan perangkat Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Mengizinkan apl melihat konfigurasi tablet Bluetooth lokal, dan membuat serta menerima sambungan dengan perangkat yang disandingkan."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Mengizinkan apl melihat konfigurasi ponsel Bluetooth lokal, serta membuat dan menerima sambungan dengan perangkat yang disandingkan."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontrol NFC"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Mengizinkan apl berkomunikasi dengan tag, kartu, dan alat pembaca Komunikasi Nirkabel Jarak Dekat (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"nonaktifkan kunci tombol"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"nonaktifkan kunci layar Anda"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Mengizinkan apl menonaktifkan kunci tombol dan segala keamanan sandi yang terkait. Contoh nyata dari hal ini adalah ponsel menonaktifkan kunci tombol saat menerima panggilan telepon masuk, kemudian mengaktifkan kembali kunci tombol ketika panggilan selesai."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"baca setelan sinkron"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Mengizinkan apl membaca setelan sinkronisasi, misalnya apakah sinkronisasi untuk apl Orang diaktifkan atau tidak."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"tuliskan setelan sinkronisasi"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"nyalakan dan matikan sinkronisasi"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Mengizinkan apl memodifikasi setelan sinkronisasi, seperti apakah sinkronisasi untuk apl Orang diaktifkan atau tidak."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"statistika baca sinkron"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Mengizinkan apl membaca statistik sinkronisasi; mis., riwayat sinkronisasi yang telah terjadi."</string> @@ -517,22 +583,22 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Mengizinkan apl mendapatkan detail tentang umpan yang saat ini sedang disinkronkan."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"tuliskan umpan langganan"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Mengizinkan apl memodifikasi umpan Anda yang disinkronkan saat ini. Apl berbahaya dapat mengubah umpan Anda yang disinkronkan."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"membaca kamus yang dibuat pengguna"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"baca istilah yang Anda tambahkan ke kamus"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Mengizinkan apl membaca kata, nama, dan frasa pribadi apa pun yang mungkin disimpan oleh pengguna di kamus pengguna."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"menulis ke kamus yang dibuat pengguna"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Mengizinkan apl menulis kata-kata baru ke dalam kamus pengguna."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"membaca konten penyimpanan USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"membaca konten kartu SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Mengizinkan apl membaca konten penyimpanan USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Mengizinkan apl membaca konten kartu SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"ubah/hapus konten penyimpanan USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ubah/hapus isi kartu SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"baca konten simpanan USB Anda"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"baca konten kartu SD Anda"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Izinkan aplikasi membaca konten penyimpanan USB, yang mungkin mencakup foto dan media."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Izinkan aplikasi membaca konten kartu SD, yang mungkin mencakup foto dan media."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ubah/hapus konten pympanan USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"ubah atau hapus konten kartu SD Anda"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Mengizinkan apl menulis ke penyimpanan USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Memungkinkan apl menulis ke kartu SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"ubah/hapus konten penyimpanan media internal"</string> <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"Mengizinkan apl memodifikasi konten penyimpanan media internal."</string> - <string name="permlab_cache_filesystem" msgid="5656487264819669824">"akses sistem file tembolok."</string> - <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Mengizinkan apl membaca dan menulis pada sistem file tembolok."</string> + <string name="permlab_cache_filesystem" msgid="5656487264819669824">"akses sistem file cache."</string> + <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Mengizinkan apl membaca dan menulis pada sistem file cache."</string> <string name="permlab_use_sip" msgid="5986952362795870502">"lakukan//terima panggilan internet"</string> <string name="permdesc_use_sip" msgid="4717632000062674294">"Mengizinkan apl menggunakan layanan SIP untuk melakukan/menerima panggilan internet."</string> <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"baca riwayat penggunaan jaringan"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Tidak ada Kartu SIM di dalam ponsel."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Masukkan kartu SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Kartu SIM tidak ada atau tidak dapat dibaca. Masukkan kartu SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Kartu SIM Anda telah dinonaktifkan secara permanen."\n" Hubungi penyedia layanan nirkabel Anda untuk kartu SIM lain."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Tombol trek sebelumnya"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Tombol trek berikutnya"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"karakter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"kata"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"tautan"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"baris"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Uji pabrik gagal"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Kampung"</string> <string name="autofill_area" msgid="3547409050889952423">"Area"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"baca riwayat dan bookmark Browser"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"baca riwayat dan bookmark web Anda"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Mengizinkan apl membaca semua URL yang telah dikunjungi Browser dan semua bookmark Browser."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"tuliskan riwayat dan bookmark Browser"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"tulis riwayat dan bookmark web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Mengizinkan apl memodifikasi riwayat Browser atau bookmark yang tersimpan di tablet. Apl berbahaya dapat menggunakan izin ini untuk menghapus atau memodifikasi data Browser Anda."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Mengizinkan apl memodifikasi riwayat Browser atau bookmark yang tersimpan di ponsel Anda. Apl berbahaya dapat menggunakannya untuk menghapus atau memodifikasi data Browser Anda."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"setel alarm di jam alarm"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"setel alarm"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Mengizinkan apl menyetel alarm di apl jam alarm yang terpasang. Beberapa apl jam alarm mungkin tidak menerapkan fitur ini."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"tambahkan kotak pesan"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Mengizinkan apl menambahkan pesan ke kotak masuk untuk pesan suara Anda."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Setel"</string> <string name="date_time_done" msgid="2507683751759308828">"Selesai"</string> <string name="default_permission_group" msgid="2690160991405646128">"Default"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BARU: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"BARU: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Tidak perlu izin"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Sembunyikan"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Tampilkan semua"</b></string> @@ -1130,7 +1194,7 @@ <string name="ime_action_previous" msgid="1443550039250105948">"Sebelumnya"</string> <string name="ime_action_default" msgid="2840921885558045721">"Lakukan"</string> <string name="dial_number_using" msgid="5789176425167573586">"Panggil nomor "\n"menggunakan<xliff:g id="NUMBER">%s</xliff:g>"</string> - <string name="create_contact_using" msgid="4947405226788104538">"Buat kenalan "\n"menggunakan <xliff:g id="NUMBER">%s</xliff:g>"</string> + <string name="create_contact_using" msgid="4947405226788104538">"Buat kontak "\n"menggunakan <xliff:g id="NUMBER">%s</xliff:g>"</string> <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Satu atau beberapa apl meminta izin untuk mengakses akun Anda, sekarang dan di masa mendatang."</string> <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Apakah Anda ingin mengizinkan permintaan ini?"</string> <string name="grant_permissions_header_text" msgid="6874497408201826708">"Permintaan akses"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 4f16349c185d..8a4a54c01a78 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"I tuoi messaggi"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Consentono di leggere e scrivere SMS, email e altri messaggi."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informazioni personali"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accedere direttamente ai contatti e al calendario memorizzati sul tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accedere direttamente ai contatti e al calendario memorizzati sul telefono."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"La tua posizione"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitoraggio della posizione fisica dell\'utente."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicazione di rete"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Accesso a varie funzioni di rete."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"I tuoi account"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accedere agli account disponibili."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controlli hardware"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Accesso al sistema e controllo di livello inferiore."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Strumenti di sviluppo"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funzionalità necessarie soltanto agli sviluppatori di applicazioni."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Archiviazione"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accesso all\'archivio USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesso alla scheda SD."</string> @@ -193,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Consente di visualizzare l\'applicazione nella barra di stato."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"espansione/compressione barra di stato"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Consente all\'applicazione di espandere o comprimere la barra di stato."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"intercettazione chiamate in uscita"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"reindirizzamento chiamate in uscita"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Consente all\'applicazione di elaborare le chiamate in uscita e di modificare il numero da comporre. Le applicazioni dannose potrebbero monitorare, reindirizzare o impedire le chiamate in uscita."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"ricezione SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"ricezione messaggi di testo (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Consente all\'applicazione di ricevere ed elaborare messaggi SMS. Le applicazioni dannose potrebbero monitorare i tuoi messaggi o eliminarli senza mostrarteli."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"ricezione MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"ricezione messaggi di testo (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Consente all\'applicazione di ricevere ed elaborare messaggi MMS. Le applicazioni dannose potrebbero monitorare i tuoi messaggi o eliminarli senza mostrarteli."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ricezione di trasmissioni di emergenza"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Consente all\'applicazione di ricevere ed elaborare messaggi broadcast di emergenza. Questa autorizzazione è disponibile solo per applicazioni di sistema."</string> @@ -207,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Consente all\'applicazione di inviare messaggi SMS. Le applicazioni dannose potrebbero comportare addebiti inviando messaggi senza la tua conferma."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"invio di messaggi SMS senza conferma"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Consente all\'applicazione di inviare messaggi SMS. Le applicazioni dannose potrebbero comportare addebiti inviando messaggi senza la tua conferma."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"lettura SMS o MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"lettura messaggi di testo personali (SMS o MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Consente all\'applicazione di leggere i messaggi SMS memorizzati sul tablet o sulla scheda SIM. Le applicazioni dannose potrebbero leggere i tuoi messaggi riservati."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Consente all\'applicazione di leggere i messaggi SMS memorizzati sul telefono o sulla scheda SIM. Le applicazioni dannose potrebbero leggere i tuoi messaggi riservati."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"modifica SMS o MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"modifica dei messaggi di testo (SMS o MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Consente all\'applicazione la scrittura nei messaggi SMS memorizzati sul tablet o sulla scheda SIM. Le applicazioni dannose potrebbero cancellare i tuoi messaggi."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Consente all\'applicazione la scrittura nei messaggi SMS memorizzati sul telefono o sulla scheda SIM. Le applicazioni dannose potrebbero cancellare i tuoi messaggi."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"ricezione WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ricezione messaggi di testo (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Consente all\'applicazione di ricevere ed elaborare messaggi WAP. Le applicazioni dannose potrebbero monitorare i tuoi messaggi o eliminarli senza mostrarteli."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"recupero applicazioni in esecuzione"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Consente all\'applicazione di recuperare informazioni sulle attività attualmente e recentemente in esecuzione. Le applicazioni dannose potrebbero scoprire informazioni riservate su altre applicazioni."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recupero dettagli applicazioni in esecuzione"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Consente all\'applicazione di recuperare informazioni dettagliate sulle attività attualmente e recentemente in esecuzione. Le applicazioni dannose potrebbero scoprire informazioni riservate su altre applicazioni."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"riordinamento applicazioni in esecuzione"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Consente all\'applicazione di spostare attività in primo piano e in background. Le applicazioni dannose potrebbero forzare la loro impostazione in primo piano senza il tuo controllo."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"interruzione applicazioni in esecuzione"</string> @@ -227,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Consente all\'applicazione di controllare la modalità di compatibilità dello schermo di altre applicazioni. Le applicazioni dannose potrebbero disturbare il comportamento di altre applicazioni."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"attivazione debug delle applicazioni"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Consente all\'applicazione di attivare il debug per un\'altra applicazione. Le applicazioni dannose potrebbero farne uso per terminare altre applicazioni."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"modifica impostazioni UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modifica delle impostazioni di visualizzazione del sistema"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Consente all\'applicazione di modificare la configurazione corrente, come la lingua o le dimensioni generali dei caratteri."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"abilitazione modalità auto"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Consente all\'applicazione di abilitare la modalità automobile."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"interruzione processi in background"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"chiusura altre applicazioni"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Consente all\'applicazione di terminare i processi in background di altre applicazioni, anche se la memoria non è scarsa."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"interruzione forzata di altre applicazioni"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Consente all\'applicazione di interrompere forzatamente altre applicazioni."</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Consente all\'applicazione di trasmettere una notifica che informa della ricezione di un messaggio WAP PUSH. Le applicazioni dannose potrebbero farne uso per simulare la ricezione di messaggi MMS o per sostituire di nascosto i contenuti di qualsiasi pagina web con varianti dannose."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"numero limite di processi in esecuzione"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Consente all\'applicazione di controllare il numero massimo di processi che verranno eseguiti. Mai necessaria per le applicazioni normali."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"chiusura di tutte le applicazioni in background"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"chiusura forzata applicazioni di background"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Consente all\'applicazione di controllare se le attività sono sempre terminate non appena passano in background. Mai necessaria per le applicazioni normali."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modifica statistiche batteria"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Consente all\'applicazione di modificare le statistiche raccolte sulla batteria. Da non usare per normali applicazioni."</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Consente all\'applicazione di avviare l\'interfaccia utente di conferma del backup completo. Non utilizzare per nessuna applicazione."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"visualizzazione finestre non autorizzate"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Consente all\'applicazione di creare finestre destinate all\'uso da parte dell\'interfaccia utente del sistema interno. Da non usare per normali applicazioni."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"visualizzazione avvisi di sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"disegno su altre applicazioni"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Consente all\'applicazione di mostrare finestre di avviso di sistema. Le applicazioni dannose potrebbero prendere il controllo dell\'intero schermo."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modifica velocità di animazione globale"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Consente all\'applicazione di modificare la velocità di animazione globale (animazioni più veloci o più lente) in qualsiasi momento."</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Consente a un\'applicazione di concedere o revocare autorizzazioni specifiche per essa o per altre applicazioni. Le applicazioni dannose potrebbero utilizzare questa autorizzazione per accedere a funzioni che non hai concesso loro."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"impostazione applicazioni preferite"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Consente all\'applicazione di modificare le tue applicazioni preferite. Le applicazioni dannose potrebbero cambiare di nascosto le applicazioni che vengono eseguite, facendo in modo che le applicazioni esistenti raccolgano dati riservati su di te."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modifica impostazioni di sistema globali"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modifica delle impostazioni di sistema"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Consente all\'applicazione di modificare i dati delle impostazioni di sistema. Le applicazioni dannose potrebbero compromettere la configurazione di sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificare le impostazioni di protezione del sistema"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Consente all\'applicazione di modificare i dati delle impostazioni protette del sistema. Da non usare per normali applicazioni."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modifica mappa servizi Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Consente all\'applicazione di modificare la mappa dei servizi Google. Da non usare per normali applicazioni."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"apertura automatica all\'avvio"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"esecuzione all\'avvio"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Consente all\'applicazione di avviarsi non appena termina l\'avvio del sistema. Ciò può rallentare l\'avvio del tablet e consentire all\'applicazione di rallentare il funzionamento generale del tablet restando sempre in esecuzione."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Consente all\'applicazione di avviarsi non appena termina l\'avvio del sistema. Ciò può rallentare l\'avvio del telefono e consentire all\'applicazione di rallentare il funzionamento generale del telefono restando sempre in esecuzione."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"invio broadcast permanenti"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Consente all\'applicazione di inviare broadcast permanenti, che permangono anche al termine del broadcast. Le applicazioni dannose potrebbero rendere il tablet lento o instabile tramite un uso eccessivo della memoria."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Consente all\'applicazione di inviare broadcast permanenti, che permangono anche al termine del broadcast. Le applicazioni dannose potrebbero rendere il telefono lento o instabile tramite un uso eccessivo della memoria."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"lettura dati di contatto"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"scrittura dati di contatto"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"lettura contatti personali"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Consente all\'applicazione di leggere tutti i dati relativi ai contatti memorizzati sul tablet, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero utilizzare questa autorizzazione per inviare i tuoi dati di contatto ad altre persone."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Consente all\'applicazione di leggere tutti i dati relativi ai contatti memorizzati sul telefono, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero utilizzare questa autorizzazione per inviare i tuoi dati di contatto ad altre persone."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modifica dei contatti personali"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Consente all\'applicazione di modificare i dati relativi ai contatti memorizzati sul tablet, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i tuoi dati di contatto."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Consente all\'applicazione di modificare i dati relativi ai contatti memorizzati sul telefono, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i tuoi dati di contatto."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"lettura del registro chiamate"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Consente all\'applicazione di leggere il registro chiamate del tablet, inclusi i dati sulle chiamate in arrivo e in uscita. Le applicazioni dannose potrebbero fare uso di questa funzione per inviare dati ad altre persone."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Consente all\'applicazione di leggere il registro chiamate del telefono, inclusi i dati sulle chiamate in arrivo e in uscita. Le applicazioni dannose potrebbero fare uso di questa funzione per inviare dati ad altre persone."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"scrittura del registro chiamate"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Consente all\'applicazione di modificare il registro chiamate del tablet, inclusi i dati sulle chiamate in arrivo e in uscita. Le applicazioni dannose potrebbero farne uso per cancellare o modificare il registro chiamate."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Consente all\'applicazione di modificare il registro chiamate del telefono, inclusi i dati sulle chiamate in arrivo e in uscita. Le applicazioni dannose potrebbero farne uso per cancellare o modificare il registro chiamate."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"lettura dei tuoi dati profilo"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"lettura scheda cont. personale"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Consente all\'applicazione di leggere informazioni del profilo personale memorizzate sul dispositivo, come il tuo nome e le tue informazioni di contatto. Ciò significa che l\'applicazione può identificarti e inviare le tue informazioni di profilo ad altri."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"scrittura dati del profilo"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modifica scheda cont. personale"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Consente all\'applicazione di modificare o aggiungere informazioni ai dati del profilo personale memorizzati sul dispositivo, come il tuo nome e le tue informazioni di contatto. Ciò significa che altre applicazioni possono identificarti e inviare le tue informazioni di profilo ad altri."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lettura del tuo stream sociale"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Consente all\'applicazione di accedere agli aggiornamenti tuoi e dei tuoi amici dai social network e di sincronizzarli. Le applicazioni dannose possono farne uso per accedere alle comunicazioni private tra te e i tuoi amici sui social network."</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"riavvio forzato del telefono"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Consente all\'applicazione di forzare il riavvio del tablet."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Consente all\'applicazione di forzare il riavvio del telefono."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"installazione/disinstallazione filesystem"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"accesso filesystem achivio USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accesso al filesystem della scheda SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Consente montaggio e smontaggio da parte dell\'applicazione dei filesystem degli archivi rimovibili."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formattazione archivio esterno"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"cancellazione archivio USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"cancellazione scheda SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Consente all\'applicazione di formattare l\'archivio rimovibile."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"recupero di informazioni sull\'archivio interno"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Consente all\'applicazione di ottenere informazioni sulla memoria interna."</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Consente all\'applicazione di montare/smontare la memoria interna."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"ridenominazione archivio interno"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Consente all\'applicazione di rinominare la memoria interna."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"controllo vibrazione"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"controllo vibrazione"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Consente all\'applicazione di controllare la vibrazione."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"controllo flash"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Consente all\'applicazione di controllare il flash."</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Consente all\'applicazione di indicare al sistema quali widget possono essere utilizzati e da quale applicazione. Un\'applicazione con questa autorizzazione può concedere ad altre applicazioni l\'accesso ai dati personali. Da non usare per normali applicazioni."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modifica stato del telefono"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Consente all\'applicazione di controllare le funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può cambiare rete, attivare/disattivare il segnale radio del telefono e così via a tua insaputa."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"lettura stato e identità del telefono"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"lettura stato e identità telefono"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Consente all\'applicazione di accedere alle funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può determinare il numero di telefono e il numero di serie di questo telefono, se una chiamata è attiva, il numero a cui è collegata la chiamata e informazioni simili."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"disattivazione stand-by del tablet"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"disattivazione stand-by del telefono"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"In esecuzione come test del produttore di basso livello, consentendo l\'accesso completo all\'hardware del telefono. Disponibile soltanto quando il telefono è in esecuzione in modalità test del produttore."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"impostazione sfondo"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Consente all\'applicazione di impostare lo sfondo del sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"impostaz. suggerimenti dimensioni sfondo"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"regolazione dimensioni sfondo"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Consente all\'applicazione di impostare i suggerimenti per le dimensioni dello sfondo del sistema."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"ripristino impostazioni predef. di fabbrica"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Consente all\'applicazione di effettuare un ripristino dati di fabbrica completo sul sistema, cancellando tutti i dati, la configurazione e le applicazioni installate."</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Consente all\'applicazione di modificare il fuso orario del telefono."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"agire da AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Consente all\'applicazione di effettuare chiamate verso AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"rilevamento account noti"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"individuazione account sul dispositivo"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Consente all\'applicazione di recuperare l\'elenco di account memorizzati sul tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Consente all\'applicazione di recuperare l\'elenco di account memorizzati sul telefono."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"agire da autenticatore account"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"creazione account e configurazione password"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Consente all\'applicazione di utilizzare le funzionalità di autenticatore account di AccountManager, inclusi la creazione degli account e il recupero o l\'impostazione delle relative password."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"gestione dell\'elenco degli account"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"aggiunta o rimozione account"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Consente all\'applicazione di eseguire operazioni quali l\'aggiunta o la rimozione degli account e l\'eliminazione delle relative password."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"utilizzo delle credenziali di autenticazione di un account"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"utilizzo account sul dispositivo"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Consente all\'applicazione di richiedere i token di autenticazione."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"visualizzazione stato della rete"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"visualizzazione connessioni di rete"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Consente all\'applicazione di visualizzare lo stato di tutte le reti."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"accesso completo a Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Consente all\'applicazione di creare socket di rete."</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Consente all\'applicazione di modificare lo stato di connettività di rete tethering."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"cambiare l\'impostazione di utilizzo dei dati in background"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Consente all\'applicazione di cambiare l\'impostazione di utilizzo dei dati in background."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"visualizzazione stato Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"visualizzazione connessioni Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Consente all\'applicazione di visualizzare le informazioni relative allo stato della rete Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"modifica stato Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"connessione e disconnessione dal Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Consente all\'applicazione di connettersi/disconnettersi da punti di accesso Wi-Fi e di apportare modifiche alle reti Wi-Fi configurate."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"consenti ricezione multicast Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Consente all\'applicazione di ricevere pacchetti non direttamente indirizzati al tuo dispositivo. Può essere utile durante la ricerca di servizi offerti nelle vicinanze. Consuma di più rispetto alla modalità non multicast."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"gestione Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accesso alle impostazioni Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Consente all\'applicazione di configurare il tablet Bluetooth locale e di rilevare ed effettuare l\'accoppiamento con dispositivi remoti."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Consente all\'applicazione di configurare il telefono Bluetooth locale e di rilevare ed effettuare l\'accoppiamento con dispositivi remoti."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Visualizzazione stato WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Visualizzazione connessioni WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Consente all\'applicazione di visualizzare le informazioni relative allo stato del WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Modifica stato WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Consente all\'applicazione di connettersi/disconnettersi dalla rete WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"creazione connessioni Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"accoppiamento con dispositivi Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Consente all\'applicazione di visualizzare la configurazione del tablet Bluetooth locale e di stabilire e accettare connessioni con dispositivi accoppiati."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Consente all\'applicazione di visualizzare la configurazione del telefono Bluetooth locale e di stabilire e accettare connessioni con dispositivi accoppiati."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controllo Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Consente all\'applicazione di comunicare con tag, schede e lettori NFC (Near Field Communication)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"disattivazione blocco tastiera"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"disattivazione blocco schermo"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Consente la disattivazione da parte dell\'applicazione del blocco tastiera e di eventuali protezioni tramite password associate. Un valido esempio è la disattivazione da parte del telefono del blocco tastiera quando riceve una telefonata in arrivo e la successiva riattivazione del blocco al termine della chiamata."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"lettura impostazioni di sincronizz."</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Consente all\'applicazione di leggere le impostazioni di sincronizzazione, come l\'eventuale attivazione della sincronizzazione per l\'applicazione Persone."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"scrittura impostazioni di sincronizz."</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"attivazione e disattivazione della sincronizzazione"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Consente all\'applicazione di modificare le impostazioni di sincronizzazione, come l\'eventuale attivazione della sincronizzazione per l\'applicazione Persone."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"lettura statistiche di sincronizz."</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Consente all\'applicazione di leggere le statistiche di sincronizzazione, ad esempio la cronologia delle sincronizzazioni effettuate."</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Consente all\'applicazione di ottenere dettagli sui feed attualmente sincronizzati."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"scrittura feed sottoscritti"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Consente all\'applicazione di modificare i feed attualmente sincronizzati. Le applicazioni dannose potrebbero modificare i tuoi feed sincronizzati."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"lettura dizionario definito dall\'utente"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"lettura termini aggiunti al dizionario"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Consente all\'applicazione di leggere parole, frasi e nomi privati che l\'utente potrebbe aver memorizzato nel dizionario utente."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"scrittura nel dizionario definito dall\'utente"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Consente all\'applicazione di scrivere nuove parole nel dizionario utente."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"lettura contenuti archivio USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"lettura dei contenuti della scheda SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Consente di leggere l\'archivio USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Consente all\'applicazione di leggere contenuti della scheda SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modifica/eliminaz. contenuti archivio USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificare/eliminare i contenuti della scheda SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lettura contenuti archivio USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lettura contenuti scheda SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Consente all\'applicazione di leggere i contenuti dell\'archivio USB, che possono includere foto e contenuti multimediali."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Consente all\'applicazione di leggere i contenuti della scheda SD, che possono includere foto e contenuti multimediali."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"mod./elimin. cont. archivio USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modifica o eliminazione contenuti scheda SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Consente all\'applicazione di scrivere nell\'archivio USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Consente all\'applicazione di scrivere sulla scheda SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modifica/eliminaz. contenuti archivio media int."</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Nessuna SIM presente nel telefono."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserisci una scheda SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Scheda SIM mancante o non leggibile. Inserisci una scheda SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"La scheda SIM è stata disattivata definitivamente."\n" Contatta il fornitore del tuo servizio wireless per ricevere un\'altra scheda SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Pulsante traccia precedente"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Pulsante traccia successiva"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Parrocchia"</string> <string name="autofill_area" msgid="3547409050889952423">"Area"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lettura cronologia e segnalibri del browser"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lettura segnalibri e cronologia web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Consente all\'applicazione di leggere tutti gli URL visitati e tutti i segnalibri del browser."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"creazione cronologia e segnalibri del browser"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"scrittura segnalibri e cronologia web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Consente all\'applicazione di modificare la cronologia del Browser o i segnalibri memorizzati sul tablet. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i dati del tuo Browser."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Consente all\'applicazione di modificare la cronologia del Browser o i segnalibri memorizzati sul telefono. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i dati del tuo Browser."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"impostazione allarmi nella sveglia"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"impostazione allarme"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Consente all\'applicazione di impostare un allarme in un\'applicazione sveglia installata. È possibile che alcune applicazioni sveglia non possano implementare questa funzione."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"aggiunta di un messaggio vocale"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Consente all\'applicazione di aggiungere messaggi alla casella della segreteria."</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Imposta"</string> <string name="date_time_done" msgid="2507683751759308828">"Fine"</string> <string name="default_permission_group" msgid="2690160991405646128">"Predefinito"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUOVA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUOVA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nessuna autorizzazione richiesta"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Nascondi"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostra tutto"</b></string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 77a6c47377d1..08a95d43b6a7 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"ההודעות שלך"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"קריאה וכתיבה בהודעות ה-SMS, הדוא\"ל והודעות אחרות שלך."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"המידע האישי שלך"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"גישה ישירה לאנשי הקשר וללוח השנה המאוחסנים בטבלט."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"גישה ישירה לאנשי הקשר וללוח השנה המאוחסנים בטלפון."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"המיקום שלך"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"עקוב אחר המיקום הפיזי שלך."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"תקשורת רשת"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"הרשאת גישה לתכונות רשת שונות."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"החשבונות שלך"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"גישה לכל החשבונות הזמינים."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"בקרת חומרה"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"גישה ושליטה במערכת ברמה נמוכה."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"כלי פיתוח"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"תכונות הדרושות למפתחי יישומים בלבד."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"אחסון"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"גישה לאמצעי אחסון מסוג USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"גש לכרטיס SD."</string> @@ -193,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"מאפשר ליישום להופיע בשורת המצב."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"הרחב/כווץ את שורת המצב"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"מאפשר ליישום להרחיב או לכווץ את שורת המצב."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"עיכוב שיחות יוצאות"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ניתוב מחדש של שיחות יוצאות"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"מאפשר ליישום לעבד שיחות יוצאות ולשנות את המספר שיש לחייג. יישומים זדוניים עלולים לעקוב אחר שיחות יוצאות, לבצע הפניה מחדש שלהן או אף למנוע את ביצוען."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"קבל SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"קבלת הודעות טקסט (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"מאפשר ליישום לקבל ולעבד הודעות SMS. יישומים זדוניים עלולים לעקוב אחר ההודעות שלך או למחוק אותן מבלי להציגן בפניך."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"קבל MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"קבלת הודעות טקסט (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"מאפשר ליישום לקבל ולעבד הודעות MMS. יישומים זדוניים עלולים לעקוב אחר ההודעות שלך או למחוק אותן מבלי להציגן בפניך."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"קבל שידורי חירום"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"מאפשר ליישום לקבל ולעבד לשדר הודעות חירום משודרות. הרשאה זו זמינה רק ליישומי מערכת."</string> @@ -207,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"מאפשר ליישום לשלוח הודעות SMS. יישומים זדוניים עלולים לעלות לך כסף בגין שליחת הודעות ללא אישור שלך."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"שלח הודעות SMS ללא אישור"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"מאפשר ליישום לשלוח הודעות SMS. יישומים זדוניים עלולים לעלות לך כסף בגין שליחת הודעות ללא אישור שלך."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"קרא SMS או MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"קריאת הודעות הטקסט שלך (SMS או MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"מאפשר ליישום לקרוא הודעות SMS ששמורות בטבלט או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים לקרוא את ההודעות הסודיות שלך."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"מאפשר ליישום לקרוא הודעות SMS המאוחסנות בטלפון או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים לקרוא את ההודעות הסודיות שלך."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"ערוך SMS או MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"עריכת הודעות הטקסט שלך (SMS או MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"מאפשר ליישום לכתוב להודעות SMS המאוחסנות בטבלט או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים למחוק את ההודעות שלך."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"מאפשר ליישום לכתוב להודעות SMS המאוחסנות בטלפון או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים למחוק את ההודעות שלך."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"קבל WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"קבלת הודעות טקסט (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"מאפשר ליישום לקבל ולעבד הודעות WAP. יישומים זדוניים עלולים לעקוב אחר ההודעות שלך או למחוק אותן מבלי להציגן בפניך."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"אחזור יישומים פעילים"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"מאפשר ליישום לאחזר מידע על המשימות הנוכחיות שפועלות, ואלו שפעלו לאחרונה. יישומים זדוניים עלולים לגלות מידע אישי על יישומים אחרים."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"אחזור פרטי יישומים פועלים"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"מאפשר ליישום לאחזר מידע מפורט על המשימות הנוכחיות הפועלות ועל משימות שפעלו לאחרונה. יישומים זדוניים עלולים לגלות מידע אישי על יישומים אחרים."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"סידור מחדש של יישומים פעילים"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"מאפשר ליישום להעביר משימות לחזית ולרקע. יישומים זדוניים עלולים לאלץ את עצמם לעבור לחזית ללא שליטה מצדך."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"עצירת יישומים פעילים"</string> @@ -227,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"מאפשר ליישום לשלוט במצב תאימות המסך של יישומים אחרים. יישומים זדוניים עלולים לפגוע בהתנהגות של יישומים אחרים."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"הפעלה של ניקוי באגים ביישומים"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"הרשאה זו מאפשרת ליישום להפעיל ניקוי באגים עבור יישום אחר. יישומים זדוניים עלולים להשתמש באפשרות זו כדי לסגור יישומים אחרים."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"שנה את הגדרות ממשק המשתמש שלך"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"שינוי הגדרות תצוגה של המערכת"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"הרשאה זו מאפשרת ליישום לשנות את התצורה הנוכחית, כגון המקום או גודל הגופן הכללי."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"הפוך מצב מכונית לפעיל"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"מאפשר ליישום לאפשר את מצב מכונית."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"הפסק תהליכים ברקע"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"סגירת יישומים אחרים"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"מאפשר ליישום לסגור תהליכי רקע של יישומים אחרים, גם אם מפלס הזיכרון אינו נמוך."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"אילוץ עצירה של יישומים אחרים"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"מאפשר ליישום לאלץ עצירה של יישומים אחים."</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"מאפשר ליישום לשדר התראה על כך שהתקבלה הודעה מסוג WAP PUSH. יישומים זדוניים עלולים להשתמש בכך כדי לזייף קבלה של הודעות MMS או כדי להחליף בחשאי את התוכן של דף אינטרנט כלשהו בגירסאות זדוניות."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"הגבל את מספר התהליכים הפועלים"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"מאפשר ליישום לשלוט על המספר המרבי של תהליכים שיפעלו. הרשאה זו לעולם אינה נחוצה ליישומים רגילים."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"אילוץ סגירה של כל יישומי הרקע"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"אילוץ סגירה של יישומים ברקע"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"מאפשר ליישום לקבוע אם פעילויות תמיד מסתיימות עם העברתן לרקע. הרשאה זו לעולם אינה נחוצה ליישומים רגילים."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"שנה את הנתונים הסטטיסטיים של הסוללה"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"מאפשר ליישום לשנות נתונים סטטיסטיים שנאספו לגבי הסוללה. לא מיועד לשימוש על ידי יישומים רגילים."</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"מאפשר ליישום להפעיל את ממשק המשתמש לאישור גיבוי מלא. לא מיועד לשימוש על ידי אף יישום."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"הצג חלונות ללא הרשאה"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"הרשאה זו מאפשרת ליישום ליצור חלונות המיועדים לשימוש על ידי ממשק המשתמש של המערכת הפנימית. לא מיועד לשימוש ביישומים רגילים."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"הצג התראות ברמת המערכת"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ציור על יישומים אחרים"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"מאפשר ליישום להציג חלונות התראה של המערכת. יישומים זדוניים עלולים להשתלט על המסך כולו."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"שנה את מהירות ההנפשה הגלובלית"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"הרשאה זו מאפשרת ליישום לשנות את מהירות ההנפשה הכללית (הנפשות מהירות או איטיות יותר) בכל עת."</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"מאפשר ליישום להעניק או לבטל הרשאות ספציפיות ביחס לעצמו או ליישומים אחרים. יישומים זדוניים עלולים להשתמש באפשרות זו על מנת לקבל גישה לתכונות שלא אישרת להם."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"הגדרת יישומים מועדפים"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"מאפשר ליישום לשנות את היישומים המועדפים עליך. יישומים זדוניים עלולים לשנות בחשאי את היישומים שמופעלים, תוך שידול במרמה של היישומים הקיימים שלך לאסוף ממך נתונים פרטיים."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"שנה את הגדרות המערכת הכלליות"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"שינוי הגדרות מערכת"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"מאפשר ליישום לשנות את נתוני הגדרות המערכת. יישומים זדוניים עלולים לשבש את תצורת המערכת שלך."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"שנה את הגדרות המערכת המאובטחת"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"מאפשר ליישום לשנות את נתוני ההגדרות המאובטחים של המערכת. לא מיועד לשימוש על ידי יישומים רגילים."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"שנה את מפת השירותים של Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"מאפשר ליישום לשנות את מפת שירותי Google. לא מיועד לשימוש על ידי יישומים רגילים."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"הפעל אוטומטית בעת האתחול"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"הפעלה בעת אתחול"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"מאפשר ליישום להפעיל את עצמו מיד עם סיום תהליך האתחול של המערכת. משום כך הפעלת הטבלט עשויה להתארך והיישום עלול להאט את הפעילות הכללית של הטבלט, בשל פעילותו התמידית."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"מאפשר ליישום להפעיל את עצמו מיד עם השלמת תהליך האתחול של המערכת. משום כך הפעלת הטלפון עשויה להתארך והיישום עלול להאט את הפעילות הכללית של הטלפון, בשל פעילותו התמידית."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"שלח שידור דביק"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"מאפשר ליישום לשלוח שידורים דביקים, אשר נותרים לאחר סיום השידור. יישומים זדוניים עלולים להאט את פעילות הטבלט או להפוך אותה לבלתי יציבה על ידי הגדרת המכשיר לשימוש ביותר מדי זיכרון."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"מאפשר ליישום לשלוח שידורים דביקים, אשר נותרים לאחר סיום השידור. יישומים זדוניים עלולים להאט את פעילות הטלפון או להפוך אותה לבלתי יציבה על ידי הגדרת המכשיר לשימוש ביותר מדי זיכרון."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"קרא נתונים של אנשי קשר"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"כתוב נתונים של אנשי קשר"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"קריאת אנשי הקשר שלך"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"מאפשר ליישום לקרוא את כל נתוני אנשי הקשר שלך המאוחסנים בטאבלט, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ותכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי לשלוח את נתוני אנשי הקשר שלך לאנשים אחרים."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"מאפשר ליישום לקרוא את כל נתוני אנשי הקשר שלך המאוחסנים בטלפון, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ולתכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי לשלוח את נתוני אנשי הקשר שלך לאנשים אחרים."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"שינוי אנשי הקשר שלך"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"מאפשר ליישום לשנות את כל נתוני אנשי הקשר שלך המאוחסנים בטאבלט, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ותכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי למחוק או לשנות את נתוני אנשי הקשר שלך."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"מאפשר ליישום לשנות את כל נתוני אנשי הקשר שלך המאוחסנים בטלפון, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ותכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי למחוק או לשנות את נתוני אנשי הקשר שלך."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"קריאת יומן שיחות"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"מאפשר ליישום לקרוא את יומן השיחות של הטבלט, כולל נתונים על שיחות נכנסות ויוצאות. יישומים זדוניים עלולים לעשות בכך שימוש כדי לשלוח את הנתונים שלך לאנשים אחרים."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"מאפשר ליישום לקרוא את יומן השיחות של הטלפון, כולל נתונים על שיחות נכנסות ויוצאות. יישומים זדוניים עלולים לעשות בכך שימוש כדי לשלוח את הנתונים שלך לאנשים אחרים."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"כתיבת יומן שיחות"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"מאפשר ליישום לשנות את יומן השיחות של הטבלט, כולל נתונים על שיחות נכנסות ויוצאות. יישומים זדוניים עלולים לעשות בכך שימוש כדי למחוק או לשנות את יומן השיחות שלך."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"מאפשר ליישום לשנות את יומן השיחות של הטלפון, כולל נתונים על שיחות נכנסות ויוצאות. יישומים זדוניים עלולים לעשות בכך שימוש כדי למחוק או לשנות את יומן השיחות שלך."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"קרא את נתוני הפרופיל שלך"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"קריאת כרטיס איש הקשר שלך"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"מאפשר ליישום לקרוא נתונים בפרטי הפרופיל האישי המאוחסנים במכשיר, כגון שמך ופרטי הקשר שלך. משמעות הדבר שהיישום יוכל לזהות אותך ולשלוח את מידע הפרופיל שלך לאנשים אחרים."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"כתוב בנתוני הפרופיל שלך"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"שינוי כרטיס איש הקשר שלך"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"מאפשר ליישום לשנות או להוסיף נתונים בפרטי הפרופיל האישי המאוחסנים במכשיר, כגון שמך ופרטי הקשר שלך. משמעות הדבר שיישומים אחרים יוכלו לזהות אותך ולשלוח את מידע הפרופיל שלך לאנשים אחרים."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"קריאת הזרם החברתי שלך"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"מאפשר ליישום לגשת לעדכונים חברתיים ממך ומהחברים שלך ולסנכרן אותם. יישומים זדוניים עלולים להשתמש בכך כדי לקורא פעילויות תקשורת פרטיות שהתקיימו בינך לבין חבריך ברשתות חברתיות."</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"אלץ אתחול מחדש של הטלפון"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"מאפשר ליישום לאלץ את הטבלט לבצע אתחול."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"מאפשר ליישום לאלץ את הטלפון לבצע אתחול."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"טעינה וביטול טעינה של מערכות קבצים"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"גישה למערכת הקבצים של אחסון USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"גישה למערכת הקבצים של כרטיס SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"מאפשר ליישום לטעון ולבטל טעינה של מערכות קבצים באמצעי אחסון נשלפים."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"פרמט אמצעי אחסון חיצוני"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"מחיקת אחסון USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"מחיקת כרטיס SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"מאפשר ליישום לפרמט אמצעי אחסון נשלפים."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"קבל מידע על אחסון פנימי"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"מאפשר ליישום לקבל מידע על אמצעי האחסון הפנימי."</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"מאפשר ליישום לטעון/לבטל טעינה של אמצעי אחסון פנימי."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"שנה שם של אחסון פנימי"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"מאפשר ליישום לשנות שם של אמצעי אחסון פנימי."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"שלוט ברטט"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"שליטה ברטט"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"מאפשר ליישום לשלוט ברטט."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"שליטה בפנס"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"מאפשר ליישום לשלוט בפנס."</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"מאפשר ליישום ליידע את המערכת באילו פריטי Widget יכול להשתמש כל יישום. יישום בעל הרשאה זו יכול לספק ליישומים אחרים גישה לנתונים אישיים. לא מיועד לשימוש על ידי יישומים רגילים."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"שנה את מצב הטלפון"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"מאפשר ליישום לשלוט בתכונות הטלפון של המכשיר. יישום בעל הרשאה זו יכול לעבור בין רשתות, להפעיל ולכבות את הרדיו בטלפון ולבצע פעולות נוספות דומות מבלי ליידע אותך."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"קרא את המצב והזיהוי של הטלפון"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"קריאת הסטטוס והזהות של הטלפון"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"מאפשר ליישום לגשת לתכונות הטלפון של המכשיר. יישום בעל הרשאה זו יכול לזהות את מספר הטלפון והמספר הסידורי של המכשיר, אם יש שיחה פעילה, את המספר שאליו השיחה מחוברת וכיוצא בזה."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"מנע מהטבלט לעבור למצב שינה"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"מניעת מעבר הטלפון למצב שינה"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"הפעל כבדיקת יצרן ברמה נמוכה, המאפשרת גישה מלאה לחומרת הטלפון. זמינה רק כאשר טלפון פועל במצב בדיקת יצרן."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"הגדר טפט"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"מאפשר ליישום להגדיר את טפט המערכת."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"הגדר רמזים לגודל הטפט"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"התאמת גודל הטפט שלך"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"מאפשר ליישום להגדיר את סמני הגודל של טפט המערכת."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"אפס את המערכת לברירות המחדל של היצרן"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"מאפשר ליישום לאפס את המערכת באופן מלא להגדרות היצרן, תוך מחיקה של כל הנתונים, התצורה והיישומים שהותקנו."</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"מאפשר ליישום לשנות את אזור הזמן של הטלפון."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"פעל בתור ה-AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"הרשאה זו מאפשרת ליישום לבצע שיחות אל AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"גלה חשבונות ידועים"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"חיפוש חשבונות במכשיר"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"מאפשר ליישום לקבל את רשימת החשבונות המוכרים לטבלט."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"מאפשר ליישום לקבל את רשימת החשבונות המוכרים לטלפון."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"פעל כמאמת חשבון"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"יצירת חשבונות והגדרת סיסמאות"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"מאפשר ליישום להשתמש ביכולות מאמת החשבונות של מנהל החשבון, כולל יצירת חשבונות וקבלה והגדרה של הסיסמאות שלהם."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"נהל את רשימת החשבונות"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"הוספה או הסרה של חשבונות"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"מאפשר ליישום לבצע פעולות כגון הוספה והסרה של חשבונות ומחיקת הסיסמה שלהם."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"השתמש באישורי האימות של חשבון"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"שימוש בחשבונות שבמכשיר"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"מאפשר ליישום לבקש אסימוני אימות."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"הצג מצב רשת"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"הצג חיבורי רשת"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"מאפשר ליישום להציג את המצב של כל הרשתות."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"גישה מלאה לאינטרנט"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"מאפשר ליישום ליצור שקעי רשת."</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"מאפשר ליישום לשנות את מצב הקישוריות של רשת קשורה."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"שנה את הגדרות השימוש בנתוני הרקע"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"מאפשר ליישום לשנות את הגדרת השימוש בנתוני רקע."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"הצג מצב Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"הצג חיבורי Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"מאפשר ליישום להציג את המידע על מצב רשת ה-Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"שנה מצב Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"התחברות והתנתקות מ-Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"מאפשר ליישום להתחבר לנקודות גישה מסוג Wi-Fi ולהתנתק מהן, וכן לבצע שינויים ברשתות Wi-Fi מוגדרות."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"אפשר קבלת שידורים מרובים ב-Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"מאפשר ליישום לקבל מנות שלא מוענו ישירות למכשיר שלך. יכולת זו שימושית בעת גילוי שירותים המוצעים בקרבת מקום. היא צורכת יותר חשמל לעומת המצב שאינו כולל ריבוי שידורים."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"ניהול Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"גישה להגדרות Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"מאפשר ליישום להגדיר את תצורתו של הטבלט המקומי מסוג Bluetooth וכן לגלות מכשירים מרוחקים ולבצע התאמה איתם."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"מאפשר ליישום להגדיר את תצורתו של הטלפון המקומי מסוג Bluetooth וכן לגלות מכשירים מרוחקים ולבצע התאמה איתם."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"הצג את מצב WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"הצג חיבורי WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"הרשאה זו מאפשרת ליישום להציג את המידע על מצב ה-WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"שנה את מצב WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"הרשאה זו מאפשרת ליישום להתחבר לרשת ה-WiMAX ולהתנתק ממנה."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"צור חיבורי Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"התאמה למכשירי Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"מאפשר ליישום להציג את התצורה של הטבלט המקומי מסוג Bluetooth וכן ליצור ולקבל חיבורים עם מכשירים מותאמים."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"מאפשר ליישום להציג את התצורה של טלפון Bluetooth המקומי, וליצור ולקבל חיבורים עם מכשירים מותאמים."</string> <string name="permlab_nfc" msgid="4423351274757876953">"שלוט ב-Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"מאפשר ליישום נהל תקשורת עם תגים, כרטיסים וקוראים מסוג \'תקשורת מטווח קצר\'."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"השבת נעילת מקשים"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ביטול נעילת המסך שלך"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"מאפשר ליישום להשבית את נעילת המקשים וכל אמצעי אבטחה באמצעות סיסמה משויך. דוגמה טובה לכך היא טלפון שמשבית את נעילת המקשים בעת קבלה של שיחת טלפון נכנסת, ולאחר מכן מפעיל מחדש את נעילת המקשים עם סיום השיחה."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"קרא את הגדרות הסינכרון"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"מאפשר ליישום לקרוא את הגדרות הסנכרון, למשל אם מופעל סנכרון עבור היישום \'אנשים\'."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"כתוב הגדרות סינכרון"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"הפעלת וכיבוי סנכרון"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"מאפשר ליישום לשנות את הגדרות הסנכרון, למשל אם מופעל סנכרון עבור היישום \'אנשים\'."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"קרא את הנתונים הסטטיסטיים של הסינכרון"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"מאפשר ליישום לקרוא את הנתונים הסטטיסטיים לגבי סינכרון; למשל, את ההיסטוריה של סינכרונים שבוצעו."</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"מאפשר ליישום לקבל פרטים על ההזנות הנוכחיות שמסונכרנות."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"כתוב עדכונים מנויים"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"מאפשר ליישום לשנות את ההזנות הנוכחיות שלך שמסונכרנות. יישומים זדוניים עלולים לשמות את ההזנות המסונכרנות שלך."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"קריאה במילון בהגדרת המשתמש"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"קריאת מונחים שהוספת למילון"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"מאפשר ליישום לקרוא מילים, שמות וביטויים פרטיים שהמשתמש אחסן במילון המשתמש."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"כתיבה למילון בהגדרת המשתמש"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"מאפשר ליישום לכתוב מילים חדשות במילון המשתמש."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"קריאת תוכן אחסון USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"קריאת תוכן כרטיס SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"מאפשר ליישום לקרוא את התוכן של אחסון USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"מאפשר ליישום לקרוא את התוכן של כרטיס SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"שנה/מחק תוכן באמצעי אחסון מסוג USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"שנה/מחק תוכן של כרטיס SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"קריאת התוכן של אחסון ה-USB שלך"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"קריאת התוכן של כרטיס ה-SD שלך"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"הרשאה זו מאפשרת ליישום לקרוא את התוכן של אחסון USB, העשוי לכלול תמונות ומדיה."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"הרשאה זו מאפשרת ליישום לקרוא תוכן של כרטיס SD, העשוי לכלול תמונות ומדיה."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"שינוי או מחיקה של תוכן אחסון ה-USB שלך"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"שינוי או מחיקה של תוכן כרטיס ה-SD שלך"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"מאפשר ליישום לכתוב להתקן האחסון מסוג USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"מאפשר ליישום לכתוב לכרטיס ה-SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"שנה/מחק תוכן של אחסון מדיה פנימי"</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"אין כרטיס SIM בטלפון."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"הכנס כרטיס SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"כרטיס ה-SIM חסר או שלא ניתן לקרוא אותו. הכנס כרטיס SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"כרטיס ה-SIM שלך הושבת לצמיתות."\n"פנה לספק השירות האלחוטי שלך לקבלת כרטיס SIM אחר."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"לחצן הרצועה הקודמת"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"לחצן הרצועה הבאה"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"קהילה"</string> <string name="autofill_area" msgid="3547409050889952423">"אזור"</string> <string name="autofill_emirate" msgid="2893880978835698818">"אמירות"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"קרא את ההיסטוריה והסימניות של הדפדפן"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"קריאת סימניות והיסטוריית האינטרנט שלך"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"מאפשר ליישום לקרוא את כל כתובות האתרים שהדפדפן ביקר בהן, ואת כל סימניות הדפדפן."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"כתוב את ההיסטוריה והסימניות של הדפדפן"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"כתיבת סימניות והיסטוריית אינטרנט"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"מאפשר ליישום לשנות את ההיסטוריה או הסימניות של הדפדפן, המאוחסנות בטבלט שלך. יישומים זדוניים עלולים להשתמש בכך כדי למחוק או לשנות את נתוני הדפדפן שלך."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"מאפשר ליישום לשנות את ההיסטוריה או הסימניות של הדפדפן, המאוחסנות בטלפון שלך. יישומים זדוניים עלולים להשתמש בכך כדי למחוק או לשנות את נתוני הדפדפן שלך."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"הגדר צלצול בשעון המעורר"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"הגדרת התראה"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"מאפשר ליישום להגדיר התראה ביישום שעון מעורר מותקן. יישומי שעון מעורר מסוימים אינם מיישמים תכונה זו."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"הוסף דואר קולי"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"מאפשר ליישום להוסיף הודעות לתיבת הדואר הקולי."</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"הגדר"</string> <string name="date_time_done" msgid="2507683751759308828">"בוצע"</string> <string name="default_permission_group" msgid="2690160991405646128">"ברירת מחדל"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"חדש: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"חדש: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"לא דרושים אישורים"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"הסתר"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"הצג הכל"</b></string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 07a163d68cc1..2c87d0587be2 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"タブレットの電源をOFFにします。"</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"携帯電話の電源を切ります。"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"シャットダウンしますか?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"再起動してセーフモードに変更"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"再起動してセーフモードにしますか?セーフモードでは、インストールしたすべてのサードパーティ製アプリが無効になります。これらのアプリはもう一度再起動すると復元されます。"</string> <string name="recent_tasks_title" msgid="3691764623638127888">"新着"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"最近使ったアプリはありません。"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"タブレットオプション"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"送受信したメッセージ"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS、メールなどのメッセージを読み書きします。"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"個人情報"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"タブレットの連絡先とカレンダーに直接アクセス"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"端末の連絡先とカレンダーに直接アクセス"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"現在地"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"現在地を追跡します。"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"ネットワーク通信"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"さまざまなネットワーク機能にアクセスします。"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"アカウント"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"利用可能なアカウントにアクセスします。"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"ハードウェアの制御"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"システムの低レベルのアクセスと制御"</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"開発ツール"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"アプリのデベロッパーにのみ必要な機能です。"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"ストレージ"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USBストレージへのアクセス"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SDカードにアクセスします。"</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"ステータスバーへの表示をアプリに許可します。"</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ステータスバーの拡大/縮小"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"ステータスバーの展開/折りたたみをアプリに許可します。"</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"発信の傍受"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"発信先の変更"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"通話発信とダイヤル番号の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、発信が監視、転送、阻止される恐れがあります。"</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMSの受信"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"テキストメッセージ(SMS)の受信"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"SMSメッセージの受信と処理をアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが監視されたり、表示されずに削除されたりする恐れがあります。"</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMSの受信"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"テキストメッセージ(MMS)の受信"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"MMSメッセージの受信と処理をアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが監視されたり、表示されずに削除されたりする恐れがあります。"</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"緊急放送の受信"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"緊急ブロードキャストメッセージの受信と処理をアプリに許可します。これはシステムアプリのみが利用できる権限です。"</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"SMSメッセージの送信をアプリに許可します。この許可を悪意のあるアプリに利用されると、ユーザーの確認なしでメッセージが送信され、料金が発生する恐れがあります。"</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"確認せずにSMSメッセージを送信する"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"SMSメッセージの送信をアプリに許可します。この許可を悪意のあるアプリに利用されると、ユーザーの確認なしでメッセージが送信され、料金が発生する恐れがあります。"</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMSの読み取り"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"テキストメッセージ(SMSまたはMMS)の読み取り"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"タブレットやSIMカードに保存されているSMSメッセージの読み取りをアプリに許可します。この許可を悪意のあるアプリに利用されると、機密メッセージが読み取られる恐れがあります。"</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"携帯端末やSIMカードに保存されているSMSメッセージの読み取りをアプリに許可します。この許可を悪意のあるアプリに利用されると、機密メッセージが読み取られる恐れがあります。"</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMSの編集"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"テキストメッセージ(SMSまたはMMS)の編集"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"タブレットやSIMカードに保存されているSMSメッセージへの書き込みをアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが削除される恐れがあります。"</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"携帯端末やSIMカードに保存されているSMSメッセージへの書き込みをアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが削除される恐れがあります。"</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAPの受信"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"テキストメッセージ(WAP)の受信"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"WAPメッセージの受信と処理をアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが監視されたり、表示されずに削除されたりする恐れがあります。"</string> <string name="permlab_getTasks" msgid="6466095396623933906">"実行中のアプリの取得"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"現在実行中または最近実行したタスクに関する情報の取得をアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリに関する非公開情報が発見される恐れがあります。"</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"実行中のアプリの詳細の取得"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"現在実行中のタスクまたは最近実行したタスクに関する情報の取得をアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリに関する非公開情報が読み取られる恐れがあります。"</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"実行中のアプリの順序変更"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"タスクをフォアグラウンドやバックグラウンドに移動することをアプリに許可します。この許可を悪意のあるアプリに利用されると、悪意のあるアプリが強制的に優先される恐れがあります。"</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"実行中のアプリの停止"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"他のアプリの画面互換性モードをコントロールすることをアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリの動作が中断される恐れがあります。"</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"アプリのデバッグの有効化"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"別のアプリをデバッグモードにすることをアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリが強制終了される恐れがあります。"</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"UI設定の変更"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"システムの表示設定の変更"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"地域/言語や全体のフォントサイズなど、現在の設定の変更をアプリに許可します。"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"運転モードの有効化"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"運転モードを有効にすることをアプリに許可します。"</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"バックグラウンドプロセスの終了"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"他のアプリの終了"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"メモリが不足していなくても他のアプリのバックグラウンドプロセスを強制終了することをアプリに許可します。"</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"他のアプリの強制停止"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"他のアプリの強制停止をアプリに許可します。"</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"WAP PUSHメッセージの受信通知を配信することをアプリに許可します。この許可を悪意のあるアプリに利用されると、MMSメッセージの受信確認が偽造されたりウェブページのコンテンツが悪意のあるコンテンツに密かに置き換えられたりする恐れがあります。"</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"実行中のプロセスの数を制限"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"実行するプロセスの上限数を制御することをアプリに許可します。通常のアプリでは不要です。"</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"すべてのバックグラウンドアプリの終了"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"バックグラウンドのアプリの強制終了"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"バックグラウンドになりしだい操作を常に終了するかどうかの制御をアプリに許可します。通常のアプリでは不要です。"</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"電池統計情報の変更"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"電池に関して収集した統計情報の変更をアプリに許可します。通常のアプリでは使用しません。"</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"フルバックアップの確認UIを表示することをアプリに許可します。どのアプリでも使用しません。"</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"未許可のウィンドウの表示"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"内部システムのユーザーインターフェースで使用するためのウィンドウを作成することをアプリに許可します。通常のアプリでは使用しません。"</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"システムレベルの警告の表示"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"他のアプリの上に重ねて表示"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"システムの警告ウィンドウの表示をアプリに許可します。この許可を悪意のあるアプリに利用されると、画面全体が乗っ取られる恐れがあります。"</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"アニメーションのプリセット速度の変更"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"いつでもアニメーション全般の速度を変更する(速くする、または遅くする)ことをアプリに許可します。"</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"このアプリケーションや他のアプリケーションに対して特定の権限を許可したり取り消したりすることをアプリケーションに許可します。悪意のあるアプリケーションがユーザーの許可なく複数の機能にアクセスする恐れがあります。"</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"優先アプリの設定"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"優先アプリを変更することをアプリに許可します。この許可を悪意のあるアプリに利用されると、実行中のアプリが密かに変更され、既存のアプリへのなりすましにより非公開データがだまし取られる恐れがあります。"</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"システムの全般設定の変更"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"システム設定の変更"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"システムの設定データの変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、システムの設定が破損する恐れがあります。"</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"システムのセキュリティ設定の変更"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"システムのセキュリティ設定データの変更をアプリに許可します。通常のアプリでは使用しません。"</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Googleサービスの地図の変更"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Googleサービスの地図の変更をアプリに許可します。通常のアプリでは使用しません。"</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"起動時に自動的に開始"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"起動時の実行"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"システムの起動後に自動的に起動することをアプリに許可します。許可すると、タブレットの起動時間が長くなったり、アプリが常に実行されるためにタブレット全体の動作が遅くなったりする可能性があります。"</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"システムの起動後に自動的に起動することをアプリに許可します。許可すると、携帯端末の起動時間が長くなったり、アプリが常に実行されるために携帯端末全体の動作が遅くなったりする可能性があります。"</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"stickyブロードキャストの配信"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"配信が終了してもメモリに残るstickyブロードキャストの配信をアプリに許可します。この許可を悪意のあるアプリに利用されると、メモリの使用量が増えてタブレットの動作が遅くなったり不安定になったりする恐れがあります。"</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"配信が終了してもメモリに残るstickyブロードキャストの配信をアプリに許可します。この許可を悪意のあるアプリに利用されると、メモリの使用量が増えて携帯端末の動作が遅くなったり不安定になったりする恐れがあります。"</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"連絡先データの読み取り"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"連絡先データの書き込み"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"連絡先の読み取り"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"タブレットに保存されている連絡先についてすべてのデータを読み取ることをアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを第三者に送信する可能性があります。"</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"携帯端末に保存されている連絡先についてすべてのデータを読み取ることをアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを第三者に送信する可能性があります。"</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"連絡先の変更"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"タブレットに保存されている連絡先についてデータの変更をアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを消去または改ざんする可能性があります。"</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"携帯端末に保存されている連絡先についてデータの変更をアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを消去または改ざんする可能性があります。"</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"通話履歴の読み取り"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"タブレットの通話履歴(着信や発信のデータなど)の読み取りをアプリに許可します。この許可を悪意のあるアプリに利用されると、データが他のユーザーに送信される恐れがあります。"</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"携帯端末の通話履歴(着信や発信のデータなど)の読み取りをアプリに許可します。この許可を悪意のあるアプリに利用されると、データが他のユーザーに送信される恐れがあります。"</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"通話履歴の書き込み"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"タブレットの通話履歴(着信や発信のデータなど)の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、通話履歴が消去または変更される恐れがあります。"</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"携帯端末の通話履歴(着信や発信のデータなど)の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、通話履歴が消去または変更される恐れがあります。"</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"プロフィールデータの読み取り"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"自分の連絡先カードの読み取り"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"端末に保存されている個人のプロフィール情報(名前、連絡先情報など)を読み取ることをアプリに許可します。許可すると、アプリではユーザーの身元を特定したりプロフィール情報を第三者に転送したりできるようになります。"</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"プロフィールデータに書き込む"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"自分の連絡先カードの変更"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"端末に保存されている個人のプロフィール情報(名前、連絡先情報など)を変更または追加することをアプリに許可します。許可すると、他のアプリではユーザーの身元を特定したりプロフィール情報を第三者に転送したりできるようになります。"</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ソーシャルストリームを読む"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"あなたや友だちのソーシャル更新情報にアクセスして同期することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ソーシャルネットワーク上で交わされるあなたと友だちの個人的なやり取りが読み取られる恐れがあります。"</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"端末の再起動"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"タブレットの強制的な再起動をアプリに許可します。"</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"携帯端末の強制的な再起動をアプリに許可します。"</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"ファイルシステムのマウントとマウント解除"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USBストレージのファイルシステムへのアクセス"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SDカードのファイルシステムへのアクセス"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"リムーバブルストレージのファイルシステムのマウント/マウント解除をアプリに許可します。"</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"外部ストレージのフォーマット"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USBストレージ内データの消去"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SDカード内データの消去"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"リムーバブルストレージのフォーマットをアプリに許可します。"</string> <string name="permlab_asec_access" msgid="3411338632002193846">"内部ストレージ上の情報の取得"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"内部ストレージ上の情報の取得をアプリに許可します。"</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"内部ストレージのマウント/マウント解除をアプリに許可します。"</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"内部ストレージ名の変更"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"内部ストレージ名の変更をアプリに許可します。"</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"バイブレーション制御"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"バイブレーションの制御"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"バイブレーションの制御をアプリに許可します。"</string> <string name="permlab_flashlight" msgid="2155920810121984215">"ライトのコントロール"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"ライトの制御をアプリに許可します。"</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"どのアプリケーションがどのウィジェットを使用できるかシステムに指定することをアプリに許可します。許可すると、アプリでは他のアプリに個人データへのアクセスを付与できるようになります。通常のアプリでは使用しません。"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"端末ステータスの変更"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"端末の電話機能の制御をアプリに許可します。許可すると、アプリではユーザーに通知なくネットワークの切り替え、無線通信のON/OFFなどを行えるようになります。"</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"携帯のステータスとIDの読み取り"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"端末のステータスとIDの読み取り"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"端末の電話機能へのアクセスをアプリに許可します。許可すると、アプリではこの端末の電話番号やシリアル番号、通話中かどうか、通話相手の電話番号などを特定できるようになります。"</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"タブレットのスリープを無効化"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"端末のスリープを無効にする"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"携帯電話のハードウェアへのアクセスを完全に許可して、低レベルのメーカーテストとして実行します。メーカーのテストモードで携帯電話を使用するときのみ利用できます。"</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"壁紙の設定"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"システムの壁紙を設定することをアプリに許可します。"</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"壁紙サイズのヒントの設定"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"壁紙のサイズの調整"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"システムの壁紙サイズのヒントを設定することをアプリに許可します。"</string> <string name="permlab_masterClear" msgid="2315750423139697397">"システムを出荷時設定にリセット"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"データ、設定、インストールアプリをすべて消去して、出荷時の設定にシステムを完全にリセットすることをアプリに許可します。"</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"携帯端末のタイムゾーンの変更をアプリに許可します。"</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerServiceとして機能"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"AccountAuthenticatorsの呼び出しをアプリに許可します。"</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"既知のアカウントの取得"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"この端末上のアカウントの検索"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"タブレットの認識済みアカウントのリストを取得することをアプリに許可します。"</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"携帯端末の認識済みアカウントのリストを取得することをアプリに許可します。"</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"アカウント認証システムとして機能"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"アカウントの作成とパスワードの設定"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"アカウントの作成、パスワードの取得や設定など、AccountManagerのアカウント認証機能を使用することをアプリに許可します。"</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"アカウントリストを管理"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"アカウントの追加と削除"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"アカウントの追加や削除、パスワードの削除などの操作の実行をアプリに許可します。"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"アカウントの認証情報を使用"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"この端末上のアカウントの使用"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"認証トークンのリクエストをアプリに許可します。"</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ネットワーク状態の表示"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ネットワーク接続の表示"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"すべてのネットワーク状態の表示をアプリに許可します。"</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"完全なインターネットアクセス"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"ネットワークソケットの作成をアプリに許可します。"</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"ネットワークのテザリング接続状態の変更をアプリに許可します。"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"バックグラウンドデータ使用設定の変更"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"バックグラウンドデータの使用設定の変更をアプリに許可します。"</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Wi-Fi状態の表示"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi接続の表示"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Wi-Fiの状態に関する情報の表示をアプリに許可します。"</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Wi-Fi状態の変更"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fiからの接続と切断"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Wi-Fiアクセスポイントへの接続/切断、設定されたWi-Fiネットワークの変更をアプリに許可します。"</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fiマルチキャストの受信を許可する"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"端末を直接の宛先とはしていないパケットの受信をアプリに許可します。近隣で提供中のサービスを検出したい場合に便利です。マルチキャスト以外のモードに比べて電力を消費します。"</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetoothの管理"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetoothの設定へのアクセス"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ローカルのBluetoothタブレットを設定することと、リモート端末を検出してペアに設定することをアプリに許可します。"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"ローカルのBluetooth携帯端末を設定することと、リモート端末を検出してペアに設定することをアプリに許可します。"</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX状態の表示"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX接続の表示"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"WiMAXの状態に関する情報の表示をアプリに許可します。"</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX状態の変更"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"WiMAXネットワークへの接続と接続解除をアプリに許可します。"</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth接続の作成"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetoothデバイスのペアの設定"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"ローカルのBluetoothタブレットの設定を表示することと、ペアの端末に接続すること/ペアの端末からの接続を受け入れることをアプリに許可します。"</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"ローカルのBluetooth携帯端末の設定を表示することと、ペアの端末に接続すること/ペアの端末からの接続を受け入れることをアプリに許可します。"</string> <string name="permlab_nfc" msgid="4423351274757876953">"NFCの管理"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"NFCタグ、カード、リーダーとの通信をアプリに許可します。"</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"キーロックを無効にする"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"画面ロックの無効化"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"キーロックとキーロックに関連付けられたパスワードのセキュリティを無効にすることをアプリに許可します。この許可の正当な使用例としては、かかってきた電話を受ける際にキーロックを無効にし、通話が終了したらキーロックを再度有効にするというケースが挙げられます。"</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"同期設定の読み取り"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Peopleアプリの同期の有効/無効など、同期設定の読み取りをアプリに許可します。"</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"同期設定の書き込み"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"同期のON/OFFの切り替え"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Peopleアプリの同期の有効/無効など、同期設定の変更をアプリに許可します。"</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"同期統計の読み取り"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"同期に関する統計情報(同期履歴など)の読み取りをアプリに許可します。"</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"現在同期されているフィードの詳細を取得することをアプリに許可します。"</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"登録したフィードの書き込み"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"現在同期されているフィードの変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、同期されたフィードが変更される恐れがあります。"</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"単語リストの読み取り"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"辞書に追加された語句の読み取り"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"ユーザーが単語リストに個人情報として登録した可能性のある語句や名前を読み込むことをアプリに許可します。"</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"単語リストへの書き込み"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"単語リストに新しい語句を書き込むことをアプリに許可します。"</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USBストレージの読み取り"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SDカードのコンテンツの読み取り"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"USBストレージの読み取りをアプリに許可します。"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"SDカードのコンテンツの読み取りをアプリに許可します。"</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USBストレージのコンテンツの変更/削除"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SDカードのコンテンツを修正/削除する"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USBストレージの読み取り"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SDカードのコンテンツの読み取り"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"USBストレージ(写真やメディアなど)の読み取りをアプリに許可します。"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"SDカードのコンテンツ(写真やメディアなど)の読み取りをアプリに許可します。"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USBストレージのコンテンツの変更または削除"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"SDカードのコンテンツの変更または削除"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USBストレージへの書き込みをアプリに許可します。"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"SDカードへの書き込みをアプリに許可します。"</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"内部メディアストレージの内容の変更/削除"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"SIMカードが挿入されていません"</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIMカードを挿入してください。"</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIMカードが見つからないか読み取れません。SIMカードを挿入してください。"</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"お使いのSIMカードは永久に無効となっています。"\n"ワイヤレスサービスプロバイダに問い合わせて新しいSIMカードを入手してください。"</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"前のトラックボタン"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"次のトラックボタン"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"文字"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"単語"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"リンク"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"行"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"出荷時試験が失敗"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"教区"</string> <string name="autofill_area" msgid="3547409050889952423">"地域"</string> <string name="autofill_emirate" msgid="2893880978835698818">"首長国"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ブラウザの履歴とブックマークを読み取る"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ウェブのブックマークと履歴の読み取り"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"ブラウザでアクセスしたすべてのURLとブラウザのすべてのブックマークを読み取ることをアプリに許可します。"</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"ブラウザの履歴とブックマークを書き込む"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"ウェブのブックマークと履歴の書き込み"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"タブレットに保存されているブラウザの履歴やブックマークを変更することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ブラウザのデータが消去または変更される恐れがあります。"</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"携帯端末に保存されているブラウザの履歴やブックマークを変更することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ブラウザのデータが消去または変更される恐れがあります。"</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"アラームの設定"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"アラームの設定"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"インストール済みアラームアプリのアラームを設定することをアプリに許可します。この機能が実装されていないアラームアプリもあります。"</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"ボイスメールの追加"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ボイスメール受信トレイにメッセージを追加することをアプリに許可します。"</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"設定"</string> <string name="date_time_done" msgid="2507683751759308828">"完了"</string> <string name="default_permission_group" msgid="2690160991405646128">"端末既定"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NEW: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NEW: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"権限の許可は必要ありません"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"隠す"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"すべて表示"</b></string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 1bbff037a7c1..12a44fef8b78 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"태블릿이 종료됩니다."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"휴대전화가 종료됩니다."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"종료하시겠습니까?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"안전 모드로 다시 부팅"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"안전 모드로 다시 부팅하시겠습니까? 그러면 설치한 모든 제3자 애플리케이션을 사용할 수 없게 됩니다. 다시 부팅을 반복하면 애플리케이션이 복원됩니다."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"최근 사용한 앱"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"최근에 사용한 앱이 없습니다."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"태블릿 옵션"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"메시지"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS, 이메일 및 기타 메시지를 읽고 씁니다."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"개인정보"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"태블릿에 저장된 주소록 및 캘린더에 직접 액세스합니다."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"휴대전화에 저장된 주소록 및 캘린더에 직접 액세스합니다."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"위치"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"실제 위치 모니터링"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"네트워크 통신"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"다양한 네트워크 기능에 액세스할 수 있도록 합니다."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"계정"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"사용 가능한 계정에 액세스합니다."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"하드웨어 제어"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"시스템을 하위 수준에서 액세스하고 제어합니다."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"개발 도구"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"앱 개발자에게만 필요한 기능입니다."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"저장"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB 저장소에 액세스합니다."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD 카드에 액세스합니다."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"앱이 상태 표시줄이 되도록 허용합니다."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"상태 표시줄 확장/축소"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"앱이 상태 표시줄을 확장하거나 축소할 수 있도록 허용합니다."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"발신전화 차단"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"발신전화 경로 전환"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"앱이 발신전화를 처리하고 전화를 걸 번호를 변경할 수 있도록 허용합니다. 이 경우 악성 앱이 발신전화를 모니터링하거나, 리디렉션하거나, 차단할 수도 있습니다."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS 수신"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"문자 메시지 받기(SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"앱이 SMS 메시지를 받고 처리할 수 있도록 허용합니다. 이 경우 악성 앱이 메시지를 모니터링하거나 사용자가 보기 전에 삭제할 수 있습니다."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS 수신"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"문자 메시지 받기(MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"앱이 MMS 메시지를 받고 처리할 수 있도록 허용합니다. 이 경우 악성 앱이 메시지를 모니터링하거나 사용자가 보기 전에 삭제할 수 있습니다."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"긴급 방송 수신"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"앱이 긴급 브로드캐스트 메시지를 수신하고 처리할 수 있도록 허용합니다. 이 권한은 시스템 앱에만 사용할 수 있습니다."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"앱이 SMS 메시지를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송하여 요금이 부과될 수 있습니다."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"확인 없이 SMS 메시지 보내기"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"앱이 SMS 메시지를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송하여 요금이 부과될 수 있습니다."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS 또는 MMS 읽기"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"내 문자 메시지 읽기(SMS 또는 MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"앱이 태블릿 또는 SIM 카드에 저장된 SMS 메시지를 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 기밀 메시지를 읽을 수 있습니다."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"앱이 휴대전화 또는 SIM 카드에 저장된 SMS 메시지를 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 기밀 메시지를 읽을 수 있습니다."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS 또는 MMS 편집"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"내 문자 메시지 수정(SMS 또는 MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"앱이 태블릿 또는 SIM 카드에 저장된 SMS 메시지에 쓸 수 있도록 허용합니다. 이 경우 악성 앱이 이 기능을 이용하여 메시지를 삭제할 수 있습니다."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"앱이 휴대전화 또는 SIM 카드에 저장된 SMS 메시지에 쓸 수 있도록 허용합니다. 이 경우 악성 앱이 이 기능을 이용하여 메시지를 삭제할 수 있습니다."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP 수신"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"문자 메시지 받기(WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"앱이 WAP 메시지를 받고 처리할 수 있도록 허용합니다. 이 경우 악성 앱이 메시지를 모니터링하거나 사용자가 보기 전에 삭제할 수 있습니다."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"실행 중인 앱 검색"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"앱이 현재 실행 중이거나 최근에 실행된 작업에 대한 정보를 검색할 수 있도록 허용합니다. 이 경우 악성 앱이 다른 앱에 대한 개인 정보를 검색할 수 있습니다."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"실행 중인 앱 세부정보 검색"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"앱이 현재 실행 중이거나 최근에 실행된 작업에 대한 상세한 정보를 검색할 수 있도록 허용합니다. 이 경우 악성 앱이 다른 앱에 대한 개인 정보를 검색할 수 있습니다."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"실행 중인 앱 순서 재지정"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"앱이 작업을 포그라운드나 백그라운드로 이동할 수 있도록 허용합니다. 이 경우 악성 앱이 사용자의 조작 없이 앞으로 이동할 수 있습니다."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"실행 중인 앱 중지"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"앱이 다른 애플리케이션의 화면 호환성 모드를 제어할 수 있도록 허용합니다. 이 경우 악성 애플리케이션이 다른 애플리케이션의 동작을 멈추게 할 수 있습니다."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"앱 디버깅 사용"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"애플리케이션이 다른 애플리케이션에 대해 디버깅을 사용할 수 있도록 허용합니다. 이 경우 악성 애플리케이션이 다른 애플리케이션을 중지시킬 수 있습니다."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"UI 설정 변경"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"시스템 표시 설정 변경"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"애플리케이션이 언어 또는 전체 글꼴 크기와 같은 현재 구성을 변경할 수 있도록 허용합니다."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"운전모드 사용"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"앱이 운전모드를 사용할 수 있도록 허용합니다."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"백그라운드 프로세스 종료"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"다른 앱 종료"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"메모리가 부족하지 않은 경우에도 앱이 다른 앱의 백그라운드 프로세스를 중단할 수 있도록 허용합니다."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"다른 앱 강제 종료"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"앱이 다른 앱을 강제로 종료할 수 있도록 허용합니다."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"앱이 WAP PUSH 메시지를 받았다는 알림을 브로드캐스트할 수 있도록 허용합니다. 이 경우 악성 앱이 MMS 메시지를 받은 것처럼 위장하거나 웹페이지의 콘텐츠를 악성 콘텐츠로 몰래 바꿀 수 있습니다."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"실행 중인 프로세스 수 제한"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"앱이 실행할 최대 프로세스 수를 제어할 수 있도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"모든 백그라운드 앱 닫기"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"백그라운드 앱 강제 종료"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"앱이 백그라운드로 이동한 활동을 항상 바로 종료할지 여부를 제어할 수 있도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"배터리 통계 수정"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"앱이 수집된 배터리 통계를 수정할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"앱이 전체 백업 확인 UI를 실행하도록 허용합니다. 다른 앱에는 사용할 수 없습니다."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"인증되지 않은 창 표시"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"애플리케이션이 내부 시스템 사용자 인터페이스에서 사용하는 창을 만들 수 있도록 허용합니다. 일반 애플리케이션에서는 사용하지 않습니다."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"시스템 수준 경고 표시"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"다른 앱 위에 그리기"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"앱이 시스템 경고 창을 표시할 수 있도록 허용합니다. 이 경우 악성 앱이 화면 전체를 차지할 수 있습니다."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"전체 애니메이션 속도 수정"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"애플리케이션이 언제든지 전체 애니메이션 속도를 빠르게 또는 느리게 변경할 수 있도록 허용합니다."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"애플리케이션이 해당 애플리케이션 및 기타 애플리케이션에 대한 특정 권한을 승인 또는 취소하도록 허용합니다. 이 경우 악성 애플리케이션이 승인되지 않은 기능에 액세스할 수 있습니다."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"기본 앱 설정"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"앱이 기본 앱을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 실행되는 앱을 몰래 변경하고 기존 앱으로 위장하여 사용자의 개인 정보를 수집할 수 있습니다."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"전체 시스템 설정 수정"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"시스템 설정 수정"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"앱이 시스템의 설정 데이터를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 시스템 구성을 손상시킬 수 있습니다."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"보안 시스템 설정 수정"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"앱이 시스템의 보안 설정값 데이터를 수정할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Google 서비스 지도 수정"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"앱이 Google 서비스 지도를 수정할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"부팅할 때 자동 시작"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"시작할 때 실행"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"앱이 시스템 부팅이 끝난 후 바로 시작할 수 있도록 허용합니다. 이 경우 태블릿이 시작하는 데 시간이 오래 걸리고 앱이 항상 실행되어 전체 태블릿 속도가 느려질 수 있습니다."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"앱이 시스템 부팅이 끝난 후 바로 시작할 수 있도록 허용합니다. 이 경우 휴대전화가 시작하는 데 시간이 오래 걸리고 앱이 항상 실행되어 전체 휴대전화 속도가 느려질 수 있습니다."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"스티키 브로드캐스트 보내기"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"앱이 브로드캐스트가 끝난 후에 남은 브로드캐스트를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 태블릿에서 메모리를 너무 많이 사용하도록 하여 속도를 저하시키거나 불안정하게 만들 수 있습니다."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"앱이 브로드캐스트가 끝난 후에 남은 브로드캐스트를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 휴대전화에서 메모리를 너무 많이 사용하도록 하여 속도를 저하시키거나 불안정하게 만들 수 있습니다."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"연락처 데이터 읽기"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"연락처 데이터 작성"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"주소록 읽기"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 태블릿에 저장된 연락처에 대한 모든 데이터를 앱이 읽도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 다른 사람에게 전송할 수 있습니다."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 읽도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 다른 사람에게 전송할 수 있습니다."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"주소록 수정"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 태블릿에 저장된 연락처에 대한 모든 데이터를 앱이 수정하도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 삭제 또는 수정할 수 있습니다."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 수정하도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 삭제 또는 수정할 수 있습니다."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"통화 기록 읽기"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"앱에서 수신 및 발신 통화 데이터를 포함하여 태블릿의 통화 기록을 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 데이터를 다른 사용자에게 보낼 수 있습니다."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"앱에서 수신 및 발신 통화 데이터를 포함하여 휴대전화의 통화 기록을 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 데이터를 다른 사용자에게 보낼 수 있습니다."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"통화 기록 쓰기"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"앱에서 수신 및 발신 통화 데이터를 포함하여 태블릿의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 지우거나 수정할 수 있습니다."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"앱에서 수신 및 발신 통화 데이터를 포함하여 휴대전화의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 지우거나 수정할 수 있습니다."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"프로필 데이터 읽기"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"나만의 연락처 카드 읽기"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"앱이 기기에 저장된 개인 프로필 정보(예: 사용자 이름, 연락처 정보 등)를 읽을 수 있도록 허용합니다. 이는 앱이 사용자를 확인하고 다른 사용자들에게 해당 프로필 정보를 전송할 수 있다는 것을 의미합니다."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"프로필 데이터에 쓰기"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"나만의 연락처 카드 수정"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"앱이 기기에 저장된 개인 프로필 정보(예: 사용자 이름, 연락처 정보 등)를 변경하거나 추가할 수 있도록 허용합니다. 이는 다른 앱이 사용자를 확인하고 다른 사용자들에게 해당 프로필 정보를 전송할 수 있다는 것을 의미합니다."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"소셜 스트림 읽기"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"앱이 나와 친구의 최신 소셜 소식에 액세스하고 동기화할 수 있도록 허용합니다. 이 경우 악성 앱이 소셜 네트워크에서 나와 친구가 주고받은 사적인 내용을 읽을 수 있습니다."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"휴대전화 강제로 다시 부팅"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"앱이 태블릿을 강제로 재부팅할 수 있도록 허용합니다."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"앱이 휴대전화를 강제로 재부팅할 수 있도록 허용합니다."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"파일시스템 마운트 및 마운트 해제"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB 저장소 파일 시스템에 액세스"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD 카드 파일 시스템에 액세스"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"앱이 이동식 저장소의 파일 시스템을 마운트하고 마운트 해제할 수 있도록 허용합니다."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"외부 저장소 포맷"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB 저장소 지우기"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD 카드 지우기"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"앱이 이동식 저장소를 포맷할 수 있도록 허용합니다."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"내부 저장소에 대한 정보 가져오기"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"앱이 내부 저장소의 정보를 가져올 수 있도록 허용합니다."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"앱이 내부 저장소를 마운트/마운트 해제할 수 있도록 허용합니다."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"내부 저장소 이름 바꾸기"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"앱이 내부 저장소의 이름을 바꿀 수 있도록 허용합니다."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"진동 제어"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"진동 제어"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"앱이 진동을 제어할 수 있도록 허용합니다."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"카메라 플래시 제어"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"앱이 카메라 플래시를 제어할 수 있도록 허용합니다."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"앱이 각 앱에 대해 사용할 수 있는 위젯을 시스템에 알릴 수 있도록 허용합니다. 이 권한을 갖는 앱은 개인 정보에 대한 액세스 권한을 다른 앱에 부여할 수 있습니다. 일반 앱에서는 사용하지 않습니다."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"휴대전화 상태 수정"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"앱이 기기의 휴대전화 기능을 관리할 수 있도록 허용합니다. 이 권한을 갖는 앱은 사용자에게 알리지 않고 네트워크를 전환하거나 무선 기능을 켜고 끄는 등의 작업을 수행할 수 있습니다."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"휴대전화 상태 및 ID 읽기"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"휴대전화 상태 및 ID 읽기"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"앱이 기기의 휴대전화 기능에 접근할 수 있도록 허용합니다. 이 권한을 갖는 앱은 휴대전화의 전화번호 및 일련번호, 통화가 활성인지 여부, 통화가 연결된 번호 등을 확인할 수 있습니다."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"태블릿이 절전 모드로 전환되지 않도록 설정"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"휴대전화가 절전 모드로 전환되지 않도록 설정"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"휴대전화 하드웨어에 대한 완전한 액세스를 허용하는 하위 수준의 제조업체 테스트로 실행됩니다. 휴대전화가 제조업체 테스트 모드로 실행 중일 때만 사용할 수 있습니다."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"배경화면 설정"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"앱이 시스템 배경화면을 설정할 수 있도록 허용합니다."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"배경화면 크기 힌트 설정"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"배경화면 크기 조정"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"앱이 시스템 배경화면 크기 힌트를 설정할 수 있도록 허용합니다."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"시스템 초기화"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"앱이 모든 데이터, 구성 및 설치된 앱을 지워서 시스템을 완전히 초기화할 수 있도록 허용합니다."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"앱이 휴대전화의 표준시간대를 변경할 수 있도록 허용합니다."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService로 활동"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"애플리케이션이 AccountAuthenticators를 호출할 수 있도록 허용합니다."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"알려진 계정 검색"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"기기에서 계정 검색"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"앱이 태블릿에 알려진 계정 목록을 가져올 수 있도록 허용합니다."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"앱이 휴대전화에 알려진 계정 목록을 가져올 수 있도록 허용합니다."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"계정 인증자로 활동"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"계정 만들기 및 비밀번호 설정"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"앱이 계정 만들기, 비밀번호 가져오기 및 설정 등과 같은 관리자의 계정 인증자 기능을 사용할 수 있도록 허용합니다."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"계정 목록 관리"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"계정 추가 또는 삭제"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"앱이 계정 추가, 삭제 및 비밀번호 삭제 등의 작업을 수행할 수 있도록 허용합니다."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"계정의 인증 자격증명 사용"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"기기에서 계정 사용"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"앱이 인증 토큰을 요청하도록 허용합니다."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"네트워크 상태 보기"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"네트워크 연결 보기"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"앱이 모든 네트워크의 상태를 볼 수 있도록 허용합니다."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"인터넷 액세스"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"앱이 네트워크 소켓을 만들 수 있도록 허용합니다."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"앱이 테더링된 네트워크 연결 상태를 변경할 수 있도록 허용합니다."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"백그라운드 데이터 사용 설정 변경"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"앱이 백그라운드 데이터 사용 설정을 변경할 수 있도록 허용합니다."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Wi-Fi 상태 보기"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi 연결 보기"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"앱이 Wi-Fi의 상태에 대한 정보를 볼 수 있도록 허용합니다."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Wi-Fi 상태 변경"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi 연결 및 연결 해제"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"앱이 Wi-Fi 액세스 포인트에 연결하거나 연결을 끊고, 설정된 Wi-Fi 네트워크를 변경할 수 있도록 허용합니다."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi 멀티캐스트 수신 허용"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"앱이 기기로 직접 주소가 지정되지 않은 패킷을 받을 수 있도록 허용합니다. 이 기능은 가까운 곳에서 제공되는 서비스를 검색할 때 유용하며 비멀티캐스트 모드보다 전원을 더 많이 소비합니다."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"블루투스 관리"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"블루투스 설정에 액세스"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"앱이 로컬 블루투스 태블릿을 설정한 다음 원격 기기를 검색하여 페어링할 수 있도록 허용합니다."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"앱이 로컬 블루투스 휴대전화를 설정한 다음 원격 기기를 검색하여 페어링할 수 있도록 허용합니다."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX 상태 보기"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX 연결 보기"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"애플리케이션이 WiMAX의 상태에 대한 정보를 볼 수 있도록 허용합니다."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX 상태 변경"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"애플리케이션이 WiMAX 네트워크에 연결하거나 연결을 끊을 수 있도록 합니다."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"블루투스 연결 만들기"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"블루투스 기기와 페어링"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"앱이 로컬 블루투스 태블릿의 구성을 보고 페어링된 기기에 연결하며 연결을 수락할 수 있도록 허용합니다."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"앱이 로컬 블루투스 전화의 구성을 보고 페어링된 기기에 연결하며 연결을 수락할 수 있도록 허용합니다."</string> <string name="permlab_nfc" msgid="4423351274757876953">"NFC(Near Field Communication) 제어"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"앱이 NFC(근거리 무선 통신) 태그, 카드 및 리더와 통신할 수 있도록 허용합니다."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"키 잠금 사용 중지"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"화면 잠금 사용 중지"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"앱이 키 잠금 및 관련 비밀번호 보안을 사용중지할 수 있도록 허용합니다. 예를 들어, 휴대전화가 수신전화를 받을 때 키 잠금을 사용중지했다가 통화가 끝나면 키 잠금을 다시 사용할 수 있습니다."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"동기화 설정 읽기"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"앱이 피플 앱(People app)에 동기화를 사용할지 여부 등의 동기화 설정을 읽을 수 있도록 허용합니다."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"동기화 설정 쓰기"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"동기화 사용 및 사용 중지 전환"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"앱이 피플 앱(People app)에 대해 동기화를 사용할지 여부 등의 동기화 설정을 수정할 수 있도록 허용합니다."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"동기화 통계 읽기"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"앱이 동기화 통계(예: 실행된 동기화 기록)을 읽을 수 있도록 허용합니다."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"앱이 현재 동기화된 피드에 대한 세부정보를 가져올 수 있도록 허용합니다."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"가입 피드 작성"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"앱이 현재 동기화된 피드를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 동기화된 피드를 변경할 수 있습니다."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"사용자 정의 사전 읽기"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"사전에 추가한 단어 읽기"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"앱이 사용자 사전에 보관되어 있는 비공개 단어, 이름 및 구문을 읽도록 허용합니다."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"사용자 정의 사전에 작성"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"앱이 사용자 사전에 새 단어를 입력할 수 있도록 허용합니다."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USB 저장소 콘텐츠 읽기"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SD 카드 콘텐츠 읽기"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"앱이 USB 콘텐츠를 읽도록 허용"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"앱이 SD 카드의 콘텐츠를 읽을 수 있도록 허용합니다."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB 저장소 콘텐츠 수정/삭제"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD 카드 콘텐츠 수정/삭제"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB 저장소의 콘텐츠 읽기"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD 카드의 콘텐츠 읽기"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"앱이 사진과 미디어를 포함하고 있을 수 있는 USB 저장소의 콘텐츠를 읽도록 허용합니다."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"앱이 사진과 미디어를 포함하고 있을 수 있는 SD 카드의 콘텐츠를 읽도록 허용합니다."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB 저장소의 콘텐츠 수정 또는 삭제"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"SD 카드의 콘텐츠 수정 또는 삭제"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"앱이 USB 저장소에 쓸 수 있도록 허용합니다."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"앱이 SD 카드에 쓸 수 있도록 허용합니다."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"내부 미디어 저장소 콘텐츠 수정/삭제"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"휴대전화에 SIM 카드가 없습니다."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM 카드를 삽입하세요."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM 카드가 없거나 읽을 수 없습니다. SIM 카드를 삽입하세요."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM 카드 사용이 영구적으로 사용중지되었습니다."\n"다른 SIM 카드를 사용하려면 무선 서비스 제공업체에 문의하시기 바랍니다."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"이전 트랙 버튼"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"다음 트랙 버튼"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"문자"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"단어"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"링크"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"행"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="AMPM">%P</xliff:g> <xliff:g id="HOUR">%-l</xliff:g>시"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="AMPM">%p</xliff:g> <xliff:g id="HOUR">%-l</xliff:g>시"</string> <string name="factorytest_failed" msgid="5410270329114212041">"출고 테스트 불합격"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"군"</string> <string name="autofill_area" msgid="3547409050889952423">"구역"</string> <string name="autofill_emirate" msgid="2893880978835698818">"에미리트"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"브라우저의 기록 및 북마크 읽기"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"웹 북마크 및 내역 읽기"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"앱이 브라우저로 방문한 모든 URL과 브라우저의 모든 북마크를 읽을 수 있도록 허용합니다."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"브라우저의 기록 및 북마크 쓰기"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"웹 북마크 및 내역 쓰기"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"앱이 태블릿에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 브라우저의 데이터를 지우거나 수정할 수 있습니다."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"앱이 휴대전화에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 브라우저의 데이터를 지우거나 수정할 수 있습니다."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"알람 시계에 알람 설정"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"알람 설정"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"앱이 설치된 알람 시계 앱에서 알람을 설정할 수 있도록 허용합니다. 일부 알람 시계 앱에는 이 기능이 구현되지 않을 수 있습니다."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"음성사서함 추가"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"앱이 음성사서함에 메시지를 추가할 수 있도록 허용합니다."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"설정"</string> <string name="date_time_done" msgid="2507683751759308828">"완료"</string> <string name="default_permission_group" msgid="2690160991405646128">"기본값"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"신규: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"신규: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"권한 필요 없음"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"숨기기"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"모두 표시"</b></string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 8be0aa2e71b5..c3d83e8b4dc8 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Planšetinio kompiuterio veikimas bus sustabdytas."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefonas bus išjungtas."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Ar norite išjungti?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Iš naujo įkelti operacinę sistemą saugos režimu"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Ar norite iš naujo įkelti operacinę sistemą saugos režimu? Dėl to bus neleidžiamos visos įdiegtos trečiųjų šalių programos. Jos bus atkurtos dar kartą iš naujo įkėlus operacinę sistemą."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Naujos"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Nėra naujausių programų."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Planšetinio kompiuterio parinktys"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Jūsų pranešimai"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Skaitykite ir rašykite SMS, el. laiškus ir kitus pranešimus."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Asmeninė informacija"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Tiesioginė prieiga prie kontaktų ir kalendoriaus, išsaugotų planšetiniame kompiuteryje."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Tiesioginė prieiga prie adresatų ir kalendoriaus, saugomų telefone."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Jūsų vieta"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Stebėti fizinę vietą."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Tinklo ryšys"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Pasiekti įvairias tinklo funkcijas."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Jūsų paskyros"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Pasiekite galimas paskyras."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Aparatinės įrangos valdikliai"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Žemesnio lygio prieiga prie sistemos ir jos valdymas."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Kūrėjo įrankiai"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcijos reikalingos tik programos kūrėjams."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Saugykla"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Pasiekti USB atmintinę."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pasiekite SD kortelę."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Leidžiama programai būti būsenos juosta."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"išskleisti / sutraukti būsenos juostą"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Leidžiama programai išskleisti arba sutraukti būsenos juostą."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"sulaikyti išeinančius skambučius"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"peradresuoti išsiunčiamuosius skambučius"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Leidžiama programai apdoroti siunčiamuosius skambučius ir pakeisti renkamą numerį. Kenkėjiškos programos gali stebėti, peradresuoti siunčiamuosius skambučius ar jų neleisti."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"gauti SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"gauti teksto pranešimus (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Leidžiama programai gauti ir apdoroti SMS pranešimus. Kenkėjiškos programos gali stebėti jūsų pranešimus ar ištrinti juos neparodydamos jų jums."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"gauti MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"gauti teksto pranešimus (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Leidžiama programai gauti ir apdoroti MMS pranešimus. Kenkėjiškos programos gali stebėti jūsų pranešimus ar ištrinti juos neparodydamos jų jums."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"gauti kritinės padėties transliacijas"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Leidžiama programai gauti ir apdoroti skubiai pateikiamus pranešimus. Šis leidimas galimas tik sistemos programoms."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Leidžiama programai siųsti SMS pranešimus. Kenkėjiškos programos gali siųsti mokamus pranešimus be jūsų patvirtinimo."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"siųsti SMS pranešimus be patvirtinimo"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Leidžiama programai siųsti SMS pranešimus. Kenkėjiškos programos gali siųsti mokamus pranešimus be jūsų patvirtinimo."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"skaityti SMS ar MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"skaityti teksto pranešimus (SMS arba MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Leidžiama programai skaityti planšetiniame kompiuteryje ar SIM kortelėje saugomus SMS pranešimus. Kenkėjiškos programos gali skaityti jūsų konfidencialius pranešimus."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Leidžiama programai skaityti telefone ar SIM kortelėje saugomus SMS pranešimus. Kenkėjiškos programos gali skaityti jūsų konfidencialius pranešimus."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"redaguoti SMS ar MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"redaguoti teksto pranešimus (SMS arba MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Leidžiama programai rašyti SMS pranešimus, išsaugotus jūsų planšetiniame kompiuteryje ar SIM kortelėje. Kenkėjiškos programos gali ištrinti jūsų pranešimus."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Leidžiama programai rašyti SMS pranešimus, išsaugotus jūsų telefone ar SIM kortelėje. Kenkėjiškos programos gali ištrinti jūsų pranešimus."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"gauti WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"gauti teksto pranešimus (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Leidžiama programai gauti ir apdoroti WAP pranešimus. Kenkėjiškos programos gali stebėti jūsų pranešimus ar ištrinti juos neparodydamos jų jums."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"nuskaityti vykdomas programas"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Leidžiama programai nuskaityti informaciją apie šiuo ir paskutiniu metu vykdomas užduotis. Kenkėjiškos programos gali atrasti privačios informacijos apie kitas programas."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"nuskaityti veikiančių programų išsamią informaciją"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Leidžiama programai nuskaityti išsamią informaciją apie šiuo ir pastaruoju metu vykdomas užduotis. Kenkėjiškos programos gali surasti privačios informacijos apie kitas programas."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"pertvarkyti vykdomas programas"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Leidžiama programai užduotis perkelti į priekinį planą ir į foną. Kenkėjiškos programos gali priverstinai persikelti į priekį be jūsų įsikišimo."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"sustabdyti vykdomas programas"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Programai leidžiama valdyti kitų programų ekrano suderinamumo režimą. Kenkėjiškos programos gali kliudyti veikti kitoms programoms."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"įgalinti programos derinimą"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Leidžiama programai įjungti kitos programos derinimą. Kenkėjiškos programos gali tai naudoti, kad išjungtų kitas programas."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"keisti UI nustatymus"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"keisti sistemos rodymo nustatymus"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Leidžiama programai keisti dabartinę konfigūraciją, pvz., lokalę ar viso šrifto dydį."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"įgalinti automobilio režimą"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Leidžiama programai įgalinti automobilio režimą."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"nutraukti fono procesus"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"uždaryti kitas programas"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Leidžiama programai nutraukti kitų programų fono procesus, net jei netrūksta atminties vietos."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"priverstinai stabdyti kitas programas"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Leidžiama programai priverstinai stabdyti kitas programas."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Leidžiama programai pateikti pranešimą, kai gaunamas WAP PUSH pranešimas. Kenkėjiškos programos gali tai naudoti, kad klastotų MMS pranešimo gavimą ar kad nepastebimai pakeistų bet kurio tinklalapio turinį kenkėjiškais variantais."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"riboti vykdomų procesų skaičių"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Leidžiama programai valdyti didžiausią vykdomų procesų skaičių. Nereikalinga įprastoms programoms."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"uždaryti visas fono programas"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"priverstinai uždaryti fonines programas"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Leidžiama programai valdyti, ar veiksmai visada užbaigiami, kai jie perkeliami į foną. Nereikalinga įprastoms programoms."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"keisti akumuliatoriaus statistiką"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Leidžiama programai keisti surinktą akumuliatoriaus statistiką. Neskirta naudoti įprastoms programoms."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Leidžiama programai paleisti visą atsarginę patvirtinimo NS. Neskirta naudoti bet kokiai programai."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"pateikti neteisėtus langus"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Leidžiama programai kurti langus, kuriuos turėtų naudoti vidinės sistemos naudotojo sąsaja. Neskirta naudoti įprastoms programoms."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"pateikti sistemos lygio įspėjimus"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"perrašyti kitas programas"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Leidžiama programoms rodyti sistemos įspėjimų langus. Kenkėjiškos programos gali apimti visą ekraną."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"keisti visos animacijos greitį"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Leidžiama programai bet kuriuo metu keisti visą animacijos greitį (greitesnių ar lėtesnių animacijų)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Programai leidžiama suteikti arba panaikinti konkrečius savo arba kitų programų leidimus. Tuo pasinaudoję kenkėjiškos programos gali pasiekti funkcijas, kurių pasiekti joms neleidote."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nustatyti pageidaujamas programas"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Leidžiama programai keisti jūsų pageidaujamas programas. Kenkėjiškos programos gali nepastebimai pakeisti vykdomas programas, klastodama esamas programas, kad rinktų jūsų privačius duomenis."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"keisti visuotinius sistemos nustatymus"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"keisti sistemos nustatymus"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Leidžiama programai keisti sistemos nustatymų duomenis. Kenkėjiškos programos gali sugadinti jūsų sistemos konfigūraciją."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"keisti saugios sistemos nustatymus"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Leidžiama programai keisti sistemos saugių nustatymų duomenis. Neskirta naudoti įprastoms programoms."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"keisti „Google“ paslaugų žemėlapį"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Leidžiama programai keisti „Google“ paslaugų žemėlapį. Neskirta naudoti įprastoms programoms."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatiškai paleisti įkraunant"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"paleisti paleidžiant"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Leidžiama programai pasileisti, kai baigsis sistemos įkėlimas iš naujo. Dėl to planšetinio kompiuterio paleidimas gali trukti ilgiau ir programa gali sulėtinti planšetinį kompiuterį, nes ji veiks visada."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Leidžiama programai pasileisti, kai baigsis sistemos įkėlimas iš naujo. Dėl to telefono paleidimas gali trukti ilgiau ir programa gali sulėtinti telefoną, nes ji veiks visada."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"siųsti pritraukiantį perdavimą"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Leidžiama programai siųsti užsifiksuojančias transliacijas, kurios išlieka pasibaigus transliacijai. Kenkėjiškos programos gali sulėtinti planšetinį kompiuterį ar padaryti jį nestabilų versdamos naudoti per daug atminties."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Leidžiama programai siųsti užsifiksuojančias transliacijas, kurios išlieka pasibaigus transliacijai. Kenkėjiškos programos gali sulėtinti telefoną ar padaryti jį nestabilų versdamos jį naudoti per daug atminties."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"skaityti adresato duomenis"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"rašyti adresatų duomenis"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"skaityti kontaktus"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Leidžiama programai perskaityti visus planšetiniame kompiuteryje saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali panaudoti šį leidimą, kad siųstų jūsų kontaktinius duomenis kitiems asmenims."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Leidžiama programai perskaityti visus telefone saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali panaudoti šį leidimą, kad siųstų jūsų kontaktinius duomenis kitiems asmenims."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"keisti kontaktus"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Leidžiama programai keisti planšetiniame kompiuteryje saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali tuo pasinaudoti, kad ištrintų arba pakeistų jūsų kontaktinius duomenis."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Leidžiama programai keisti telefone saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali tuo pasinaudoti, kad ištrintų arba pakeistų jūsų kontaktinius duomenis."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"skaityti skambučių žurnalą"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Programai leidžiama skaityti planšetinio kompiuterio skambučių žurnalą, įskaitant duomenis apie gaunamus ir siunčiamus skambučius. Kenkėjiškos programos tai gali naudoti, kad išsiųstų jūsų duomenis kitiems žmonėms."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Programai leidžiama skaityti telefono skambučių žurnalą, įskaitant duomenis apie gaunamus ir siunčiamus skambučius. Kenkėjiškos programos tai gali naudoti, kad išsiųstų jūsų duomenis kitiems žmonėms."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"rašyti skambučių žurnalą"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Programai leidžiama skaityti planšetinio kompiuterio skambučių žurnalą, įskaitant duomenis apie gaunamus ir siunčiamus skambučius. Kenkėjiškos programos tai gali naudoti, kad ištrintų ar keistų jūsų skambučių žurnalą."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Programai leidžiama skaityti telefono skambučių žurnalą, įskaitant duomenis apie gaunamus ir siunčiamus skambučius. Kenkėjiškos programos tai gali naudoti, kad ištrintų ar keistų jūsų skambučių žurnalą."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"skaityti profilio duomenis"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"skaityti jūsų kontakt. kortelę"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Leidžiama programai skaityti asmeninę profilio informaciją, saugomą jūsų įrenginyje, pvz., jūsų vardą, pavardę ir kontaktinę informaciją. Tai reiškia, kad programa gali nustatyti jūsų tapatybę ir siųsti profilio informaciją kitiems."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"rašyti kaip profilio duomenis"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"keisti jūsų kontaktinę kortelę"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Leidžiama programai pakeisti asmeninę profilio informaciją, saugomą jūsų įrenginyje, pvz., jūsų vardą, pavardę ir kontaktinę informaciją, arba jos pridėti. Tai reiškia, kad kitos programos gali nustatyti jūsų tapatybę ir siųsti profilio informaciją kitiems."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"skaityti socialinį srautą"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Leidžiama programai pasiekti ir sinchronizuoti socialinius jūsų ir jūsų draugų naujinius. Kenkėjiškos programos gali naudoti tai, kad skaitytų jūsų susirašinėjimą su draugais viešuosiuose tinkluose."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"pradėti telefono perkrovimą"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Leidžiama programai versti iš naujo paleisti planšetinio kompiuterio operacinę sistemą."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Leidžiama programai versti iš naujo paleisti telefono operacinę sistemą."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"įrengti ir išimti failų sistemas"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"pasiekti USB atm. failų sist."</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"pasiekti SD kortelės failų sistemą"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Leidžiama programai įrengti ir pašalinti keičiamos atmintinės failų sistemas."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatuoti išorinę saugyklą"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"ištrinti USB atmintį"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"ištrinti SD kortelę"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Leidžiama programai formatuoti keičiamą saugyklą."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"gauti informacijos apie vidinę atmintinę"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Leidžiama programai gauti informacijos apie vidinę atmintį."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Leidžiama programai įrengti / pašalinti vidinę atmintį."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"iš naujo pavadinti vidinę atmintinę"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Leidžiama programai pervardyti vidinę atmintį."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"valdyti vibratorių"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"valdyti vibraciją"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Leidžiama programai valdyti vibravimą."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"valdyti šviesos signalą"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Leidžiama programai valdyti šviesos signalą."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Leidžiama programai pranešti, kurios programos kuriuos valdiklius gali naudoti. Šį leidimą turinti programa gali kitoms programoms suteikti prieigą prie asmeninių duomenų. Neskirta naudoti įprastoms programoms."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"keisti telefono būseną"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Leidžiama programai valdyti įrenginio telefono funkcijas. Šį leidimą turinti programa gali perjungti tinklus, įjungti ir išjungti telefono radiją ir atlikti panašius veiksmus jūsų neįspėdama."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"skaityti telefono būseną ir tapatybę"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"skaityti telefono būseną ir tapatybę"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Leidžiama programai pasiekti įrenginio telefono funkcijas. Šį leidimą turinti programa gali nustatyti šio telefono numerį ir serijos numerį, ar skambutis yra aktyvus, numerį, kuriuo skambinama ir t. t."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"neleisti planšetiniam kompiuteriui užmigti"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"neleisti telefonui snausti"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Paleisti kaip žemo lygio gamintojo bandymą, leidžiant užbaigti prieigą prie aparatinės telefono įrangos. Galima tik kai telefonas veikia gamintojo bandymo režimu."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"nustatyti darbalaukio foną"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Leidžiama programai nustatyti sistemos darbalaukio foną."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"nustatyti darbalaukio fono dydžio užuominas"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"keisti ekrano fono dydį"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Leidžiama programai nustatyti sistemos darbalaukio fono dydžio užuominas."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"iš naujo nustatyti sistemą į gamyklos nustatymus"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Leidžiama programai visiškai iš naujo nustatyti sistemos nustatymus į gamyklinius ištrinant visus duomenis, konfigūraciją ir įdiegtas programas."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Leidžiama programai keisti telefono laiko juostą."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"veikia kaip „AccountManagerService“"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Leidžiama programai kreiptis „AccountAuthenticators“."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"atrasti žinomas paskyras"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"rasti paskyras įrenginyje"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Leidžiama programai gauti planšetiniam kompiuteriui žinomų paskyrų sąrašą."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Leidžiama programai gauti telefonui žinomų paskyrų sąrašą."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"veikia kaip paskyros autentifikavimo rodiklis"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"kurti paskyras ir nustatyti slaptažodžius"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Leidžiama programai naudoti paskyros „AccountManager“ tapatumo nustatymo funkcijas, įskaitant paskyrų kūrimą, jų slaptažodžių gavimą ir nustatymą."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"valdyti paskyrų sąrašą"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"pridėti arba pašalinti paskyras"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Leidžiama programai atlikti tokias operacijas kaip paskyrų pridėjimas ir pašalinimas bei slaptažodžių trynimas."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"naudoti paskyros tapatybės nustatymo įgaliojimus"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"naudoti įrenginyje esančias paskyras"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Leidžiama programai pateikti užklausą dėl tapatumo nustatymo prieigos raktų."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"žiūrėti tinklo būseną"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"žiūrėti tinklo ryšius"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Leidžiama programai žiūrėti visų tinklų būseną."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"visa interneto prieiga"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Leidžiama programai kurti tinklo lizdus."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Leidžiama programai keisti susieto tinklo jungiamumą."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"keisti fono duomenų naudojimo nustatymą"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Leidžiama programai keisti fono duomenų naudojimo nustatymą."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"žiūrėti „Wi-Fi“ būseną"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"žiūrėti „Wi-Fi“ ryšius"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Leidžiama programai žiūrėti informaciją apie „Wi-Fi“ būseną."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"keisti Wi-Fi“ būseną"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"prijungti prie „Wi-Fi“ ir atjungti nuo jo"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Leidžiama programai prisijungti prie „Wi-Fi“ prieigos taškų ir nuo jų atsijungti bei keisti sukonfigūruotus „Wi-Fi“ tinklus."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"leisti „Wi-Fi“ daugiaadresio perdavimo priėmimą"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Leidžiama programai gauti paketus, tiesiogiai neadresuotus jūsų įrenginiui. Tai naudinga atradus šalia siūlomas paslaugas. Naudojama daugiau energijos, nei veikiant ne daugiaabonenčio perdavimo režimu."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"„Bluetooth“ administravimas"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"pasiekti „Bluetooth“ nustatymus"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Leidžiama programai konfigūruoti vietinį „Bluetooth“ planšetinį kompiuterį ir atrasti nuotolinius įrenginius bei su jais susieti."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Leidžiama programai konfigūruoti vietinį „Bluetooth“ telefoną ir atrasti bei susieti su nuotoliniais įrenginiais."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Žiūrėti „WiMAX“ būseną"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Žiūrėti „WiMAX“ ryšius"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Leidžiama programai peržiūrėti informaciją apie „WiMAX“ būseną."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Keisti „WiMAX“ būseną"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Leidžiama programai prisijungti prie „WiMAX“ tinklo ir nuo jo atsijungti."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"kurti „Bluetooth“ ryšius"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"susieti su „Bluetooth“ įrenginiais"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Leidžiama programai peržiūrėti vietinio „Bluetooth“ planšetinio kompiuterio konfigūraciją ir užmegzti bei priimti ryšius iš susietų įrenginių."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Leidžiama programai peržiūrėti vietinio „Bluetooth“ telefono konfigūraciją ir užmegzti bei priimti ryšius iš susietų įrenginių."</string> <string name="permlab_nfc" msgid="4423351274757876953">"valdyti artimo lauko perdavimą (angl. „Near Field Communication“)"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Leidžiama programai perduoti artimojo lauko ryšių technologijos (ALR) žymas, korteles ir skaitymo programas."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"išjungti užraktą"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"išjungti ekrano užraktą"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Leidžiama programai neleisti klavišo užrakto ir visos susijusios slaptažodžio apsaugos. Patikimas pavyzdys būtų klavišo užrakto neleidimas telefone priimant gaunamąjį skambutį ir jo pakartotinis įgalinimas, kai skambutis baigiamas."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"skaityti sinchronizavimo nustatymus"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Leidžiama programai skaityti sinchronizavimo nustatymus, pvz., ar sinchronizavimas įgalintas Žmonių programoje."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"rašyti sinchronizavimo nustatymus"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"įjungti arba išjungti sinchronizavimą"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Leidžiama programai keisti sinchronizavimo nustatymus, pvz., ar sinchronizavimas įgalintas Žmonių programoje."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"skaityti sinchronizavimo statistiką"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Leidžiama programai skaityti sinchronizavimo statistiką, pvz., įvykusio sinchronizavimo istoriją."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Leidžiama programai gauti išsamios informacijos apie šiuo metu sinchronizuojamus sklaidos kanalus."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"rašyti prenumeruojamus kanalus"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Leidžiama programai keisti šiuo metu sinchronizuojamus sklaidos kanalus. Kenkėjiškos programos gali pakeisti sinchronizuojamus sklaidos kanalus."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"skaityti naudotojo nustatytą žodyną"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"skaityti terminus, kuriuos pridėjote į žodyną"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Leidžiama programai skaityti privačius žodžius, vardus ir frazes, kuriuos naudotojas išsaugojo naudotojo žodyne."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"rašyti naudotojo nustatytame žodyne"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Leidžiama programai rašyti naujus žodžius į naudotojo žodyną."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"skaityti USB atmint. turinį"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"skaityti SD kortelės turinį"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Leid. progr. skait. USB turin."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Leidžiama programai skaityti SD kortelės turinį."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"keisti / ištrinti USB atmintinės turinį"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"keisti / ištrinti SD kortelės turinį"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"skaityti USB atminties turinį"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"skaityti SD kortelės turinį"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Programai leidžiama skaityti USB atminties turinį, kurį gali sudaryti nuotraukos ir medija."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Programai leidžiama skaityti SD kortelės turinį, kurį gali sudaryti nuotraukos ir medija."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"keisti / trinti USB atm. turinį"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"keisti arba trinti SD kortelės turinį"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Leidž. progr. raš. į USB atm."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Leidžiama programai rašyti į SD kortelę."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"keisti / ištr. vid. med. atm. tur."</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefone nėra SIM kortelės."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Įdėkite SIM kortelę."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Trūksta SIM kortelės arba ji neskaitoma. Įdėkite SIM kortelę."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kortelė visam laikui neleidžiama."\n" Jei norite gauti kitą SIM kortelę, susisiekite su belaidžio ryšio paslaugos teikėju."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Ankstesnio takelio mygtukas"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Kito takelio mygtukas"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"simbolis"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"žodis"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"nuoroda"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"eilutė"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Gamyklos bandymas nepavyko"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Parapija"</string> <string name="autofill_area" msgid="3547409050889952423">"Sritis"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emyratas"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"skaityti naršyklės istoriją ir žymes"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"skaityti žiniatinklio žymes ir istoriją"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Leidžiama programai skaityti visus URL, kuriais apsilankyta naršyklėje, ir visas naršyklės žymes."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"rašyti naršyklės istoriją ir žymes"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"rašyti žiniatinklio žymes ir istoriją"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Leidžiama programai keisti naršyklės istoriją ar žymes, išsaugotas jūsų planšetiniame kompiuteryje. Kenkėjiškos programos gali tai naudoti, kad ištrintų ar pakeistų naršyklės duomenis."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Leidžiama programai keisti naršyklės istoriją ar žymes, išsaugotas jūsų telefone. Kenkėjiškos programos gali tai naudoti, kad ištrintų ar pakeistų naršyklės duomenis."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"nustatyti žadintuvo signalą"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"nustatyti pavojaus signalą"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Leidžiama programai nustatyti signalą įdiegtoje žadintuvo programoje. Kai kuriose žadintuvo programose ši funkcija gali nebūti nevykdoma."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"pridėti balso pašto pranešimų"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Leidžia programai pridėti pranešimų prie jūsų balso pašto gautųjų."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Nustatyti"</string> <string name="date_time_done" msgid="2507683751759308828">"Baigta"</string> <string name="default_permission_group" msgid="2690160991405646128">"Numatytasis"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NAUJAS: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NAUJAS: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nereikia leidimų"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Slėpti"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Rodyti viską"</b></string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 95a1089ccaad..50aa109acb50 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Planšetdators tiks beidzēts."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Tālrunis tiks izslēgts."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Vai vēlaties izslēgt?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Atsāknēšana drošajā režīmā"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Vai vēlaties veikt atsāknēšanu drošajā režīmā? Tādējādi tiks atspējotas visas instalētās trešo pušu lietojumprogrammas. To darbība tiks atjaunota, kad vēlreiz veiksiet atsāknēšanu."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Nesens"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Nav nesen izmantotu lietotņu."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Planšetdatora opcijas"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Jūsu ziņojumi"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Lasiet un rakstiet īsziņas, e-pasta un citus ziņojumus."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Personas informācija"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Tieša piekļuve planšetdatorā saglabātajām kontaktpersonām un kalendāram."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Tiešā piekļuve tālrunī saglabātajām kontaktpersonām un kalendāram."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Jūsu atrašanās vieta"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Pārrauga jūsu fizisko atrašanās vietu."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Tīkla sakari"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Piekļūst dažādām tīkla funkcijām."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Jūsu konti"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Piekļūstiet pieejamajiem kontiem."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Aparatūras vadīklas"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Sistēmas apakšējā līmeņa piekļuve un vadība."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Izstrādes rīki"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Tikai lietotņu izstrādātājiem nepieciešamās funkcijas."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Krātuve"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Piekļūst USB krātuvei."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Piekļūstiet SD kartei."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Ļauj lietotnei būt par statusa joslu."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"izvērst/sakļaut statusa joslu"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ļauj lietotnei izvērst vai sakļaut statusa joslu."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"pārtvert izejošos zvanus"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"pārmaršrutēt izejošos zvanus"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Ļauj lietotnei apstrādāt izejošos zvanus un mainīt ievadāmo numuru. Ļaunprātīgas lietotnes var pārraudzīt, novirzīt un aizkavēt izejošos zvanus."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"saņemt īsziņu"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"saņemt īsziņas (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Ļauj lietotnei saņemt un apstrādāt īsziņas. Ļaunprātīgas lietotnes var pārraudzīt vai dzēst šos ziņojumus, neparādot tos jums."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"saņemt multiziņu"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"saņemt ziņojumus (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Ļauj lietotnei saņemt un apstrādāt multiziņas. Ļaunprātīgas lietotnes var pārraudzīt vai dzēst šos ziņojumus, neparādot tos jums."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Ārkārtas apraižu saņemšana"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Ļauj lietotnei saņemt un apstrādāt ārkārtas apraides ziņojumus. Šī atļauja attiecas tikai uz sistēmas lietotnēm."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Ļauj lietotnei sūtīt īsziņas. Ļaunprātīgu lietotņu darbības dēļ jums var būt jāmaksā papildus, jo tiks sūtītas īsziņas bez jūsu apstiprinājuma."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"īsziņu sūtīšana bez apstiprinājuma"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Ļauj lietotnei sūtīt īsziņas. Ļaunprātīgu lietotņu darbības dēļ jums var būt jāmaksā papildus, jo tiks sūtītas īsziņas bez jūsu apstiprinājuma."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"lasīt īsziņu vai multiziņu"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"lasīt ziņojumus (SMS vai MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Ļauj lietotnei lasīt īsziņas, kas ir saglabātas planšetdatorā vai SIM kartē. Ļaunprātīgas lietotnes var lasīt jūsu konfidenciālos ziņojumus."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Ļauj lietotnei lasīt īsziņas, kas ir saglabātas tālrunī vai SIM kartē. Ļaunprātīgas lietotnes var lasīt jūsu konfidenciālos ziņojumus."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"rediģēt īsziņu vai multiziņu"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"rediģēt ziņojumus (SMS vai MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Ļauj lietotnei rakstīt īsziņās, kas ir saglabātas planšetdatorā vai SIM kartē. Ļaunprātīgas lietotnes var dzēst jūsu ziņojumus."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Ļauj lietotnei rakstīt īsziņās, kas ir saglabātas tālrunī vai SIM kartē. Ļaunprātīgas lietotnes var dzēst jūsu ziņojumus."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"saņemt WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"saņemt īsziņas (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Ļauj lietotnei saņemt un apstrādāt WAP ziņojumus. Ļaunprātīgas lietotnes var pārraudzīt vai dzēst šos ziņojumus, neparādot tos jums."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"izgūt izmantotās lietotnes"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Ļauj lietotnei izgūt informāciju par šobrīd un nesen veiktajiem uzdevumiem. Ļaunprātīgas lietotnes var atklāt privātu informāciju par citām lietotnēm."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"Informācijas izguve par izmantotajām lietotnēm"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Ļauj lietotnei izgūt informāciju par šobrīd un nesen veiktajiem uzdevumiem. Ļaunprātīgas lietotnes var atklāt privātu informāciju par citām lietotnēm."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"pārkārtot izmantotās lietotnes"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Ļauj lietotnei pārvietot uzdevumus priekšplānā un fonā. Ļaunprātīgas lietotnes var tikt izvirzītas priekšplānā bez jūsu vadības."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"apturēt izmantoto lietotņu darbību"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Ļauj lietotnei kontrolēt citu lietotņu ekrāna saderības režīmu. Ļaunprātīgas lietojumprogrammas var mainīt citu lietojumprogrammu darbību."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"iespējot lietotnes atkļūdošanu"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Ļauj lietotnei ieslēgt citas lietotnes atkļūdošanu. Ļaunprātīgas lietotnes to var izmantot, lai pārtrauktu citu lietotņu darbību."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"mainīt lietotāja saskarnes iestatījumus"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"mainīt sistēmas rādīšanas iestatījumus"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Ļauj lietotnei mainīt pašreizējo konfigurāciju, piemēram, lokalizāciju vai vispārējo fonta lielumu."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"iespējot automobiļa režīmu"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ļauj lietotnei iespējot automašīnas režīmu."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"pārtraukt fonā notiekošos procesus"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"aizvērt citas lietotnes"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Ļauj lietotnei pārtraukt fonā esošus citu lietotņu procesus, pat ja atmiņā pietiek vietas."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"veikt citu lietotņu darbības piespiedu pārtraukšanu"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Ļauj lietotnei veikt citu lietotņu darbības piespiedu pārtraukšanu."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Ļauj lietotnei pārraidīt paziņojumu par to, ka ir saņemts WAP PUSH ziņojums. Ļaunprātīgas lietotnes to var izmantot, lai viltotu multiziņas saņemšanu vai jebkuras tīmekļa lapas saturu nemanāmi nomainītu ar ļaunprātīgiem variantiem."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ierobežot aktīvo procesu skaitu"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Ļauj lietotnei kontrolēt izpildāmo procesu maksimālo skaitu. Parastajām lietotnēm tas nekad nav nepieciešams."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"aizvērt visas fonā esošās lietotnes"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"veikt fonā darbojošos lietotņu piespiedu aizvēršanu"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Ļauj lietotnei kontrolēt, vai darbības vienmēr tiek pabeigtas, tiklīdz tās nonāk fonā. Parastajām lietotnēm tas nekad nav nepieciešams."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"pārveidot akumulatora statistiku"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Ļauj lietotnei modificēt apkopoto statistiku par akumulatoru. Atļauja neattiecas uz parastām lietotnēm."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Ļauj lietotnei palaist pilna dublējuma apstiprinājuma lietotāja saskarni. Neattiecas ne uz vienu lietotni."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"attēlot neautorizētus logus"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ļauj lietotnei izveidot logus, kas paredzēti izmantošanai iekšējās sistēmas lietotāja saskarnē. Atļauja neattiecas uz parastām lietotnēm."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"rādīt sistēmas līmeņa brīdinājumus"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"zīmēt pāri citām lietotnēm"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Ļauj lietotnei rādīt sistēmas brīdinājumu logus. Ļaunprātīgas lietotnes var pārņemt vadību pār visu ekrānu."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"pārveidot globālo animācijas ātrumu"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ļauj lietotnei jebkurā laikā mainīt vispārējo animācijas ātrumu (lēnākām vai ātrākām animācijām)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Ļauj lietojumprogrammai piešķirt sev vai citām lietojumprogrammām noteiktas atļaujas un atsaukt tās. Ļaunprātīgas lietojumprogrammas var izmantot šo iespēju, lai piekļūtu funkcijām, kuras neesat atļāvis."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"iestatīt vēlamās lietotnes"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Ļauj lietotnei modificēt jūsu vēlamās lietotnes. Ļaunprātīgas lietotnes var nemanāmi mainīt izmantotās lietotnes, atveidojot esošās lietotnes, lai no jums iegūtu privātus datus."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"pārveidot globālos sistēmas iestatījumus"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"mainīt sistēmas iestatījumus"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Ļauj lietotnei modificēt sistēmas iestatījumu datus. Ļaunprātīgas lietotnes var uzlauzt sistēmas konfigurāciju."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"pārveidot drošos sistēmas iestatījumus"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Ļauj lietotnei modificēt sistēmas drošības iestatījumu datus. Atļauja neattiecas uz parastām lietotnēm."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"pārveidot Google pakalpojumu karti"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Ļauj lietotnei modificēt Google pakalpojumu karti. Atļauja neattiecas uz parastām lietotnēm."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automātiski sākt pēc palaišanas"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"palaist līdz ar startēšanu"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Ļauj lietotnei tikt startētai, tiklīdz sistēma ir pabeigusi sāknēšanu. Šādi planšetdatora startēšana var notikt ilgāk un lietotne, ja tā darbojas nepārtraukti, var palēnināt planšetdatora vispārējo darbību."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Ļauj lietotnei tikt startētai, tiklīdz sistēma ir pabeigusi sāknēšanu. Šādi tālruņa startēšana var notikt ilgāk un lietotne, ja tā darbojas nepārtraukti, var palēnināt tālruņa vispārējo darbību."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"sūtīt piesaistošu apraidi"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Ļauj lietotnei sūtīt piesaistošas apraides, kas tiek saglabātas pēc apraides pabeigšanas. Ļaunprātīgas lietotnes var palēnināt planšetdatora darbību vai padarīt tā darbību nestabilu, liekot izmantot pārāk daudz atmiņas."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Ļauj lietotnei sūtīt piesaistošas apraides, kas tiek saglabātas pēc apraides pabeigšanas. Ļaunprātīgas lietotnes var palēnināt tālruņa darbību vai padarīt tā darbību nestabilu, liekot izmantot pārāk daudz atmiņas."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"lasīt kontaktpersonu datus"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"rakstīt kontaktpersonu datus"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"lasīt kontaktpersonu informāciju"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Ļauj lietotnei lasīt visus planšetdatorā saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai sūtītu jūsu kontaktpersonu datus citām personām."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Ļauj lietotnei lasīt visus tālrunī saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai sūtītu jūsu kontaktpersonu datus citām personām."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"mainīt kontaktpersonu informāciju"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Ļauj lietotnei pārveidot planšetdatorā saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai dzēstu vai pārveidotu jūsu kontaktpersonu datus."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Ļauj lietotnei pārveidot tālrunī saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai dzēstu vai pārveidotu jūsu kontaktpersonu datus."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"nolasīt zvanu žurnālu"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Ļauj lietotnei nolasīt planšetdatora zvanu žurnālu, tostarp ienākošo un izejošo zvanu datus. Ļaunprātīgas lietotnes var to izmantot, lai sūtītu jūsu datus citām personām."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Ļauj lietotnei nolasīt tālruņa zvanu žurnālu, tostarp ienākošo un izejošo zvanu datus. Ļaunprātīgas lietotnes var to izmantot, lai sūtītu jūsu datus citām personām."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"rakstīt zvanu žurnālā"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ļauj lietotnei pārveidot planšetdatora zvanu žurnālu, tostarp ienākošo un izejošo zvanu datus. Ļaunprātīgas lietotnes var to izmantot, lai dzēstu vai pārveidotu savu zvanu žurnālu."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ļauj lietotnei pārveidot tālruņa zvanu žurnālu, tostarp ienākošo un izejošo zvanu datus. Ļaunprātīgas lietotnes var to izmantot, lai dzēstu vai pārveidotu savu zvanu žurnālu."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"jūsu profila datu lasīšana"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"lasīt manu vizītkarti"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Ļauj lietotnei lasīt ierīcē saglabāto personīgā profila informāciju, piemēram, jūsu vārdu un kontaktinformāciju. Tas nozīmē, ka lietotne var jūs identificēt un sūtīt jūsu profila informāciju citām personām."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"rakstīšana jūsu profila datos"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"mainīt manu vizītkarti"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Ļauj lietotnei mainīt vai pievienot ierīcē saglabāto personīgā profila informāciju, piemēram, jūsu vārdu un kontaktinformāciju. Tas nozīmē, ka citas lietotnes var jūs identificēt un sūtīt jūsu profila informāciju citām personām."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lasīt jūsu soc. tīklu straumi"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Ļauj lietotnei piekļūt jūsu un jūsu draugu atjauninājumiem sociālajos tīklos un sinhronizēt šos atjauninājumus. Ļaunprātīgas lietotnes to var izmantot, lai piekļūtu jūsu un jūsu draugu savstarpējām privātām sarunām sociālajos tīklos."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"atsāknēt tālruni"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Ļauj lietotnei veikt planšetdatora piespiedu atsāknēšanu."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Ļauj lietotnei atsāknēt tālruni."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"uzlikt un noņemt failu sistēmas"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"piekļūt USB atm. failu sistēmai"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"piekļūt SD kartes failu sistēmai"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Ļauj lietotnei pievienot un atvienot failu sistēmas noņemamai atmiņai."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatēt ārējo krātuvi"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"dzēst USB atmiņu"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"dzēst SD karti"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Ļauj lietotnei formatēt noņemamu atmiņu."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"iegūt informāciju par iekšējo krātuvi"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Ļauj lietotnei iegūt informāciju par iekšējo atmiņu."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Ļauj lietotnei pievienot/atvienot iekšējo atmiņu."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"pārdēvēt iekšējo krātuvi"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Ļauj lietotnei pārdēvēt iekšējo atmiņu."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kontrolēt vibrozvanu"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kontrolēt vibrosignālu"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Ļauj lietotnei kontrolēt vibrosignālu."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"kontrolēt uzliesmojumu"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Ļauj lietotnei kontrolēt zibspuldzi."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Ļauj lietotnei norādīt sistēmai, kādus logrīkus un kurā lietotnē var izmantot. Lietotne, kurai ir šī atļauja, var piešķirt citām lietotnēm piekļuvi personas datiem. Atļauja neattiecas uz parastām lietotnēm."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"pārveidot tālruņa stāvokli"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Ļauj lietotnei kontrolēt ierīces tālruņa funkcijas. Lietotne, kurai ir šī atļauja, var pārslēgt tīklus, ieslēgt un izslēgt tālruņa radio un veikt tamlīdzīgas darbības, nebrīdinot jūs."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"lasīt tālruņa stāvokli un identitāti"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"lasīt tālruņa statusu un identitāti"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Ļauj lietotnei piekļūt ierīces tālruņa funkcijām. Lietotne, kurai ir šī atļauja, var noteikt tālruņa numuru un sērijas numuru, kā arī to, vai zvans ir aktīvs, numuru, ar kuru zvans ir savienots, un līdzīgu informāciju."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"novērst planšetdatora pāriešanu miega režīmā"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"novērst tālruņa pāriešanu miega režīmā"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Darbiniet kā zema līmeņa ražotāja pārbaudi, atļaujot pilnīgu piekļuvi tālruņa aparatūrai. Pieejams tikai tad, ja tālrunis darbojas ražotāja pārbaudes režīmā."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"iestatīt tapeti"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ļauj lietotnei iestatīt sistēmas tapeti."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"iestatīt tapetes izmēra norādes"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"pielāgot fona tapetes lielumu"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ļauj lietotnei iestatīt sistēmas tapetes izmēru norādes."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"atiestatīt sistēmu uz rūpnīcas noklusējuma iestatījumiem"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Ļauj lietotnei pilnībā atiestatīt sistēmas rūpnīcas iestatījumus, dzēšot visus datus, konfigurāciju un instalētās lietotnes."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Ļauj lietotnei mainīt tālruņa laika joslu."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"darboties kā AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Ļauj lietotnei zvanīt uz AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"atklāt zināmus kontus"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"atrast kontus ierīcē"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Ļauj lietotnei iegūt planšetdatoram zināmo kontu sarakstu."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Ļauj lietotnei iegūt tālrunim zināmo kontu sarakstu."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"darboties kā konta autentificētājam"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"izveidot kontus un iestatīt paroles"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Ļauj lietotnei izmantot AccountManager konta autentificētāja iespējas, tostarp veidot kontus un iegūt un iestatīt to paroles."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"pārvaldīt kontu sarakstu"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"pievienot vai noņemt kontus"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Ļauj lietotnei veikt tādas darbības kā kontu pievienošana un noņemšana, kā arī paroles dzēšana."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"izmantot konta autentifikācijas akreditācijas datus"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"izmantot ierīcē esošos kontus"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Ļauj lietotnei pieprasīt autentifikācijas pilnvaras."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"skatīt tīkla stāvokli"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"skatīt tīkla savienojumus"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Ļauj lietotnei skatīt visu tīklu statusu."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"pilnīga interneta piekļuve"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Ļauj lietotnei izveidot tīkla ligzdas."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ļauj lietotnei mainīt piesaistes tīkla savienojamības statusu."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"mainīt fona datu lietojuma iestatījumu"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Ļauj lietotnei mainīt fona datu lietošanas iestatījumu."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"skatīt Wi-Fi stāvokli"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"skatīt Wi-Fi savienojumus"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Ļauj lietotnei skatīt informāciju par Wi-Fi savienojuma statusu."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"mainīt Wi-Fi stāvokli"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"izveidot un pārtraukt Wi-Fi savienojumu"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Ļauj lietotnei izveidot savienojumu no Wi-Fi piekļuves punktiem un pārtraukt to, kā arī veikt izmaiņas konfigurētajos Wi-Fi tīklos."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"atļaut Wi-Fi multiraides uztveršanu"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Ļauj lietotnei saņemt pakotnes, kas nav tieši adresētas ierīcei. Tas var būt noderīgi, atklājot tuvumā piedāvātos pakalpojumus. Patērē vairāk enerģijas nekā režīms, kas nav multiraides režīms."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth administrēšana"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"piekļūt Bluetooth iestatījumiem"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ļauj lietotnei konfigurēt vietējo Bluetooth planšetdatoru, kā arī atklāt attālas ierīces un savienot tās pārī."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ļauj lietotnei konfigurēt vietējo Bluetooth tālruni, kā arī atklāt attālas ierīces un savienot tās pārī."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX statusa skatīšana"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Skatīt WiMAX savienojumus"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Ļauj lietotnei skatīt informāciju par WWiMAX statusu."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX statusa mainīšana"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Ļauj lietotnei izveidot un pārtraukt savienojumu ar WiMAX tīklu."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"izveidot Bluetooth savienojumus"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"savienot pārī ar Bluetooth ierīcēm"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Ļauj lietotnei skatīt vietējā Bluetooth planšetdatora konfigurāciju, kā arī veidot un pieņemt savienojumus ar pārī savienotām ierīcēm."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Ļauj lietotnei skatīt vietējā Bluetooth tālruņa konfigurāciju, kā arī veidot un pieņemt savienojumus ar pārī savienotām ierīcēm."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontrolē tuvlauka saziņu"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Ļauj lietotnei sazināties ar tuva darbības lauka sakaru (Near Field Communication — NFC) atzīmēm, kartēm un lasītājiem."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"atspējot atslēgas slēgu"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"atspējot ekrāna bloķēšanu"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Ļauj lietotnei atspējot taustiņslēgu un jebkuras saistītās paroles drošību. Atļauta gadījuma piemērs: taustiņslēga atspējošana, saņemot ienākošu zvanu, un taustiņslēga atkārtota iespējošana, kad saruna beigusies."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"lasīt sinhronizācijas iestatījumus"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Ļauj lietotnei lasīt sinhronizācijas iestatījumus, piemēram, to, vai ir iespējota sinhronizācija lietotnei Personas."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"rakstīt sinhronizācijas iestatījumus"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ieslēgt un izslēgt sinhronizāciju"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Ļauj lietotnei modificēt sinhronizācijas iestatījumus, piemēram, to, vai ir iespējota sinhronizācija lietotnei Personas."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"lasīt sinhronizācijas statistiku"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Ļauj lietotnei lasīt sinhronizācijas statistiku, piem., notikušās sinhronizācijas vēsturi."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Ļauj lietotnei iegūt informāciju par pašlaik sinhronizētajām plūsmām."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"rakstīt abonētās plūsmas"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ļauj lietotnei modificēt pašreizējās sinhronizētās plūsmas. Ļaunprātīgas lietotnes var mainīt jūsu sinhronizētās plūsmas."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"lasīt lietotāja noteiktu vārdnīcu"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"lasīt vārdnīcai pievienotos vārdus"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Ļauj lietotnei lasīt jebkurus privātu vārdus, nosaukumus un frāzes, ko lietotājs saglabājis savā lietotāja vārdnīcā."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"rakstīt lietotāja noteiktā vārdnīcā"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ļauj lietotnei rakstīt jaunus vārdus lietotāja vārdnīcā."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"lasīt USB atmiņas saturu"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"lasīt SD kartes saturu"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Ļauj liet. lasīt USB atm. sat."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Ļauj lietotnei lasīt SD kartes saturu."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"pārveidot/dzēst USB kr. sat."</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"pārveidot/dzēst SD kartes saturu"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lasīt USB atmiņas saturu"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lasīt SD kartes saturu"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Ļauj lasīt USB: foto un multiv."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Ļauj lietotnei lasīt SD kartes saturu, kurā var būt fotoattēli un multivide."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"mainīt vai dzēst USB atm. sat."</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"mainīt vai dzēst SD kartes saturu"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ļauj lietotnei rakstīt USB atmiņā."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Ļauj lietotnei rakstīt SD kartē."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"pārv./dz.datu n.iekš.atm.sat."</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Tālrunī nav SIM kartes."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Ievietojiet SIM karti."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Nav SIM kartes, vai arī to nevar nolasīt. Ievietojiet SIM karti."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Jūsu SIM karte ir neatgriezeniski atspējota."\n"Sazinieties ar savu bezvadu pakalpojumu sniedzēju, lai iegūtu citu SIM karti."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Iepriekšējā ieraksta poga"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Nākamā ieraksta poga"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"rakstzīme"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"vārds"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"saite"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"rindiņa"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> (<xliff:g id="AMPM">%P</xliff:g>)"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> (<xliff:g id="AMPM">%p</xliff:g>)"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Rūpnīcas pārbaude neizdevās"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Pagasts"</string> <string name="autofill_area" msgid="3547409050889952423">"Reģions"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirāts"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lasīt pārlūkprogrammas vēsturi un grāmatzīmes"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lasīt tīmekļa grāmatzīmes un vēsturi"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Ļauj lietotnei lasīt visus URL, kas atvērti pārlūkprogrammā, kā arī visas pārlūkprogrammas grāmatzīmes."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"rakstīt pārlūkprogrammas vēsturi un grāmatzīmes"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"rakstīt tīmekļa grāmatzīmes un vēsturi"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Ļauj lietotnei modificēt planšetdatorā saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Ļaunprātīgas lietotnes to var izmantot, lai dzēstu vai modificētu pārlūkprogrammas datus."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Ļauj lietotnei modificēt tālrunī saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Ļaunprātīgas lietotnes to var izmantot, lai dzēstu vai modificētu pārlūkprogrammas datus."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"iestatīt trauksmi modinātājpulkstenī"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"iestatīt modinātāju"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Ļauj lietotnei iestatīt signālu instalētajā modinātājpulksteņa lietotnē. Dažās modinātājpulksteņu lietotnēs šo funkciju, iespējams, nevar ieviest."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"pievienot balss pastu"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ļauj lietotnei pievienot ziņojumus jūsu balss pasta iesūtnei."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Iestatīt"</string> <string name="date_time_done" msgid="2507683751759308828">"Gatavs"</string> <string name="default_permission_group" msgid="2690160991405646128">"Noklusējums"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"JAUNA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"JAUNA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Atļaujas nav nepieciešamas."</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Slēpt"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Rādīt visu"</b></string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index c103a5c9da90..8d3de4b70443 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tablet anda akan dimatikan."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefon anda akan dimatikan."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Adakah anda mahu menutup?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"But semula ke mod selamat"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Adakah anda mahu but semula ke dalam mod selamat? Ini akan melumpuhkan semua aplikasi pihak ketiga yang telah anda pasang. Semua aplikasi itu akan dipulihkan semula apabila anda membut semula."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Baru-baru ini"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Tiada apl terbaharu"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Pilihan tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Mesej anda"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Membaca dan menulis SMS, e-mel, dan mesej lain."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Maklumat peribadi anda"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Akses langsung kepada kenalan dan kalendar anda yang disimpan dalam tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Akses langsung kepada kenalan dan kalendar yang disimpan pada telefon."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Lokasi anda"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Pantau lokasi fizikal anda."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Komunikasi rangkaian"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Akses pelbagai ciri rangkaian."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Akaun anda"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Akses akaun yang tersedia."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kawalan perkakasan"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Akses dan kawalan peringkat lebih rendah bagi sistem."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Alatan pembangunan"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Ciri hanya diperlukan untuk pembangun apl."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Storan"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Akses storan USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Akses kad SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Membenarkan apl menjadi bar status."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"kembangkan/runtuhkan bar status"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Membenarkan apl mengembangkan atau meruntuhkan bar status."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"sekat panggilan keluar"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"tukar laluan panggilan keluar"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Membenarkan apl untuk memproses panggilan keluar dan menukar nombor yang perlu didail. Apl hasad boleh memantau, mengalih, atau menghalang panggilan keluar."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"menerima SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"terima mesej teks (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Membenarkan apl untuk menerima dan memproses mesej SMS. Apl hasad boleh memantau mesej anda atau memadamnya tanpa menunjukkannya kepada anda."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"terima MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"terima mesej teks (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Membenarkan apl untuk menerima dan memproses mesej MMS. Apl hasad boleh memantau mesej anda atau memadamnya tanpa menunjukkannya kepada anda."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"terima siaran kecemasan"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Membenarkan apl untuk menerima dan memproses mesej siaran kecemasan. Kebenaran ini hanya tersedia kepada apl sistem."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Membenarkan apl untuk menghantar mesej SMS. Apl hasad boleh menyebabkan anda kehilangan wang dengan menghantar mesej tanpa pengesahan anda."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"hantar mesej SMS tanpa pengesahan"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Membenarkan apl untuk menghantar mesej SMS. Apl hasad boleh menyebabkan anda kehilangan wang dengan menghantar mesej tanpa pengesahan anda."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"baca SMS atau MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"baca mesej teks anda (SMS atau MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Membenarkan apl untuk membaca mesej SMS yang disimpan pada tablet atau kad SIM anda. Apl hasad boleh membaca mesej sulit anda."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Membenarkan apl untuk membaca mesej SMS yang disimpan pada telefon atau kad SIM anda. Apl hasad boleh membaca mesej sulit anda."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"edit SMS atau MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"edit mesej teks (SMS atau MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Membenarkan apl untuk menulis kepada mesej SMS yang disimpan pada tablet atau kad SIM anda. Apl hasad boleh memadam mesej anda."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Membenarkan apl untuk menulis kepada mesej SMS yang disimpan pada telefon atau kad SIM anda. Apl hasad boleh memadam mesej anda."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"terima WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"terima mesej teks (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Membenarkan apl untuk menerima dan memproses mesej WAP. Apl hasad boleh memantau mesej anda atau memadamnya tanpa menunjukkannya kepada anda."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"dapatkan semula apl yang sedang dijalankan"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Membenarkan apl untuk mendapatkan maklumat tugasan yang sedang dan baru berjalan. Apl hasad boleh mendapat maklumat peribadi tentang apl lain."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"dapatkan butiran apl yang berjalan"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Membenarkan apl untuk mendapatkan maklumat terperinci tentang tugasan yang sedang dan baru berjalan. Apl hasad boleh mendapat maklumat peribadi tentang apl lain."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"susun semula tertib apl yang dijalankan"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Membenarkan apl untuk memindahkan tugasan ke latar depan dan latar belakang. Apl hasad boleh memaksa diri mereka ke hadapan tanpa kawalan anda."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"hentikan apl yang sedang dijalankan"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Membenarkan apl mengawal mod keserasian skrin aplikasi lain. Aplikasi hasad mungkin mematahkan kelakuan aplikasi lain."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"dayakan penyahpepijatan apl"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Membenarkan apl untuk menghidupkan penyahpepijatan untuk apl lain. Apl hasad boleh menggunakannya untuk menghapuskan apl lain."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"tukar tetapan UI anda"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"tukar tetapan paparan sistem"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Membenarkan apl mengubah konfigurasi semasa seperti tempat peristiwa atau saiz fon keseluruhan."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"dayakan mod kereta"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Membenarkan apl mendayakan mod kereta."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"bunuh proses latar belakang"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"tutup apl lain"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Membenarkan apl untuk membunuh proses latar belakang apl lain, walaupun memori tidak rendah."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"paksa apl lain supaya berhenti"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Membenarkan apl menghentikan apl lain secara paksa."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Membenarkan apl untuk menyiarkan pemberitahuan bahawa mesej WAP PUSH telah diterima. Apl hasad boleh menggunakannya untuk memalsukan penerimaan mesej MMS atau secara diam-diam menggantikan kandungan mana-mana laman web dengan varian hasad."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"hadkan bilangan proses yang dijalankan"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Membenarkan apl untuk mengawal bilangan maksimum proses yang akan berlangsung. Tidak sekali-kali diperlukan untuk apl biasa."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"jadikan semua apl latar belakang ditutup"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"memaksa apl latar belakang untuk menutup"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Membenarkan apl untuk mengawal sama ada aktiviti sentiasa selesai sebaik sahaja ia pergi ke latar belakang. Tidak sekali-kali diperlukan untuk apl biasa."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"ubah suai statistik bateri"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Membenarkan apl untuk mengubah suai statistik bateri yang dikumpul. Bukan untuk kegunaan apl biasa."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Membenarkan apl untuk memulakan UI pengesahan sandaran penuh. Bukan untuk diguakan oleh mana-mana apl."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"memapaparkan tetingkap yang tiada kebenaran"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Membenarkan apl untuk membuat tetingkap yang dimaksudkan untuk digunakan oleh antara muka pengguna sistem dalaman. Bukan untuk digunakan oleh apl biasa."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"paparkan amaran peringkat sistem"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"lukis atas apl lain"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Membenarkan apl untuk menunjukkan tetingkap amaran sistem. Apl hasad boleh mengambil alih keseluruhan skrin."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"mengubah suai kelajuan animasi global"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Membenarkan apl menukar kelajuan animasi global (animasi yang lebih laju atau lebih perlahan) pada bila-bila masa sahaja."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Membenarkan aplikasi memberikan atau membatalkan kebenaran khusus untuk aplikasi itu sendiri atau aplikasi lain. Aplikasi berniat jahat boleh menggunakan perkara ini untuk mengakses ciri yang belum anda berikan padanya."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tetapkan keutamaan apl"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Membenarkan apl untuk mengubah suai apl pilihan anda. Apl hasad secara diam-diam boleh menukar apl yang dijalankan, menipu apl anda yang sedia ada untuk mengumpul data peribadi daripada anda."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"mengubah suai tetapan sistem global"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"ubah suai tetapan sistem"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Membenarkan apl untuk mengubah suai data tetapan sistem. Apl hasad boleh merosakkan konfigurasi sistem anda."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"ubah suai tetapan sistem selamat"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Membenarkan apl untuk mengubah suai data tetapan selamat sistem. Bukan untuk digunakan oleh apl biasa."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"mengubah suai peta perkhidmatan Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Membolehkan apl mengubah suai peta perkhidmatan Google. Bukan untuk kegunaan oleh apl biasa."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"mulakan secara automatik semasa but"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"jalankan pada permulaan"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Membenarkan apl untuk memulakan dirinya sendiri sebaik sahaja sistem selesai mengebut. Ini boleh membuat masa untuk menghidupkan tablet menjadi lebih lama dan membenarkan apl untuk memperlahankan keseluruhan tablet dengan sentiasa berjalan."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Membenarkan apl bermula sendiri sebaik sahaja sistem telah selesai mengebut. Ini boleh menjadikannya mengambil masa yang lama untuk menghidupkan telefon dan membenarkan apl untuk melambatkan keseluruhan telefon dengan sentiasa berjalan."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"hantar siaran lekit"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Membolehkan apl untuk menghantar siaran melekit, yang kekal selepas siaran berakhir. Apl hasad boleh membuat tablet perlahan atau tidak stabil dengan menyebabkannya menggunakan memori yang terlalu banyak."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Membolehkan apl untuk menghantar siaran melekit, yang kekal selepas siaran berakhir. Apl hasad boleh membuat telefon perlahan atau tidak stabil dengan menyebabkannya menggunakan memori yang terlalu banyak."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"baca data kenalan"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"tulis data kenalan"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"baca kenalan anda"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Membenarkan apl membaca semua data tentang kenalan anda yang disimpan pada tablet anda, termasuk kekerapan anda memanggil, menghantar e-mel atau berkomunikasi dengan cara yang lain dengan individu tertentu. Ini membantu auto-pelengkapan alamat e-mel dan ciri mudah lain. Apl hasad boleh menggunakan kebenaran ini untuk menghantar data kenalan anda kepada orang lain."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Membenarkan apl membaca semua data tentang kenalan anda yang disimpan pada telefon anda, termasuk kekerapan anda memanggil, menghantar e-mel atau berkomunikasi dengan cara yang lain dengan individu tertentu. Ini membantu auto-pelengkapan alamat e-mel dan ciri mudah lain. Apl hasad boleh menggunakan kebenaran ini untuk menghantar data kenalan anda kepada orang lain."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"ubah suai kenalan anda"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Membolehkan aplikasi untuk mengubah suai data mengenai kenalan anda yang disimpan pada tablet anda, termasuk kekerapan yang anda telah dipanggil, mel, atau disampaikan dengan cara yang lain dengan individu-individu tertentu. Ini membantu dengan autopelengkapan alamat e-mel dan ciri-ciri mudah lain. Aplikasi berniat jahat boleh menggunakan ini untuk memadam atau mengubah suai data kenalan anda."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Membenarkan apl mengubah suai data tentang kenalan anda yang disimpan pada telefon anda, termasuk kekerapan anda memanggil, menghantar e-mel atau berkomunikasi dengan cara yang lain dengan individu tertentu. Ini membantu auto-pelengkapan alamat e-mel dan ciri mudah lain. Apl hasad boleh menggunakan kebenaran ini untuk memadam atau mengubah suai data kenalan anda."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"baca log panggilan"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Membenarkan apl membaca log panggilan tablet anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk menghantar data anda kepada orang lain."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Membenarkan apl membaca log panggilan telefon anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk menghantar data anda kepada orang lain."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"tulis log panggilan"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Membenarkan apl untuk mengubah suai panggilan tablet anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai log panggilan anda."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Membenarkan apl untuk mengubah suai panggilan telefon anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai log panggilan anda."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"baca data profil anda"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"baca kad kenalan anda sendiri"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Membenarkan apl untuk membaca maklumat profil peribadi yang disimpan dalam peranti anda, seperti nama dan maklumat kenalan anda. Ini bermakna apl lain boleh mengenal pasti anda dan menghantar maklumat profil anda kepada orang lain."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"tulis ke data profil anda"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"ubah suai kad kenalan sendiri"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Membenarkan apl untuk menukar atau menambah maklumat profil peribadi yang disimpan dalam peranti anda, seperti nama dan maklumat kenalan anda. Ini bermakna apl lain boleh mengenal pasti anda dan menghantar maklumat profil anda kepada orang lain."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"baca aliran sosial anda"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Membenarkan apl mengakses dan menyegerakkan kemas kini sosial daripada rakan-rakan anda. Apl hasad boleh menggunakannya untuk membaca komunikasi peribadi di antara anda dan rakan-rakan anda pada rangkaian sosial."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"paksa telefon but semula"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Membenarkan apl memaksa tablet untuk but semula."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Membenarkan apl memaksa telefon untuk but semula."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"melekapkan dan menyahlekapkan sistem fail"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"akses sistem fail storan USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"akses sistem fail Kad SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Membenarkan apl melekapkan dan menyahlekapkan sistem fail untuk storan boleh alih."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"format storan luaran"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"padamkan storan USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"padamkan kad SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Membenarkan apl memformatkan storan boleh alih."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"dapatkan maklumat tentang storan dalaman"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Membenarkan apl mendapatkan maklumat dari storan dalaman."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Membenarkan apl melekapkan/menyahlekapkan storan dalaman."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"namakan semula storan dalaman"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Membenarkan apl menamakan semula storan dalaman."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kawal penggetar"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kawal getaran"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Membenarkan apl mengawal penggetar."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"mengawal lampu suluh"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Membenarkan apl mengawal lampu suluh."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Membenarkan apl untuk memberitahu sistem widget mana yang boleh digunakan oleh apl yang mana. Apl dengan kebenaran ini boleh memberi akses kepada data peribadi kepada apl lain. Bukan untuk digunakan oleh apl biasa."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ubah suai keadaan telefon"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Membenarkan apl untuk mengawal ciri-ciri telefon peranti. Apl dengan kebenaran ini boleh menukar rangkaian, menghidupkan dan mematikan radio telefon dan sebagainya tanpa memberitahu anda."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"baca keadaan dan identiti telefon"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"baca status dan identiti telefon"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Membenarkan apl untuk mengakses ciri-ciri telefon peranti. Apl dengan kebenaran ini boleh menentukan nombor telefon dan nombor siri telefon ini, sama ada panggilan aktif, nombor kepada panggilan itu disambungkan dan sebagainya."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"menghalang tablet daripada tidur"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"halang telefon daripada tidur"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Menjalankan sebagai ujian pengilang peringkat rendah, membenarkan akses penuh kepada perkakasan telefon. Hanya tersedia apabila telefon dijalankan dalam mod ujian pengilang."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"tetapkan kertas dinding"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Membenarkan apl menetapkan kertas dinding sistem."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"tetapkan pembayang saiz kertas dinding"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"laraskan saiz kertas dinding anda"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Membenarkan apl menetapkan pembayang saiz kertas dinding sistem."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"menetapkan semula sistem kepada lalai kilang"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Membenarkan apl untuk menetapkan semula sistem kepada tetapan kilang sepenuhnya, memadam semua data, konfigurasi, dan apl yang dipasang."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Membenarkan apl menukar zon waktu telefon."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"bertindak sebagai PerkhidmatanPengurusAkaun"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Membenarkan apl membuat panggilan ke Pengesah Akaun."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"menemui akaun yang diketahui"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"cari akaun pada peranti"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Membenarkan apl mendapatkan senarai akaun yang diketahui tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Membenarkan apl mendapatkan senarai akaun yang diketahui telefon."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"sebagai pengesah akaun"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"buat akaun dan tetapkan kata laluan"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Membenarkan apl menggunakan kebolehan pengesah akaun Pengurus Akaun, termasuk membuat akaun dan mendapatkan serta menetapkan kata laluannya."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"urus senarai akaun"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"tambah atau alih keluar akaun"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Membenarkan apl melaksanakan operasi seperti menambah dan mengalih keluar akaun dan memadamkan kata laluannya."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"menggunakan bukti kelayakan pengesahan akaun"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"guna akaun pada peranti"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Membenarkan apl meminta token pengesahan."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"lihat keadaan rangkaian"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"lihat sambungan rangkaian"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Membenarkan apl melihat keadaan semua rangkaian."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"akses penuh Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Membenarkan apl membuat soket rangkaian."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Membenarkan apl untuk mengubah keadaan kesambungan rangkaian tambatan."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"tukar tetapan penggunaan data latar belakang"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Membenarkan apl menukar tetapan penggunaan data latar belakang."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"lihat keadaan Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"lihat sambungan Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Membenarkan apl melihat maklumat mengenai keadaan Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"ubah keadaan Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"sambung dan putuskan dari Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Membenarkan apl menyambung ke dan memutuskan sambungan dari titik capaian Wi-Fi dan membuat perubahan pada rangkaian Wi-Fi yang telah dikonfigurasikan."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"benarkan penerimaan Wi-Fi Multisiar"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Membenarkan apl menerima bingkisan yang tidak ditujukan secara langsung ke peranti anda. Hal ini boleh menjadi berguna apabila menemui perkhidmatan yang ditawarkan di kawasan berdekatan. Ia menggunakan lebih banyak kuasa daripada mod bukan multisiar."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Pentadbiran Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"akses tetapan Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Membenarkan apl mengkonfigurasikan tablet Bluetooth setempat dan menemui serta berpasangan dengan peranti jauh."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Membenarkan apl mengkonfigurasikan telefon Bluetooth setempat dan menemui serta berpasangan dengan peranti jauh."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Lihat keadaan WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Lihat sambungan WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Membenarkan apl untuk melihat maklumat mengenai keadaan WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Tukar keadaan WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Membenarkan apl untuk menyambung dan memutuskan sambungan dari rangkaian WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"buat sambungan Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"berpasangan dengan peranti Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Membenarkan apl melihat konfigurasi tablet Bluetooth setempat dan membuat dan menerima sambungan dengan peranti yang dipasangkan."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Membenarkan apl melihat konfigurasi telefon Bluetooth setempat dan membuat dan menerima sambungan dengan peranti yang dipasangkan."</string> <string name="permlab_nfc" msgid="4423351274757876953">"mengawal Komunikasi Medan Dekat"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Membenarkan apl berkomunikasi dengan teg, kad dan pembaca Komunikasi Medan Dekat (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"lumpuhkan kunci kekunci"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"lumpuhkan kunci skrin anda"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Membenarkan apl melumpuhkan kunci kekunci dan sebarang keselamatan kata laluan yang berkaitan. Contoh yang berkaitan ialah telefon melumpuhkan kunci kekunci apabila menerima panggilan telefon masuk kemudian mendayakan semula kunci kekunci apabila panggilan selesai."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"membaca tetapan penyegerakan"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Membenarkan apl untuk membaca tetapan penyegerakan, seperti sama ada penyegerakan didayakan untuk apl Orang."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"tulis tetapan penyegerakan"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"togol segerak hidup dan mati"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Membenarkan apl untuk mengubah suai tetapan penyegerakan, seperti sama ada penyegerakan didayakan untuk apl Orang."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"baca statistik penyegerakan"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Membenarkan apl membaca statistik penyegerakan; cth., sejarah penyegerakan yang telah berlaku."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Membenarkan apl mendapatkan butiran mengenai suapan tersegerak semasa."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"tulis suapan yang dilanggan"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Membenarkan apl untuk mengubah suai suapan segerakan semasa anda. Apl hasad boleh menukar suapan anda yang disegerakkan."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"baca kamus ditakrifkan pengguna"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"baca istilah yang anda tambahkan kepada kamus"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Membenarkan apl membaca sebarang kata-kata peribadi, nama dan frasa yang mungkin telah disimpan oleh pengguna dalam kamus pengguna."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"tulis ke kamus yang ditakrifkan pengguna"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Membenarkan apl menulis perkataan baharu ke dalam kamus pengguna."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"baca kandungan storan USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"baca kandungan kad SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Membenarkan apl membaca kandungan storan USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Membenarkan apl membaca kandungan kad SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"ubah suai/padam kdgn storn USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ubah suai/padamkan kandungan kad SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"baca kandungan storan USB anda"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"baca kandungan kad SD anda"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Membolehkan apl membaca kandungan storan USB, yang mungkin termasuk foto dan media."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Membolehkan apl membaca kandungan kad SD, yang mungkin termasuk foto dan media."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ubah suai atau padam kandungan storan USB anda"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"ubah suai atau padam kandungan kad SD anda"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Membenarkan apl menulis ke storan USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Membenarkan apl menulis ke kad SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"ubh suai/pdm kdg strn mdia dlm"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Kad SIM tiada dalam telefon."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Masukkan kad SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Kad SIM tiada atau tidak boleh dibaca. Sila masukkan kad SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Kad SIM anda telah dilumpuhkan secara kekal."\n" Hubungi pembekal perkhidmatan wayarles anda untuk mendapatkan kad SIM lain."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Butang lagu sebelumnya"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Butang lagu seterusnya"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"watak"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"perkataan"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"pautan"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"baris"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Ujian kilang gagal"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Kariah"</string> <string name="autofill_area" msgid="3547409050889952423">"Kawasan"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emiriah"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"baca sejarah dan penanda halaman Penyemak imbas"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"baca penanda buku dan sejarah Web anda"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Membenarkan apl membaca semua URL yang telah dilawati oleh Penyemak Imbas dan semua penanda halaman Penyemak Imbas."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"tulis sejarah dan penanda halaman Penyemak Imbas"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"tulis penanda buku dan sejarah web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Membenarkan apl untuk mengubah suai sejarah atau penanda buku Penyemak Imbas yang disimpan di dalam tablet anda. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai data Penyemak Imbas anda."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Membenarkan apl untuk mengubah suai sejarah atau penanda buku Penyemak Imbas yang disimpan di dalam telefon anda. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai data Penyemak Imbas anda."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"menetapkan penggera pada jam penggera"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"tetapkan penggera"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Membenarkan apl untuk menetapkan penggera dalam apl penggera jam yang dipasang. Sesetengah applikasi jam penggera tidak boleh melaksanakan ciri ini."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"tambah mel suara"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Membenarkan apl untuk menambahkan mesej pada peti masuk mel suara anda."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Tetapkan"</string> <string name="date_time_done" msgid="2507683751759308828">"Selesai"</string> <string name="default_permission_group" msgid="2690160991405646128">"Lalai"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BAHARU: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"BAHARU: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Tiada kebenaran diperlukan"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Sembunyikan"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Tunjukkan semua"</b></string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index f3854d17787c..66cc3f8b97a6 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -168,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Meldinger"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Tillatelse til å lese og skrive SMS-ene dine, e-post og andre meldinger."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Personlig informasjon"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkte tilgang til dine kontakter og kalender lagret på nettbrettet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkte tilgang til kontakter og kalendre lagret på telefonen."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Din posisjon"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Overvåking av telefonens fysiske posisjon."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Nettverkstilgang"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Tilgang til ulike nettverksfunksjoner."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Google-kontoer"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Tilgang til tilgjengelige Google-kontoer."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Maskinvarekontroll"</string> @@ -184,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Lavnivå tilgang og kontroll over systemet."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Utviklingsverktøy"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funksjoner som bare apputviklere trenger."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Tilgang til USB-lagring."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Tilgang til minnekortet."</string> @@ -193,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Gir appen tillatelse til å vises i statusfeltet."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"utvide/slå sammen statusfeltet"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Lar appen utvide eller skjule statuslinjen."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"avskjære utgående anrop"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"omdirigerer utgående anrop"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Lar appen behandle utgående anrop og endre nummeret som skal ringes opp. Ondsinnede apper kan overvåke, viderekoble eller hindre utgående anrop."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"motta SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"mottar tekstmeldinger (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Lar appen motta og behandle SMS-meldinger. Ondsinnede apper kan overvåke meldingene dine eller slette dem uten å vise dem til deg."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"motta MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"mottar tekstmeldinger (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Lar appen motta og behandle MMS-meldinger. Ondsinnede apper kan overvåke meldingene dine eller slette dem uten å vise dem til deg."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"motta nødkringkastinger"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Lar appen motta og behandle nødkringkastingsmeldinger. Denne tillatelsen er bare tilgjengelig for systemapper."</string> @@ -207,31 +275,33 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Lar appen sende SMS-meldinger. Ondsinnede apper kan koste deg penger ved å sende meldinger uten din bekreftelse."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"send tekstmeldinger uten godkjenning"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Lar appen sende SMS-meldinger. Ondsinnede apper kan koste deg penger ved å sende meldinger uten din bekreftelse."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"lese SMS- og MMS-meldinger"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"leser tekstmeldinger (SMS eller MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Lar appen lese SMS-meldingene som er lagret på nettbrettet eller SIM-kortet ditt. Ondsinnede apper kan få tilgang til å lese konfidensielle meldinger."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Lar appen lese SMS-meldingene som er lagret på telefonen eller SIM-kortet ditt. Ondsinnede apper kan få tilgang til å lese konfidensielle meldinger."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"redigere SMS- og MMS-meldinger"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"redigerer tekstmeldingene dine (SMS eller MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Lar appen skrive til SMS-meldinger som er lagret på nettbrettet eller SIM-kortet ditt. Ondsinnede apper kan komme til å slette meldingene dine."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Lar appen skrive til SMS-meldinger som er lagret på telefonen eller SIM-kortet ditt. Ondsinnede apper kan komme til å slette meldingene dine."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"motta WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"mottar tekstmeldinger (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Lar appen motta og behandle WAP-meldinger. Ondsinnede apper kan overvåke meldingene dine eller slette dem uten å vise dem til deg."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"hente apper som kjører"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Lar appen hente ut informasjon om oppgaver som kjører eller nylig har kjørt. Ondsinnede apper kan bruke dette til å oppdage privat informasjon om andre apper."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hente informasjon om apper som kjører"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillater at appen henter ut informasjon om oppgaver som kjører eller nylig har kjørt. Skadelige apper kan bruke dette til å oppdage privat informasjon om andre apper."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"Endre rekkefølge på apper som kjører"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Lar appen flytte oppgaver til forgrunnen eller bakgrunnen. Ondsinnede apper kan tvinge seg frem til forgrunnen utenfor din kontroll."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"avslutte apper som kjører"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Lar appen fjerne oppgaver og avslutte apper. Ondsinnede apper kan forstyrre atferden til andre apper."</string> - <string name="permlab_startAnyActivity" msgid="2918768238045206456">"igangsetting av aktivitet"</string> + <string name="permlab_startAnyActivity" msgid="2918768238045206456">"igangsetting av aktiviteter"</string> <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Tillater at appen kan starte en aktivitet, uavhengig av tillatelsesbeskyttelse og eksportstatus."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"angi skjermkompatibilitet"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Lar appen kontrollere modus for skjermkompatibilitet i andre apper. Skadelige apper kan ødelegge funksjoner i andre apper."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"aktivere feilsøking av app"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Lar appen slå av feilsøking for andre apper. Ondsinnede apper kan bruke dette til å avslutte andre apper."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"endre innstillingene for brukergrensesnitt"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"endrer systemets skjerminnstillinger"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Lar appen endre den nåværende konfigurasjonen, som for eksempel språk eller generell skriftstørrelse."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktiver bilmodus"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Lar appen aktivere bilmodus."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"avslutt bakgrunnsprosesser"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"lukker andre apper"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Lar appen avslutte bakgrunnsprosessene til andre apper, selv når det ikke er lite ledig minne."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"tvinge andre apper til å stoppe"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Lar appen tvinge andre apper til å stoppe."</string> @@ -255,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Lar appen kringkaste et varsel om at en WAP-PUSH-melding er mottatt. Ondsinnede apper kan bruke dette til å forfalske MMS-meldingskvitteringer, eller ubemerket erstatte innholdet av alle slags nettsider med ondsinnede varianter."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"begrense antallet kjørende prosesser"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Lar appen kontrollere det maksimale antallet prosesser som kjører. Aldri nødvendig for vanlige apper."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"lukke alle bakgrunnsapper"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"tvinger bakgrunnsapper til å lukkes"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Lar appen kontrollere hvorvidt aktiviteter alltid er fullført så snart de flyttes til bakgrunnen. Aldri nødvendig for vanlige apper."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"endre batteristatistikk"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Lar appen endre innsamlet batteristatistikk. Ikke beregnet på vanlige apper."</string> @@ -265,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Lar appen starte det fullstendige grensesnittet for bekreftelse av sikkerhetskopiering. Skal ikke måtte brukes av noen apper."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"vis uautoriserte vinduer"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Lar appen opprette vinduer som er ment for å brukes av brukergrensesnittet til det interne systemet. Ikke beregnet på vanlige apper."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"vise advarsler på systemnivå"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tegner over andre apper"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Lar appen vise systemvarselsvinduer. Ondsinnede apper kan bruke dette til å ta over hele skjermen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"endre global animasjonshastighet"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Lar appen når som helst endre den globale animasjonshastigheten (raskere eller langsommere animasjoner)."</string> @@ -327,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Lar programmer gi eller trekke tilbake spesielle tillatelser for eget bruk eller for andre programmer. Skadelige programmer kan bruke dette for å få tilgang til funksjoner de ikke skal ha tilgang til."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"angi foretrukne apper"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Lar appen endre de foretrukne appene dine. Ondsinnede apper kan ubemerket endre apper som kjøres, og forfalske eksisterende apper til å samle private data fra deg."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"endre globale systeminnstillinger"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"endrer systeminnstillingene"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Lar appen endre dataene i systeminnstillingene. Ondsinnede apper kan bruke dette til å skade systemkonfigurasjonen."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"endre sikre systeminnstillinger"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Lar appen endre dataene for systemets sikre innstillinger. Ikke beregnet på vanlige apper."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"redigere Google-tjenestekartet"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Lar appen endre Google-tjenestekartet. Ikke beregnet på vanlige apper."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"starte automatisk sammen med systemet"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"kjører fra oppstart"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Lar appen starte seg selv så snart systemet har startet opp. Dette kan føre til lengre oppstartstid for nettbrettet, i tillegg til at nettbrettet kan bli generelt tregere av at appen alltid kjører."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Lar appen starte seg selv så snart systemet har startet opp. Dette kan føre til lengre oppstartstid for telefonen, i tillegg til at telefonen kan bli generelt tregere av at appen alltid kjører."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"sende varige kringkastinger"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Lar appen sende hengende kringkastinger («sticky broadcasts») som blir værende etter at kringkastingen er over. Ondsinnede apper kan gjøre nettbrettet tregt eller ustabilt ved å bruke for mye minne."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Lar appen sende hengende kringkastinger («sticky broadcasts») som blir værende etter at kringkastingen er over. Ondsinnede apper kan gjøre telefonen treg eller ustabil ved å bruke for mye minne."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"lese kontaktinformasjon"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"skrive kontaktinformasjon"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"leser kontaktene dine"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Tillater appen å lese alle opplysningene om kontaktene lagret på nettbrettet ditt – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å sende kontaktopplysningene dine til andre."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Tillater appen å lese alle opplysningene om kontaktene lagret på telefonen din – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke personer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å sende kontaktdata til andre."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"endrer kontaktene dine"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Tillater appen å endre opplysningene om kontaktene lagret på nettbrettet – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å slette eller endre kontaktopplysningene dine."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Tillater appen å endre opplysningene om kontaktene lagret på telefonen din – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å slette eller endre kontaktopplysningene dine."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"lar appen lese anropsloggen"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Lar appen lese nettbrettets samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å sende dataene dine til andre personer."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Lar appen lese telefonens samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å sende dataene dine til andre personer."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"lar appen endre samtaleloggen"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Lar appen endre nettbrettets samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å slette eller endre samtaleloggen din."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Lar appen endre telefonens samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å slette eller endre samtaleloggen din."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"lese profildataene dine"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"leser ditt eget kontaktkort"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Lar appen lese personlige profilinformasjon som er lagret på enheten, som for eksempel navn og kontaktinformasjon. Dette betyr at appen kan identifisere deg og sende profilinformasjonen din til andre."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"skriv til profildataene dine"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"endrer ditt eget kontaktkort"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Lar appen endre eller legge til personlige profilinformasjon som er lagret på enheten, som for eksempel navn og kontaktinformasjon. Dette betyr at andre apper kan identifisere deg og sende profilinformasjonen din til andre."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lese din sosiale strøm"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Gir appen adgang til, og tillatelse til å synkronisere oppdateringer fra deg og vennene dine. Ondsinnede apper kan utnytte denne tillatelsen til å lese privat kommunikasjon mellom deg og vennene dine i sosiale nettverk."</string> @@ -398,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"tvinge omstart av telefon"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Lar appen fremtvinge omstart av nettbrettet."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Lar appen fremtvinge omstart av telefonen."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montere og avmontere filsystemer"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"får tilgang til filsystemet til USB-lagring"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"får tilgang til filsystemet til SD-kort"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Lar appen koble til og fra filsystemer for flyttbar lagring."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatere ekstern lagringsplass"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"tømmer USB-lagring"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"tømmer SD-kort"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Lar appen formatere flyttbare lagringsmedier."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"få informasjon om intern lagring"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Lar appen innhente informasjon om intern lagring."</string> @@ -412,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Lar appen koble intern lagring til eller fra."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"gi nytt navn til intern lagring"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Lar appen gi nytt navn til intern lagring."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kontrollere vibratoren"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kontrollerer vibrasjon"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Lar appen kontrollere vibreringsfunksjonen."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"kontrollere lommelykten"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Lar appen kontrollere lommelykten."</string> @@ -437,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Lar appen fortelle systemet hvilke moduler som kan brukes av hvilke apper. En app som har denne tillatelsen kan gi andre apper tilgang til personlige data. Ikke beregnet på vanlige apper."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"endre telefontilstand"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Lar appen kontrollere telefonfunksjonene til enheten. En app som har denne tillatelsen kan bytte nettverk, slå telefonens radio på og av og lignende, uten å varsle deg i det hele tatt."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"lese telefontilstand og -identitet"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"leser telefonstatus og -identitet"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Gir appen tilgang til telefonfunksjonene på enheten. En app som har denne tillatelsen kan fastslå telefonnummeret og serienummeret til telefonen, hvorvidt en samtale er aktiv, telefonnummeret samtalen er koblet til og lignende."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"hindre nettbrettet fra å gå over til sovemodus"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"forhindre telefonen fra å sove"</string> @@ -452,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Kjøre som en lavnivås produsenttest, med full tilgang til telefonens maskinvare. Kun tilgjengelig når telefonen kjører i produsenttestmodus."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"endre bakgrunnsbilde"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Lar appen angi systembakgrunnen."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"sette størrelseshint for bakgrunn"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"endrer størrelsen på bakgrunnsbildet"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Lar appen angi størrelsestips for systembakgrunnen."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"tilbakestille systemet til fabrikkinnstillinger"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Lar appen gjennomføre fullstendig tilbakestilling til fabrikkstandard, noe som sletter alle data, konfigurasjoner og installerte apper."</string> @@ -464,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Lar appen endre telefonens tidssone."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"fungere som kontoadministrasjonstjenesten"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Lar appen foreta anrop til kontoautentiseringstjenester."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"oppdage kjente kontoer"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"finner kontoer på enheten"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Gir appen tilgang til listen over kontoer som nettbrettet kjenner til."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Gir appen tilgang til listen over kontoer som telefonen kjenner til."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"fungere som en kontogodkjenner"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"oppretter kontoer og angir passord"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Lar appen bruke kontoadministratoren sine rettigheter til kontoautentisering, herunder oppretting av kontoer samt innhenting og angivelse av passord."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"administrere kontolisten"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"legger til eller fjerner kontoer"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Lar appen utføre handlinger som å legge til og fjerne kontoer samt slette passord."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"bruke godkjenningsopplysningene for en konto"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"bruker kontoer på enheten"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Lar appen be om autentiseringstokener."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"se nettverkstilstand"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ser nettverkstilkoblinger"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Lar appen se tilstanden til alle nettverk."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"full internett-tilgang"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Lar appen opprette nettverkskontakter."</string> @@ -485,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Lar appen endre innstillingene for nettverkstilknytning via tethering."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"endre innstilling for bakgrunnsdata"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Lar appen endre innstillingene for bakgrunnsdatabruk."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"se tilstand for trådløse nettverk"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ser Wi-Fi-tilkoblinger"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Lar appen se informasjon om Wi-Fi-statusen."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"endre tilstand for trådløse nettverk"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"kobler til og fra Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Lar appen koble til og fra Wi-Fi-tilgangspunkter, og å gjøre endringer i konfigurerte Wi-Fi-nettverk."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"tillat multicast for trådløse nettverk"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Lar appen motta pakker som ikke er adressert direkte til enheten. Dette kan være nyttig ved leting etter nærliggende tjenester, men bruker mer strøm enn ikke-multikastingsmodus."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth-administrasjon"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"endrer Bluetooth-innstillinger"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Lar appen konfigurere det lokale Bluetooth-nettbrettet, samt oppdage og koble sammen med eksterne enheter."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Lar appen konfigurere den lokale Bluetooth-telefonen, samt oppdage og koble sammen med eksterne enheter."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Se WiMAX-status"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"ser WiMAX-tilkoblinger"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Lar appen se informasjon om WiMAX-statusen."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Endre WiMAX-status"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Lar appen koble til og fra WiMAX-nettverk."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"opprette Bluetooth-tilkoblinger"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"kobler til Bluetooth-enheter"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Lar appen se konfigurasjonen av det lokale Bluetooth-nettbrettet samt opprette og godta tilkoblinger med sammenkoblede enheter."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Lar appen se konfigurasjonen av den lokale Bluetooth-telefonen samt opprette og godta tilkoblinger med sammenkoblede enheter."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontroller overføring av data med NFC-teknologi"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Lar appen kommunisere med etiketter, kort og lesere som benytter NFC-teknologi."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"slå av tastaturlås"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"deaktiverer skjermlåsen"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Lar appen deaktivere tastelåsen og eventuell tilknyttet passordsikkerhet. Et legitimt eksempel på dette er at telefonen deaktiverer tastelåsen når du mottar et innkommende anrop, og deretter aktiverer tastelåsen igjen når samtalen er ferdig."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"lese synkroniseringsinnstillinger"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Lar appen lese synkroniseringsinnstillinger, som for eksempel hvorvidt synkronisering er aktivert for appen Kontakter."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"skrive synkroniseringsinnstillinger"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"slår synkronisering av og på"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Lar appen endre synkroniseringsinnstillingene, som for eksempel hvorvidt synkronisering er på for appen Kontakter."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"lese synkroniseringsstatistikk"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Lar appen lese synkroniseringsstatistikk, for eksempel loggen over alle synkroniseringer som er utført."</string> @@ -515,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Lar appen hente inn detaljer om strømmer som er synkroniserte for øyeblikket."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"endre abonnement på nyhetskilder"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Lar appen endre strømmer som er synkronisert for øyeblikket. Ondsinnede apper kan endre de synkroniserte strømmene dine."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"lese brukerdefinert ordliste"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"leser uttrykkene du har lagt til i ordboken"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Lar appen lese eventuelle private ord, navn og uttrykk som brukeren kan ha lagret i brukerordlisten."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"skrive i brukerdefinert ordliste"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Lar appen skrive nye ord i brukerordlisten."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"lese innhold på USB-lagr."</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"lese innhold på SD-kortet"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Lar appen lese innhold på USB-lager."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Lar appen lese innhold på SD-kortet."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"endre/slette innh. i USB-lagr."</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"redigere/slette innhold på minnekort"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"leser innholdet i USB-lagringen"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"leser innholdet i SD-kortet"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Tillater at appen leser innholdet i USB-lagring, som kan inneholde bilder og medier."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Tillater at appen leser innholdet i SD-kort, som kan inneholde bilder og medier."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"endrer eller sletter innholdet i USB-lagringen"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"endrer eller sletter innholdet i SD-kortet"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Gir appen tillatelse til å skrive til USB-lagringen."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Lar appen skrive til SD-kortet."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"endre eller slette innhold på interne medier"</string> @@ -702,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Ikke noe SIM-kort i telefonen."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Sett inn et SIM-kort."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kort mangler eller er uleselig. Sett inn et SIM-kort."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kortet er deaktivert permanent."\n"Ta kontakt med leverandøren av trådløstjenesten for å få et nytt SIM-kort."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knapp for forrige sang"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knapp for neste sang"</string> @@ -777,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Sogn"</string> <string name="autofill_area" msgid="3547409050889952423">"Område"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lese nettleserens logg og bokmerker"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"leser nettbokmerkene og nettloggen din"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Lar appen lese alle adresser som nettleseren har besøkt, og alle nettleserens bokmerker."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skrive til nettleserens logg og bokmerker"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skriver nettbokmerker og nettlogg"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Lar appen endre nettleserens logg og bokmerker som er lagret på nettbrettet. Ondsinnede apper kan bruke dette til å slette eller endre nettleserens data."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Lar appen endre nettleserens logg og bokmerker som er lagret på telefonen. Ondsinnede apper kan bruke dette til å slette eller endre nettleserens data."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"angi alarm i alarmklokke"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"angir alarm"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Lar appen stille inn alarmen for en installert alarmklokke-app. Enkelte alarmklokke-apper implementerer kanskje ikke denne funksjonen."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"legg til talepost"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Lar appen legge til meldinger i talepostkassen din."</string> @@ -1043,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Lagre"</string> <string name="date_time_done" msgid="2507683751759308828">"Ferdig"</string> <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NYTT: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NYTT: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Trenger ingen rettigheter"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Skjul"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Vis alle"</b></string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 65bc6b0a9b13..b744ad515d81 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -168,12 +168,43 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Uw berichten"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Sms, e-mail en andere berichten lezen en schrijven."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Uw persoonlijke informatie"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Rechtstreekse toegang tot de op uw tablet opgeslagen contacten en agenda."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Rechtstreekse toegang tot de op uw telefoon opgeslagen contacten en agenda."</string> + <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Rechtstreeks toegang krijgen tot informatie over u die is opgeslagen op uw contactkaart."</string> + <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Uw sociale informatie"</string> + <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Rechtstreeks toegang krijgen tot informatie over uw contacten en sociale connecties."</string> <string name="permgrouplab_location" msgid="635149742436692049">"Uw locatie"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Uw fysieke locatie bijhouden."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Netwerkcommunicatie"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Toegang tot verschillende netwerkfuncties."</string> + <string name="permgrouplab_shortRangeNetwork" msgid="4504840216096355984">"Bluetooth en NFC"</string> + <string name="permgroupdesc_shortRangeNetwork" msgid="8821013030346680806">"Toegang krijgen tot Bluetooth of NFC-netwerken en -apparaten."</string> + <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio-instellingen"</string> + <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Audio-instellingen wijzigen."</string> + <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"De accu beïnvloeden"</string> + <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Functies gebruiken waardoor de accu snel leeg kan raken."</string> + <string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string> + <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Rechtstreeks toegang krijgen tot agenda en afspraken."</string> + <string name="permgrouplab_dictionary" msgid="8114410334955871144">"Gebruikerswoordenboek"</string> + <string name="permgroupdesc_dictionary" msgid="40926483968949978">"Rechtstreeks toegang krijgen tot het gebruikerswoordenboek."</string> + <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bladwijzers en geschiedenis"</string> + <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Rechtstreeks toegang krijgen tot bladwijzers en browsergeschiedenis."</string> + <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string> + <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"De wekker instellen."</string> + <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Voicemail"</string> + <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Rechtstreeks toegang krijgen tot voicemail."</string> + <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfoon"</string> + <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Rechtstreeks toegang krijgen tot de microfoon om geluid op te nemen."</string> + <string name="permgrouplab_camera" msgid="4820372495894586615">"Camera"</string> + <string name="permgroupdesc_camera" msgid="2933667372289567714">"Rechtstreeks toegang krijgen tot de camera om afbeeldingen of video\'s vast te leggen."</string> + <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informatie over uw applicaties"</string> + <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Mogelijkheid om het gedrag van andere applicaties op uw apparaat te beïnvloeden."</string> + <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Achtergrond"</string> + <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"De achtergrondinstellingen van het apparaat wijzigen."</string> + <string name="permgrouplab_systemClock" msgid="406535759236612992">"Klok"</string> + <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"De tijd of tijdzone van het apparaat wijzigen."</string> + <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusbalk"</string> + <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"De instellingen van de apparaatstatusbalk wijzigen."</string> + <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synchronisatie-instellingen"</string> + <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Toegang krijgen tot de synchronisatie-instellingen."</string> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Uw accounts"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Toegang tot de beschikbare accounts."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Bedieningselementen hardware"</string> @@ -184,6 +215,8 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Toegang tot en beheer van het systeem op lager niveau."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ontwikkelingshulpprogramma\'s"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Functies die alleen nodig zijn voor app-ontwikkelaars."</string> + <string name="permgrouplab_display" msgid="4279909676036402636">"Gebruikersinterface van andere applicaties"</string> + <string name="permgroupdesc_display" msgid="6051002031933013714">"De gebruikersinterface van andere applicaties beïnvloeden."</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Opslagruimte"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Toegang krijgen tot USB-opslag."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Toegang tot de SD-kaart."</string> @@ -193,30 +226,32 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Hiermee kan de app de statusbalk zijn."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"statusbalk uitvouwen/samenvouwen"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Hiermee kan de app de statusbalk uitvouwen of samenvouwen."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"uitgaande oproepen onderscheppen"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"uitgaande oproepen doorschakelen"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Hiermee kan de app uitgaande oproepen verwerken en het nummer wijzigen dat wordt gebeld. Schadelijke apps kunnen uitgaande oproepen bijhouden, omleiden of blokkeren."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS ontvangen"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"tekstberichten (SMS) ontvangen"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Hiermee kan de app sms-berichten ontvangen en verwerken. Schadelijke apps kunnen uw berichten bijhouden of deze verwijderen zonder dat u ze te zien krijgt."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS ontvangen"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"tekstberichten (MMS) ontvangen"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Hiermee kan de app MMS-berichten ontvangen en verwerken. Schadelijke apps kunnen uw berichten bijhouden of deze verwijderen zonder dat u ze te zien krijgt."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"noodberichten ontvangen"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Hiermee kan de app berichten over noodsituaties ontvangen en verwerken. Deze rechten zijn alleen beschikbaar voor systeemapps."</string> <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"infodienstberichten lezen"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Toestaan dat de app infodienstberichten leest die worden ontvangen op uw apparaat. Infodienstmeldingen worden verzonden naar bepaalde locaties om u te waarschuwen voor noodsituaties. Schadelijke apps kunnen de prestaties of verwerking van uw apparaat verstoren wanneer een infodienstbericht wordt ontvangen."</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Toestaan dat de app infodienstberichten leest die worden ontvangen op uw apparaat. Infodienstberichten worden verzonden naar bepaalde locaties om u te waarschuwen voor noodsituaties. Schadelijke apps kunnen de prestaties of verwerking van uw apparaat verstoren wanneer een infodienstbericht wordt ontvangen."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"SMS-berichten verzenden"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"Hiermee kan de app sms\'jes verzenden. Schadelijke apps kunnen u geld kosten door zonder uw toestemming berichten te verzenden."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"zonder toestemming sms\'jes verzenden"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Hiermee kan de app sms\'jes verzenden. Schadelijke apps kunnen u geld kosten door zonder uw toestemming berichten te verzenden."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS of MMS lezen"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"uw tekstberichten (SMS of MMS) lezen"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Hiermee kan de app sms\'jes lezen die op uw tablet of simkaart zijn opgeslagen. Schadelijke apps kunnen uw vertrouwelijke berichten lezen."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Hiermee kan de app sms\'jes lezen die op uw telefoon of simkaart zijn opgeslagen. Schadelijke apps kunnen uw vertrouwelijke berichten lezen."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS of MMS bewerken"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"uw tekstberichten (SMS of MMS) bewerken"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Hiermee kan de app naar de op uw tablet of simkaart opgeslagen sms\'jes schrijven. Schadelijke apps kunnen uw berichten mogelijk verwijderen."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Hiermee kan de app naar de op uw telefoon of simkaart opgeslagen sms\'jes schrijven. Schadelijke apps kunnen uw berichten mogelijk verwijderen."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP ontvangen"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"tekstberichten (WAP) ontvangen"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Hiermee kan de app WAP-berichten ontvangen en verwerken. Schadelijke apps kunnen uw berichten bijhouden of deze verwijderen zonder dat u ze te zien krijgt."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"actieve apps ophalen"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Hiermee kan de app informatie over huidige en recent uitgevoerde taken ophalen. Schadelijke apps kunnen op deze manier mogelijk privé-informatie over andere apps achterhalen."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"details van actieve apps ophalen"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Hiermee kan de app gedetailleerde informatie over huidige en recent uitgevoerde taken ophalen. Schadelijke apps kunnen op deze manier mogelijk privé-informatie over andere apps achterhalen."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"actieve apps opnieuw rangschikken"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Hiermee kan de app taken naar de voor- en achtergrond verplaatsen. Schadelijke apps kunnen zichzelf op de voorgrond plaatsen zonder dat u hier iets aan kunt doen."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"actieve apps stoppen"</string> @@ -227,11 +262,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Toestaan dat de app de schermcompatibiliteitsmodus van andere apps beheert. Schadelijke apps kunnen het gedrag van andere apps verstoren."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"foutopsporing in apps inschakelen"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Hiermee kan de app de foutopsporing voor een andere app inschakelen. Schadelijke apps kunnen dit gebruiken om andere apps af te sluiten."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"uw UI-instellingen wijzigen"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"weergave-instellingen voor systeem wijzigen"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Hiermee kan de app de huidige configuratie wijzigen, zoals de landinstelling of de algemene lettergrootte."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"automodus inschakelen"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Hiermee kan de app de automodus inschakelen."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"processen op de achtergrond beëindigen"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"andere apps sluiten"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Hiermee kan de app achtergrondprocessen van andere apps sluiten, zelfs als er voldoende geheugenruimte beschikbaar is."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"andere apps gedwongen stoppen"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Hiermee kan de app andere apps stoppen."</string> @@ -255,7 +290,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Hiermee kan de app een melding verzenden dat een WAP PUSH-bericht is ontvangen. Schadelijke apps kunnen dit gebruiken om de ontvangst van MMS-berichten te vervalsen of de inhoud van een webpagina ongemerkt te vervangen door schadelijke varianten."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"aantal actieve processen beperken"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Hiermee kan de app het maximale aantal processen beheren dat kan worden uitgevoerd. Nooit nodig voor normale apps."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"alle achtergrondapps sluiten"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"achtergrondapps gedwongen stoppen"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Hiermee kan de app bepalen of activiteiten worden afgerond zodra ze naar de achtergrond worden verplaatst. Dit is nooit nodig voor normale apps."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"accustatistieken aanpassen"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Hiermee kan de app verzamelde accustatistieken wijzigen. Niet voor gebruik door normale apps."</string> @@ -265,7 +300,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Hiermee kan de app de gebruikersinterface voor bevestiging van de volledige back-up starten. Mag door geen enkele app worden gebruikt."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"niet-geautoriseerde vensters weergeven"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Hiermee kan de app vensters maken die door de interne systeemgebruikersinterface worden gebruikt. Niet voor gebruik door normale apps."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"waarschuwingen op systeemniveau weergeven"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"weergeven over andere apps"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Hiermee kan de app vensters met systeemwaarschuwingen weergeven. Schadelijke apps kunnen hiermee het volledige scherm overnemen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"algemene animatiesnelheid wijzigen"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Hiermee kan de app op elk gewenst moment de algemene animatiesnelheid wijzigen (snellere of tragere animaties)."</string> @@ -327,37 +362,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Toestaan dat een app specifieke rechten aan zichzelf of andere apps verleent of deze intrekt. Schadelijke apps kunnen dit gebruiken om toegang te krijgen tot functies waartoe u de apps geen toegang heeft gegeven."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"voorkeursapps instellen"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Hiermee kan de app uw voorkeursapps aanpassen. Schadelijke apps kunnen de apps die worden uitgevoerd zonder uw medeweten wijzigen om uw bestaande apps te imiteren en privégegevens van u te verzamelen."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"algemene systeeminstellingen wijzigen"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"systeeminstellingen aanpassen"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Hiermee kan de app de instellingsgegevens van het systeem aanpassen. Schadelijke apps kunnen de configuratie van uw systeem verstoren."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"beveiligde systeeminstellingen wijzigen"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Hiermee kan de app de gegevens voor beveiligde systeeminstellingen aanpassen. Dit wordt niet gebruikt door normale apps."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"de Google-serviceskaart wijzigen"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Hiermee kan de app de Google-serviceskaart wijzigen. Niet voor gebruik door normale apps."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatisch starten bij opstarten"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"uitvoeren bij opstarten"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Hiermee kan de app zichzelf laten starten zodra het systeem is opgestart. Hierdoor kan het langer duren voordat de tablet is opgestart en een app kan altijd actief zijn, wat de tablet kan vertragen."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Hiermee kan de app zichzelf starten zodra het systeem klaar is met opstarten. Hierdoor kan het langer duren voordat de telefoon is opgestart en kan de app de telefoonprocessen vertragen door altijd actief te zijn."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"sticky broadcast verzenden"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Hiermee kan de app sticky broadcasts verzenden die behouden blijven nadat de broadcast is beëindigd. Schadelijke apps kunnen hiermee de tablet traag of instabiel maken door ervoor te zorgen dat er te veel geheugenruimte wordt gebruikt."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Hiermee kan de app sticky broadcasts verzenden die behouden blijven nadat de broadcast is beëindigd. Schadelijke apps kunnen hiermee de telefoon traag of instabiel maken door ervoor te zorgen dat er te veel geheugenruimte wordt gebruikt."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"contactgegevens lezen"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"contactgegevens schrijven"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"uw contacten lezen"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Hiermee kan de app alle gegevens lezen over contacten die zijn opgeslagen op uw tablet, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Hiermee kan de app alle gegevens lezen over contacten die zijn opgeslagen op uw telefoon, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"uw contacten aanpassen"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Hiermee kan de app gegevens wijzigen van contacten die zijn opgeslagen op uw tablet, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Hiermee kan de app gegevens wijzigen van contacten die zijn opgeslagen op uw telefoon, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"oproeplogboek lezen"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Toestaan dat de app het oproeplogboek van uw tablet leest, waaronder gegevens over inkomende en uitgaande oproepen. Schadelijke apps kunnen hiermee uw gegevens naar andere personen verzenden."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Toestaan dat de app het oproeplogboek van uw telefoon leest, waaronder gegevens over inkomende en uitgaande oproepen. Schadelijke apps kunnen hiermee uw gegevens naar andere personen verzenden."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"oproeplogboek schrijven"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Toestaan dat de app het oproeplogboek van uw tablet aanpast, waaronder gegevens over inkomende en uitgaande oproepen. Schadelijke apps kunnen hiermee uw oproeplogboek wissen of aanpassen."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Toestaan dat de app het oproeplogboek van uw telefoon aanpast, waaronder gegevens over inkomende en uitgaande oproepen. Schadelijke apps kunnen hiermee uw oproeplogboek wissen of aanpassen."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"uw profielgegevens lezen"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"uw eigen contactkaart lezen"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Hiermee kan de app persoonlijke profielgegevens lezen die op uw apparaat zijn opgeslagen, zoals uw naam en contactgegevens. Dit betekent dat de app u kan identificeren en uw profielgegevens naar anderen kan verzenden."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"schrijven naar profielgegevens"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"uw eigen contactkaart aanpassen"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Hiermee kan de app persoonlijke profielgegevens wijzigen of toevoegen die op uw apparaat zijn opgeslagen, zoals uw naam en contactgegevens. Dit betekent dat andere apps u kunnen identificeren en uw profielgegevens naar anderen kunnen verzenden."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"uw sociale stream lezen"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Hiermee kan de app toegang krijgen tot sociale updates van u en uw vrienden en deze synchroniseren. Schadelijke apps kunnen hiermee toegang krijgen tot privécommunicatie tussen u en uw vrienden via sociale netwerken."</string> @@ -398,9 +429,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefoon nu opnieuw opstarten"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Hiermee kan de app de tablet opnieuw opstarten."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Hiermee kan de app de telefoon opnieuw laten opstarten."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"bestandssystemen koppelen en ontkoppelen"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"bestandssysteem van USB-opslag openen"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"bestandssysteem van SD-kaart openen"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Hiermee kan de app bestandssystemen koppelen en ontkoppelen voor verwisselbare opslagruimte."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"externe opslag formatteren"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB-opslag wissen"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD-kaart wissen"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Hiermee kan de app de externe opslag formatteren."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"informatie over de interne opslag verkrijgen"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Hiermee kan de app informatie over de interne opslag verkrijgen."</string> @@ -412,7 +445,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Hiermee kan de app de interne opslag koppelen/ontkoppelen."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"naam van interne opslag wijzigen"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Hiermee kan de app de naam van de interne opslag wijzigen."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"trilstand beheren"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"trilling beheren"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Hiermee kan de app de trilstand beheren."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"zaklamp bedienen"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Hiermee kan de app de zaklamp bedienen."</string> @@ -437,7 +470,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Hiermee kan de app het systeem laten weten welke widgets door welke app kunnen worden gebruikt. Een app met deze rechten kan andere apps toegang verlenen tot persoonlijke gegevens. Dit wordt niet gebruikt door normale apps."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefoonstatus wijzigen"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Hiermee kan de app de telefoonfuncties van het apparaat beheren. Een app met deze toestemming kan schakelen tussen netwerken, kan de radio van de telefoon in- en uitschakelen en dergelijke acties uitvoeren zonder dat u hiervan op de hoogte wordt gesteld."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"telefoonstatus en -identiteit lezen"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefoonstatus en -identiteit lezen"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Hiermee krijgt de app toegang tot de telefoonfuncties van het apparaat. Een app met de betreffende toestemming kan het telefoonnummer en serienummer van deze telefoon achterhalen, bepalen of een oproep actief is, het gekozen nummer achterhalen enzovoort."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"voorkomen dat tablet overschakelt naar slaapmodus"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"voorkomen dat telefoon overschakelt naar slaapmodus"</string> @@ -452,7 +485,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Uitvoeren als fabrikanttest op laag niveau, waardoor toegang wordt gegeven tot de hardware van de telefoon. Alleen beschikbaar als een telefoon zich in de fabrikanttestmodus bevindt."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"achtergrond instellen"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Hiermee kan de app de systeemachtergrond instellen."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"grootte achtergrond instellen"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"uw achtergrondformaat aanpassen"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Hiermee kan de app de grootte van de achtergrond instellen."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"systeem terugzetten op fabrieksinstellingen"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Hiermee kan de app het systeem terugzetten naar de fabrieksinstellingen, waarbij alle gegevens, configuraties en geïnstalleerde apps worden verwijderd."</string> @@ -464,16 +497,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Hiermee kan de app de tijdzone van de telefoon wijzigen."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"fungeren als de AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Hiermee kan de app AccountAuthenticators aanroepen."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"bekende accounts zoeken"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"accounts op het apparaat vinden"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Hiermee kan de app de lijst met accounts van de tablet ophalen."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Hiermee kan de app de lijst met accounts van een telefoon ophalen."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"fungeren als verificatie-instantie voor het account"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"accounts maken en wachtwoorden instellen"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Hiermee kan de app de accountverificatiemogelijkheden van AccountManager gebruiken, inclusief het maken van accounts en het ophalen en instellen van de bijbehorende wachtwoorden."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"de lijst met accounts beheren"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"accounts toevoegen of verwijderen"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Hiermee kan de app bewerkingen uitvoeren zoals het toevoegen en verwijderen van accounts en het verwijderen van de bijbehorende wachtwoorden."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"de verificatiegegevens van een account gebruiken"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"accounts op het apparaat gebruiken"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Hiermee kan de app verificatietokens aanvragen."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"netwerkstatus bekijken"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"netwerkverbindingen weergeven"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Hiermee kan de app de status van alle netwerken bekijken."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"volledige internettoegang"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Hiermee kan de app netwerksockets maken."</string> @@ -485,29 +518,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Hiermee kan de app de status van de getetherde netwerkverbinding wijzigen."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"instelling voor gebruik van achtergrondgegevens van gegevens wijzigen"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Hiermee kan de app de instelling voor gebruik van achtergrondgegevens wijzigen."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Wi-Fi-status bekijken"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"wifi-verbindingen weergeven"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Hiermee kan de app informatie over de wifi-status bekijken."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Wi-Fi-status wijzigen"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"wifi-verbinding maken en verbreken"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Hiermee kan de app zich koppelen aan en loskoppelen van wifi-toegangspunten en wijzigingen aanbrengen in geconfigureerde wifi-netwerken."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi Multicast-ontvangst toestaan"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Hiermee kan de app pakketten ontvangen die niet rechtstreeks zijn geadresseerd aan uw apparaat. Dit kan handig zijn wanneer services in de buurt worden ontdekt. Dit verbruikt meer energie dan de niet-multicastmodus."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth-beheer"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth-instellingen openen"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Hiermee kan de app de lokale Bluetooth-tablet configureren en externe apparaten zoeken en koppelen."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Hiermee kan de app de lokale Bluetooth-telefoon configureren en externe apparaten zoeken en koppelen."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX-status bekijken"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX-verbindingen weergeven"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Hiermee kan de app informatie over de WiMAX-status bekijken."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-status wijzigen"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Hiermee kan de app verbinding maken met het WiMAX-netwerk en de verbinding met dit netwerk verbreken."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth-verbindingen maken"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"koppelen met Bluetooth-apparaten"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Hiermee kan de app de configuratie van een lokale Bluetooth-tablet bekijken en verbindingen met gekoppelde apparaten maken en accepteren."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Hiermee kan de app de configuratie van de lokale Bluetooth-telefoon bekijken en verbindingen met gekoppelde apparaten maken en accepteren."</string> <string name="permlab_nfc" msgid="4423351274757876953">"Near Field Communication regelen"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Hiermee kan de app communiceren met NFC-tags (Near Field Communication), kaarten en lezers."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"toetsvergrendeling uitschakelen"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"uw schermvergrendeling uitschakelen"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Hiermee kan de app de toetsenblokkering en bijbehorende wachtwoordbeveiliging uitschakelen. Een voorbeeld: de telefoon schakelt de toetsenblokkering uit als er een oproep binnenkomt en schakelt de toetsenblokkering weer in als de oproep is beëindigd."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"synchronisatie-instellingen lezen"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Hiermee kan de app uw synchronisatie-instellingen lezen, bijvoorbeeld of de synchronisatie van de app Personen is ingeschakeld."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"synchronisatie-instellingen schrijven"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"synchronisatie in- en uitschakelen"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Hiermee kan de app uw synchronisatie-instellingen wijzigen en bijvoorbeeld de synchronisatie van de app Personen in- of uitschakelen."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"synchronisatiestatistieken lezen"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Hiermee kan de app de synchronisatiestatistieken lezen, zoals de geschiedenis van uitgevoerde synchronisaties."</string> @@ -515,16 +548,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Hiermee kan de app details over de huidige gesynchroniseerde feeds achterhalen."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"geabonneerde feeds schrijven"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Hiermee kan de app uw momenteel gesynchroniseerde feeds aanpassen. Schadelijke apps kunnen uw gesynchroniseerde feeds wijzigen."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"door gebruiker gedefinieerd woordenboek lezen"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"termen lezen die u heeft toegevoegd aan het woordenboek"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Hiermee kan de app privéwoorden, namen en woordcombinaties lezen die de gebruiker heeft opgeslagen in het gebruikerswoordenboek."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"schrijven naar door gebruiker gedefinieerd woordenboek"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Hiermee kan de app nieuwe woorden schrijven naar het gebruikerswoordenboek."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"inhoud van USB-opslag lezen"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"inhoud van SD-kaart lezen"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"App kan inhoud van USB lezen."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Hiermee kan de app de inhoud van de SD-kaart lezen."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"inhoud van USB-opslag aanpassen/verwijderen"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"inhoud op de SD-kaart aanpassen/verwijderen"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"de inhoud van uw USB-opslag lezen"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"de inhoud van uw SD-kaart lezen"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Toestaan dat de app inhoud in de USB-opslag, waaronder foto\'s en media, leest."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Toestaan dat de app inhoud op de SD-kaart, waaronder foto\'s en media, leest."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"de inhoud van uw USB-opslag aanpassen of verwijderen"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"de inhoud van uw SD-kaart aanpassen of verwijderen"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Hiermee kan de app schrijven naar de USB-opslag."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Hiermee kan de app schrijven naar de SD-kaart."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"inh. mediaopsl. wijz./verw."</string> @@ -702,6 +735,7 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Geen SIM-kaart in telefoon."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Plaats een simkaart."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"De simkaart ontbreekt of kan niet worden gelezen. Plaats een simkaart."</string> + <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Onbruikbare simkaart."</string> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Uw simkaart is permanent uitgeschakeld."\n" Neem contact op met uw mobiele serviceprovider voor een nieuwe simkaart."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knop voor vorig nummer"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knop voor volgend nummer"</string> @@ -777,12 +811,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Gemeente"</string> <string name="autofill_area" msgid="3547409050889952423">"Gebied"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"browsergeschiedenis en bladwijzers lezen"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"uw webbladwijzers en -geschiedenis lezen"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Hiermee kan de app de URL\'s lezen die u via de browser heeft bezocht, evenals alle bladwijzers van de browser."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"browsergeschiedenis en bladwijzers schrijven"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"webbladwijzers en -geschiedenis schrijven"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Hiermee kan de app de browsergeschiedenis of bladwijzers aanpassen die op uw tablet zijn opgeslagen. Schadelijke apps kunnen dit gebruiken om de gegevens van uw browser te wissen of te wijzigen."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Hiermee kan de app de browsergeschiedenis of bladwijzers aanpassen die op uw telefoon zijn opgeslagen. Schadelijke apps kunnen dit gebruiken om de gegevens van uw browser te wissen of te wijzigen."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"alarm instellen in wekker"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"een alarm instellen"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Hiermee kan de app een alarm instellen in een geïnstalleerde wekkerapp. Deze functie wordt door sommige wekkerapps niet geïmplementeerd."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"voicemail toevoegen"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Hiermee kan de app berichten toevoegen aan de inbox van uw voicemail."</string> @@ -1043,7 +1077,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Instellen"</string> <string name="date_time_done" msgid="2507683751759308828">"Gereed"</string> <string name="default_permission_group" msgid="2690160991405646128">"Standaard"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NIEUW: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NIEUW: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Geen machtigingen vereist"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Verbergen"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Alles weergeven"</b></string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index c499707e2b18..f18cb33ab3ff 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tablet zostanie wyłączony."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefon zostanie wyłączony"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Czy chcesz wyłączyć?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Uruchom w trybie awaryjnym"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Chcesz uruchomić urządzenie w trybie awaryjnym? W ten sposób wyłączysz wszystkie zainstalowane aplikacje innych firm. Zostaną one przywrócone po ponownym uruchomieniu."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Najnowsze"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Brak ostatnio uruchomionych aplikacji."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opcje tabletu"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Twoje wiadomości"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Czytanie i zapisywanie wiadomości SMS, e-mail i innych"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informacje osobiste"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Bezpośredni dostęp do kalendarza i kontaktów zapisanych w tablecie."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Bezpośredni dostęp do kontaktów i kalendarza zapisanych w telefonie."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Twoja lokalizacja"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitorowanie fizycznej lokalizacji"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Połączenia sieciowe"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Uzyskiwanie dostępu do różnych funkcji sieciowych"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Twoje konta"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Dostęp do udostępnionych kont."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Sterowanie sprzętowe"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Dostęp i kontrola systemu niższego poziomu."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Narzędzia programistyczne"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcje potrzebne jedynie programistom."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Pamięć"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Dostęp do nośnika USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostęp do karty SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Pozwala aplikacji na występowanie na pasku stanu."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"rozwijanie/zwijanie paska stanu"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Pozwala aplikacji na rozwijanie lub zwijanie paska stanu."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"przechwytywanie połączeń wychodzących"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"przekierowywanie połączeń wychodzących"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Pozwala aplikacji na przetwarzanie połączeń wychodzących i zmianę wybieranego numeru. Złośliwe aplikacje mogą monitorować, przekierowywać lub blokować połączenia wychodzące."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"odbieranie wiadomości SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"odbieranie wiadomości tekstowych (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości SMS. Złośliwe aplikacje mogą monitorować wiadomości lub usuwać je, zanim zostaną wyświetlone."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"odbieranie wiadomości MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"odbieranie wiadomości tekstowych (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości MMS. Złośliwe aplikacje mogą monitorować wiadomości lub usuwać je, zanim zostaną wyświetlone."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"odbiór emisji alarmowych"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Pozwala aplikacji na odbieranie i przetwarzanie komunikatów transmisji alarmowych. To pozwolenie jest dostępne tylko dla aplikacji systemowych."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Pozwala aplikacji na wysyłanie wiadomości SMS. Złośliwe aplikacje mogą generować koszty, wysyłając wiadomości bez Twojej wiedzy."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"wysyłanie wiadomości SMS bez potwierdzenia"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Pozwala aplikacji na wysyłanie wiadomości SMS. Złośliwe aplikacje mogą generować koszty, wysyłając wiadomości bez Twojej wiedzy."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"czytanie wiadomości SMS lub MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"odczytywanie wiadomości tekstowych (SMS i MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Pozwala aplikacji na odczyt wiadomości SMS zapisanych w tablecie lub na karcie SIM. Złośliwe aplikacje mogą odczytać Twoje poufne wiadomości."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Pozwala aplikacji na odczyt wiadomości SMS zapisanych w telefonie lub na karcie SIM. Złośliwe aplikacje mogą odczytać Twoje poufne wiadomości."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"edytowanie wiadomości SMS lub MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"edytowanie wiadomości tekstowych (SMS i MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Pozwala aplikacji na zapisywanie wiadomości SMS przechowywanych w tablecie lub na karcie SIM. Złośliwe aplikacje mogą usunąć wiadomości."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Pozwala aplikacji na zapisywanie wiadomości SMS przechowywanych w telefonie lub na karcie SIM. Szkodliwe aplikacje mogą usunąć wiadomości."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"odbieranie WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"odbieranie wiadomości tekstowych (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości WAP. Złośliwe aplikacje mogą monitorować wiadomości lub usuwać je, zanim zostaną wyświetlone."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"pobieranie uruchomionych aplikacji"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Pozwala aplikacji na pobieranie informacji na temat obecnie i ostatnio uruchomionych zadań. Złośliwe aplikacje mogą uzyskać dostęp do prywatnych informacji na temat innych aplikacji."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"Pobieraj informacje o uruchomionych aplikacjach"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Zezwala aplikacji na pobieranie informacji o obecnie i ostatnio uruchomionych zadaniach. Złośliwe aplikacje mogą uzyskać dostęp do prywatnych informacji na temat innych aplikacji."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"zmienianie kolejności uruchomionych aplikacji"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Pozwala aplikacji na przenoszenie zadań między tłem i pierwszym planem. Złośliwe aplikacje mogą wymusić przeniesienie się na pierwszy plan bez Twojego udziału."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"zatrzymywanie uruchomionych aplikacji"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Pozwala aplikacji na sterowanie trybem zgodności ekranu innych aplikacji. Złośliwe aplikacje mogą zmienić zachowanie innych programów."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"włączenie debugowania aplikacji"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Pozwala aplikacji na włączenie debugowania innej aplikacji. Złośliwe aplikacje mogą to wykorzystać do kończenia pracy innych programów."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"zmienianie ustawień interfejsu użytkownika"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"zmienianie ustawień wyświetlania systemu"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Pozwala aplikacji na zmianę bieżącej konfiguracji, na przykład regionu lub ogólnego rozmiaru czcionki."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"włączanie trybu samochodowego"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Pozwala aplikacji na włączanie trybu samochodowego."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"kończenie procesów w tle"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zamykanie innych aplikacji"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Pozwala aplikacji na kończenie procesów innych aplikacji w tle, nawet jeśli jest dużo pamięci."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"wymuszanie zatrzymania innych aplikacji"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Pozwala aplikacji na wymuszanie zatrzymania innych aplikacji."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Pozwala aplikacji na nadanie powiadomienia o odebraniu wiadomości WAP PUSH. Złośliwe aplikacje mogą to wykorzystać do fałszowania potwierdzenia odbioru wiadomości MMS lub do niezauważalnego podmieniania zawartości dowolnej strony internetowej jej szkodliwymi wariantami."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ograniczanie liczby uruchomionych procesów"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Pozwala aplikacji na kontrolowanie maksymalnej liczby uruchamianych procesów. Nigdy niewykorzystywane przez normalne aplikacje."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"zamykanie wszystkich aplikacji działających w tle"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"wymuszanie zamknięcia aplikacji w tle"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Pozwala aplikacji na kontrolowanie, czy czynności są zawsze kończone, kiedy zaczynają działać w tle. Nigdy nie jest potrzebne normalnym aplikacjom."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"zmienianie statystyk dotyczących baterii"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Pozwala aplikacji na modyfikowanie zebranych statystyk dotyczących baterii. Nieprzeznaczone dla zwykłych aplikacji."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Pozwala aplikacji na uruchomienie interfejsu użytkownika potwierdzenia pełnej kopii zapasowej. Nie może być używane przez żadne aplikacje."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"wyświetlanie nieuwierzytelnionych okien"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Pozwala aplikacji na tworzenie okien przeznaczonych do wykorzystania przez wewnętrzny interfejs użytkownika systemu. Nieprzeznaczone dla zwykłych aplikacji."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"wyświetlanie ostrzeżeń systemowych"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"rysowanie na innych aplikacjach"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Pozwala aplikacji na pokazywanie okien z alertami systemu. Złośliwe aplikacje mogą przejąć cały ekran."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"zmienianie ogólnej prędkości animacji"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Pozwala aplikacji na zmianę ogólnej prędkości animacji (szybsze lub wolniejsze animacje) w dowolnym momencie."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Pozwala aplikacji na przyznanie lub cofnięcie określonych uprawnień do niej lub do innych aplikacji. Złośliwe aplikacje mogą to wykorzystać, by uzyskać dostęp do nieuprawnionych funkcji."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ustawianie preferowanych aplikacji"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Pozwala aplikacji na zmianę Twoich preferowanych aplikacji. Złośliwe aplikacje mogą dyskretnie zmienić uruchamiane aplikacje, podszywając się pod dotychczasowe aplikacje w celu zebrania od Ciebie prywatnych danych."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modyfikowanie ogólnych ustawień systemu"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modyfikowanie ustawień systemu"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Pozwala aplikacji na zmienianie ustawień systemu. Złośliwe aplikacje mogą uszkodzić konfigurację systemu."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modyfikowanie ustawień systemu dotyczących zabezpieczeń"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Pozwala aplikacji na modyfikowanie bezpiecznych danych ustawień zabezpieczeń. Nieprzeznaczone dla zwykłych aplikacji."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"zmienianie mapy usług Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Pozwala aplikacji na modyfikowanie mapy usług Google. Nieprzeznaczone dla zwykłych aplikacji."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatyczne uruchamianie podczas uruchamiania urządzenia"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"uruchamianie podczas włączania urządzenia"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Pozwala aplikacji na uruchamianie się natychmiast po zakończeniu rozruchu systemu. Może to spowodować wydłużenie czasu uruchamiania tabletu oraz spowolnienie jego pracy przez zawsze działającą aplikację."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Pozwala aplikacji na uruchamianie się natychmiast po zakończeniu rozruchu systemu. Może to spowodować wydłużenie czasu uruchamiania telefonu oraz spowolnienie jego pracy przez zawsze działającą aplikację."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"wysyłanie transmisji trwałej"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Pozwala aplikacji na wysyłanie transmisji trwałych, które pozostają aktywne po zakończeniu połączenia. Złośliwe aplikacje mogą spowolnić lub zdestabilizować tablet przez wymuszenie zbyt dużego zużycia pamięci."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Pozwala aplikacji na wysyłanie transmisji trwałych, które pozostają aktywne po zakończeniu połączenia. Złośliwe aplikacje mogą spowolnić lub zdestabilizować telefon przez wymuszenie zbyt dużego zużycia pamięci."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"czytanie danych kontaktów"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"zapisywanie danych kontaktowych"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"odczytywanie kontaktów"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Pozwala aplikacji na odczytywanie wszystkich danych o kontaktach zapisanych na tablecie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą wykorzystać to uprawnienie do wysyłania informacji o Twoich kontaktach do innych osób."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Pozwala aplikacji na odczytywanie wszystkich danych o kontaktach zapisanych w telefonie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą wykorzystać to uprawnienie do wysyłania informacji o Twoich kontaktach do innych osób."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modyfikowanie kontaktów"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Pozwala aplikacji na modyfikowanie danych o kontaktach zapisanych na tablecie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmodyfikowania informacji o Twoich kontaktach."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Pozwala aplikacji na modyfikowanie danych o kontaktach zapisanych w telefonie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmodyfikowania informacji o Twoich kontaktach."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"czytanie rejestru połączeń"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Zezwala aplikacji na odczytywanie rejestru połączeń tabletu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystywać tę możliwość, by wysyłać dane do innych osób."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Zezwala aplikacji na odczytywanie rejestru połączeń telefonu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystywać tę możliwość, by wysyłać dane do innych osób."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"zapisywanie rejestru połączeń"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Zezwala aplikacji na modyfikowanie rejestru połączeń tabletu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystać tę możliwość, by wyczyścić lub zmodyfikować rejestr połączeń."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Zezwala aplikacji na modyfikowanie rejestru połączeń telefonu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystać tę możliwość, by wyczyścić lub zmodyfikować rejestr połączeń."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"odczyt danych z Twojego profilu"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"odczyt własnej karty kontaktu"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Pozwala aplikacji na odczyt informacji, takich jak Twoje nazwisko i informacje kontaktowe, z profilu osobistego przechowywanego na urządzeniu. Oznacza to, że inne aplikacje mogą Cię zidentyfikować i przesłać informacje z Twojego profilu do innych osób."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"zapis danych w Twoim profilu"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"zmiana własnej karty kontaktu"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Pozwala aplikacji na zmianę lub dodanie informacji, takich jak Twoje nazwisko i informacje kontaktowe, do profilu osobistego przechowywanego na urządzeniu. Oznacza to, że inne aplikacje mogą Cię zidentyfikować i przesłać informacje z Twojego profilu do innych osób."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"odczyt sieci społecznościowych"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Pozwala aplikacji na dostęp do aktualności społecznościowych pochodzących od Ciebie i znajomych oraz ich synchronizowanie. Złośliwe aplikacje mogą dzięki temu odczytywać prywatne informacje wymienianie przez Ciebie ze znajomymi w sieciach społecznościowych."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"wymuszanie ponownego uruchomienia telefonu"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Pozwala aplikacji na wymuszanie ponownego uruchomienia tabletu."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Pozwala aplikacji na wymuszanie ponownego uruchomienia telefonu."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"podłączanie i odłączanie systemów plików"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"dostęp do systemu plików USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"uzyskiwanie dostępu do systemu plików karty SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Pozwala aplikacji na podłączanie i odłączanie systemów plików pamięci wymiennych."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatowanie pamięci zewnętrznej"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"czyszczenie nośnika USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"czyszczenie karty SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Pozwala aplikacji na formatowanie nośników wymiennych."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"uzyskiwanie informacji o pamięci wewnętrznej"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Pozwala aplikacji na uzyskiwanie informacji o pamięci wewnętrznej."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Pozwala aplikacji na podłączanie/odłączanie pamięci wewnętrznej."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"zmiana nazwy pamięci wewnętrznej"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Pozwala aplikacji na zmianę nazwy pamięci wewnętrznej."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kontrolowanie wibracji"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"sterowanie wibracjami"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Pozwala aplikacji na sterowanie wibracjami."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"kontrolowanie latarki"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Pozwala aplikacji na sterowanie latarką."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Pozwala aplikacji na wskazywanie systemowi, które widżety mogą być używane przez inne aplikacje. Wykorzystując to pozwolenie, aplikacja może udzielić dostępu do danych osobistych innym aplikacjom. Nieprzeznaczone dla zwykłych aplikacji."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmiana stanu telefonu"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Pozwala aplikacji na kontrolowanie funkcji telefonu w urządzeniu. Aplikacja z tymi uprawnieniami może zmieniać, włączać i wyłączać sieci bezprzewodowe itp. bez informowania użytkownika."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"odczytywanie stanu i informacji o telefonie"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"odczytywanie stanu i informacji o telefonie"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Pozwala aplikacji na dostęp do funkcji telefonu w tym urządzeniu. Aplikacja z takim uprawnieniem może określić, jaki jest numer tego telefonu i jego numer seryjny, czy aktywne jest połączenie, z jakim numerem nawiązane jest połączenie itp."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zapobieganie przechodzeniu tabletu do trybu uśpienia"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zapobieganie przejściu telefonu w stan uśpienia"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Uruchom jako niskopoziomowy test producenta, pozwalając na całkowity dostęp do elementów sprzętowych telefonu. Dostępne tylko jeśli telefon działa w trybie testu producenta."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"ustawianie tapety"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Pozwala aplikacji na ustawianie tapety systemu."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"ustawianie wskazówek dotyczących rozmiaru tapety"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"dopasowywanie rozmiaru tapety"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Pozwala aplikacji na ustawianie wskazówek dotyczących rozmiaru tapety systemu."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"resetowanie systemu do ustawień fabrycznych"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Pozwala aplikacji na całkowite zresetowanie systemu do ustawień fabrycznych, z wymazaniem wszystkich danych, konfiguracji oraz zainstalowanych aplikacji."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Pozwala aplikacji na zmianę ustawienia strefy czasowej w telefonie."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"działanie jako usługa AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Pozwala aplikacji na wywoływanie usług AccountAuthenticator."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"wykrywanie znanych kont"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"znajdowanie kont na urządzeniu"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Pozwala aplikacji na pobieranie listy kont skonfigurowanych w tablecie."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Pozwala aplikacji na pobieranie listy kont skonfigurowanych w telefonie."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"działanie jako moduł uwierzytelniania konta"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"tworzenie kont i ustawianie haseł"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Pozwala aplikacji na korzystanie z funkcji modułu uwierzytelniania konta usługi AccountManager, w tym funkcji tworzenia kont oraz pobierania i ustawiania ich haseł."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"zarządzanie listą kont"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"dodawanie i usuwanie kont"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Pozwala aplikacji na wykonywanie takich operacji, jak dodawanie i usuwanie kont, a także usuwanie ich haseł."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"korzystanie z danych uwierzytelniania konta"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"używanie kont na urządzeniu"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Pozwala aplikacji na żądanie tokenów uwierzytelniania."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"wyświetlanie stanu sieci"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"wyświetlanie połączeń sieciowych"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Pozwala aplikacji na sprawdzenie stanu wszystkich sieci."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"pełen dostęp do internetu"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Pozwala aplikacji na tworzenie gniazd sieciowych."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Pozwala aplikacji na zmianę stanu łączności sieciowej objętej tetheringiem."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"zmienianie ustawienia używania danych w tle"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Pozwala aplikacji na zmianę ustawień użycia danych w tle."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"wyświetlanie stanu Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"wyświetlanie połączeń Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Pozwala aplikacji na dostęp do informacji o stanie połączenia Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"zmiana stanu Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"łączenie się i rozłączanie z siecią Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Pozwala aplikacji na łączenie i rozłączanie z punktami dostępowymi Wi-Fi oraz na modyfikowanie skonfigurowanych sieci Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"zezwolenie na odbiór grupowych połączeń Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Pozwala aplikacji na odbieranie pakietów nieskierowanych bezpośrednio do Twojego urządzenia. Może to być przydatne przy wykrywaniu usług oferowanych w okolicy. Powoduje większe zapotrzebowanie na energię niż w trybie niegrupowym."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"administrowanie Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"uzyskiwanie dostępu do ustawień Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Pozwala aplikacji na konfigurowanie lokalnego tabletu z funkcją Bluetooth oraz na wykrywanie urządzeń zdalnych i parowanie z nimi."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Pozwala aplikacji na konfigurowanie lokalnego telefonu z funkcją Bluetooth oraz na wykrywanie urządzeń zdalnych i parowanie z nimi."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Wyświetl stan WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Wyświetl połączenia WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Pozwala aplikacji na wyświetlanie informacji o stanie połączenia WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Zmień stan WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Zezwala aplikacji na łączenie się i rozłączanie z siecią WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"tworzenie połączeń Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"parowanie z urządzeniami Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Pozwala aplikacji na wyświetlanie konfiguracji lokalnego tabletu z funkcją Bluetooth oraz na nawiązywanie i akceptowanie połączeń ze sparowanymi urządzeniami."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Pozwala aplikacji na wyświetlanie konfiguracji lokalnego telefonu z funkcją Bluetooth oraz na nawiązywanie i akceptowanie połączeń ze sparowanymi urządzeniami."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontrolowanie łączności Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Pozwala aplikacji na komunikowanie się z tagami, kartami i czytnikami NFC (Near Field Communication)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"wyłączanie blokady klawiatury"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"wyłączanie blokady ekranu"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Pozwala aplikacji na wyłączenie blokady klawiatury i wszystkich związanych z tym haseł zabezpieczających. Typowym przykładem takiego działania jest wyłączanie blokady klawiatury, gdy pojawia się połączenie przychodzące, a następnie ponowne jej włączanie po zakończeniu połączenia."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"czytanie ustawień synchronizowania"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Pozwala aplikacji na odczyt ustawień synchronizacji, takich jak ustawienie określające, czy włączona jest synchronizacja aplikacji Ludzie."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"zapisywanie ustawień synchronizowania"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"włączanie i wyłączanie synchronizacji"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Pozwala aplikacji na modyfikowanie ustawień synchronizacji, na przykład na określenie, czy włączona jest synchronizacja aplikacji Ludzie."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"czytanie statystyk dotyczących synchronizowania"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Pozwala aplikacji na odczyt statystyk synchronizowania, np. historii przeprowadzonych synchronizacji."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Pozwala aplikacji na pobieranie szczegółowych informacji na temat obecnie zsynchronizowanych kanałów."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zapisywanie subskrybowanych źródeł"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Pozwala aplikacji na zmianę obecnie zsynchronizowanych kanałów. Złośliwe aplikacje mogą zmienić zsynchronizowane kanały."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"odczytywanie słownika zdefiniowanego przez użytkownika"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"odczytywanie terminów dodanych do słownika"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Pozwala aplikacji na odczytywanie wszelkich prywatnych słów, nazw i wyrażeń zapisanych w słowniku użytkownika."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"zapisywanie w słowniku zdefiniowanym przez użytkownika"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Pozwala aplikacji na zapisywanie nowych słów do słownika użytkownika."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"odczyt zawartości pamięci USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"odczyt zawartości karty SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Pozwala aplikacji na odczyt pamięci USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Pozwala aplikacji na odczyt karty SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"Modyfikowanie/usuwanie z nośnika USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modyfikowanie/usuwanie zawartości karty SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"odczytywanie zawartości pamięci USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"odczytywanie zawartości karty SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Zezwala aplikacji na odczytywanie zawartości pamięci USB, która może obejmować zdjęcia i multimedia."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Zezwala aplikacji na odczytywanie zawartości karty SD, która może obejmować zdjęcia i multimedia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modyfikowanie i usuwanie zawartości pamięci USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modyfikowanie i usuwanie zawartości karty SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Pozwala aplikacji na zapis w pamięci USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Pozwala aplikacji na zapis na karcie SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modyfikowanie/usuwanie zawartości pamięci wew."</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Brak karty SIM w telefonie."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Włóż kartę SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Brak karty SIM lub nie można jej odczytać. Włóż kartę SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Karta SIM jest trwale wyłączona."\n" Skontaktuj się z dostawcą usług bezprzewodowych, aby uzyskać inną kartę SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Przycisk poprzedniego utworu"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Przycisk następnego utworu"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"znak"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"słowo"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"wiersz"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Nieudany test fabryczny"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Gmina"</string> <string name="autofill_area" msgid="3547409050889952423">"Obszar"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"odczyt historii i zakładek przeglądarki"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"odczytywanie zakładek internetowych i historii"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Pozwala aplikacji na odczyt wszystkich adresów URL odwiedzonych przez przeglądarkę, a także wszystkich zakładek przeglądarki."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zapis historii i zakładek przeglądarki"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"zapisywanie zakładek internetowych i historii"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Pozwala aplikacji na modyfikowanie historii i zakładek przeglądarki zapisanych na tablecie. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmiany danych przeglądarki."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Pozwala aplikacji na modyfikowanie historii i zakładek przeglądarki zapisanych w telefonie. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmiany danych przeglądarki."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"ustaw alarm w budziku"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"ustawianie alarmu"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Pozwala aplikacji na ustawienie alarmu w zainstalowanej aplikacji budzika. Funkcja ta może nie być zaimplementowana w niektórych aplikacjach tego typu."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"dodawanie poczty głosowej"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Pozwala aplikacji na dodawanie wiadomości do skrzynki odbiorczej poczty głosowej."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Ustaw"</string> <string name="date_time_done" msgid="2507683751759308828">"Gotowe"</string> <string name="default_permission_group" msgid="2690160991405646128">"Domyślne"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOWE: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOWE: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nie są wymagane żadne uprawnienia"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ukryj"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Pokaż wszystko"</b></string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 4ce6c3d5569e..c0102405d0ff 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"O seu tablet irá encerrar."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"O seu telefone irá encerrar."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Pretende encerrar?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reiniciar no modo de segurança"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Pretende reiniciar no modo de segurança? Se sim, irá desativar todas as aplicações de terceiros instaladas. Estas serão restauradas quando reiniciar novamente."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Recente"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Não existem aplicações recentes"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opções do tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"As suas mensagens"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Ler e escrever SMS, e-mail e outras mensagens."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Os seus dados pessoais"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acesso directo aos seus contactos e calendário armazenados no tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acesso directo aos seus contactos e calendário armazenados no telefone."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"A sua localização"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitorizar a sua localização física."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicação de rede"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Aceder a várias funcionalidades de rede."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"As suas contas"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Aceda às contas disponíveis."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controlos de hardware"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acesso e controlo de nível inferior do sistema."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ferramentas de desenvolvimento"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funcionalidades apenas necessárias para programadores de aplicações."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Aceder ao armazenamento USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Aceder ao cartão SD."</string> @@ -195,30 +261,32 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que a aplicação seja apresentada na barra de estado."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir/fechar barra de estado"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite à aplicação expandir ou fechar a barra de estado."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptar chamadas efectuadas"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redirecionar as chamadas efetuadas"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que a aplicação processe chamadas efetuadas e mude o número a marcar. As aplicações maliciosas podem monitorizar, redirecionar ou impedir a realização de chamadas."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"receber SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"receber mensagens de texto (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que a aplicação receba e processe mensagens SMS. As aplicações maliciosas podem monitorizar as mensagens ou eliminá-las sem mostrá-las ao utilizador."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"receber MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"receber mensagens de texto (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que a aplicação receba e processe mensagens MMS. As aplicações maliciosas podem monitorizar as mensagens ou eliminá-las sem mostrá-las ao utilizador."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"receber transmissões de emergência"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite à aplicação receber e processar mensagens de difusão de emergência. Esta permissão só está disponível para aplicações do sistema."</string> <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"ler mensagens de transmissão celular"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite que a aplicação leia mensagens de transmissão celular recebidas pelo seu dispositivo. Os alertas de transmissão celular são fornecidos em algumas localizações para o avisar sobre situações de emergência. As aplicações maliciosas podem interferir com o desempenho ou funcionamento do seu dispositivo quando for recebida uma transmissão celular de emergência."</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite que a aplicação leia mensagens de transmissão celular recebidas pelo seu dispositivo. Os alertas de transmissão celular são fornecidos em algumas localizações para avisá-lo sobre situações de emergência. As aplicações maliciosas podem interferir com o desempenho ou funcionamento do seu dispositivo quando for recebida uma transmissão celular de emergência."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"enviar mensagens SMS"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"Permite que a aplicação envie mensagens SMS. As aplicações maliciosas podem custar-lhe dinheiro com o envio de mensagens sem a sua confirmação."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensagens SMS sem confirmação"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que a aplicação envie mensagens SMS. As aplicações maliciosas podem custar-lhe dinheiro com o envio de mensagens sem a sua confirmação."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"ler SMS ou MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"ler as mensagens de texto (SMS ou MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que a aplicação leia mensagens SMS armazenadas no tablet ou cartão SIM. As aplicações maliciosas podem ler as suas mensagens confidenciais."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que a aplicação leia mensagens SMS armazenadas no telemóvel ou no cartão SIM. As aplicações maliciosas podem ler as suas mensagens confidenciais."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"editar SMS ou MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"editar as mensagens de texto (SMS ou MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que a aplicação escreva mensagens SMS armazenadas no tablet ou no cartão SIM. As aplicações maliciosas podem eliminar as suas mensagens."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que a aplicação escreva mensagens SMS armazenadas no telemóvel ou no cartão SIM. As aplicações maliciosas podem eliminar as suas mensagens."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"receber WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"receber mensagens de texto (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que a aplicação receba e processe mensagens WAP. As aplicações maliciosas podem monitorizar as mensagens ou eliminá-las sem mostrá-las ao utilizador."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"obter aplicações em execução"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permite à aplicação recuperar informações sobre tarefas atualmente em execução ou que foram recentemente executadas. As aplicações maliciosas poderão descrobrir informações privadas de outras aplicações."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"obter detalhes das aplicações em execução"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite à aplicação obter informações detalhadas sobre tarefas atualmente em execução e recentemente executadas. As aplicações maliciosas poderão descobrir informações privadas de outras aplicações."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"reordenar as aplicações em execução"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permite à aplicação mover tarefas para primeiro e segundo plano. As aplicações maliciosas podem impor-se em primeiro plano sem o controlo do utilizador."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"parar aplicações em execução"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite que a aplicação controle o modo de compatibilidade de ecrã de outras aplicações. As aplicações maliciosas poderão afetar o comportamento de outras aplicações."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"ativar depuração da aplicação"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que a aplicação ative a depuração para outra aplicação. As aplicações maliciosas podem utilizar isto para eliminar outras aplicações."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"alterar definições da IU"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"alterar as definições de visualização do sistema"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite à aplicação alterar a configuração atual, como o local ou o tamanho global do tipo de letra."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"activar modo de carro"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que a aplicação ative o modo automóvel."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"eliminar processos em segundo plano"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"fechar outras aplicações"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite à aplicação eliminar processos em segundo plano de outras aplicações, mesmo se a memória não estiver baixa."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"forçar paragem de outras aplicações"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite à aplicação efetuar uma paragem forçada de outras aplicações."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que a aplicação difunda uma notificação de que foi recebida uma mensagens PUSH WAP. As aplicações maliciosas podem utilizar isto para forjar um recibo de mensagem MMS ou substituir, de forma silenciosa, o conteúdo de qualquer página Web por variantes maliciosas."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"número limite de processos em execução"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite a uma aplicação controlar o número máximo de processos que será executado. Nunca é necessário para aplicações normais."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"fechar todas as aplicações em segundo plano"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forçar as aplicações em segundo plano a fechar"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que uma aplicação controle se as atividades são sempre terminadas assim que passam para segundo plano. Nunca é necessário para aplicações normais."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modificar estatísticas da bateria"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite a modificação das estatísticas recolhidas sobre a bateria. Não se destina a utilização por aplicações normais."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que a aplicação inicie a IU de confirmação de cópia de segurança completa. Não deve ser utilizado por qualquer aplicação."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"apresentar janelas não autorizadas"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que a aplicação crie janelas que se destinam a ser utilizadas pela interface de utilizador do sistema interno. Nunca é necessário para aplicações normais."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"apresentar alertas ao nível do sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"desenhar sobre outras aplicações"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que a aplicação mostre janelas de alerta do sistema. As aplicações maliciosas podem ocupar todo o ecrã."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar velocidade global da animação"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que a aplicação altere a velocidade global da animação (animações mais rápidas ou mais lentas) em qualquer altura."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite que uma aplicação conceda ou revogue permissões específicas para si própria ou para outras aplicações. As aplicações maliciosas podem utilizar isto para aceder a funcionalidades para as quais não têm permissão."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"definir aplicações preferidas"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite ao aplicativo modificar as suas aplicações preferidas. As aplicações maliciosas podem alterar sem aviso as aplicações que são executadas, espiando as aplicações existentes para recolher os seus dados privados."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modificar definições globais do sistema"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar as definições do sistema"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite à aplicação modificar os dados das definições do sistema. As aplicações maliciosas podem corromper a configuração do seu sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar definições seguras do sistema"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que uma aplicação modifique os dados de definições seguras do sistema. Não deve ser utilizado por aplicações normais."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modificar o mapa de serviços do Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que a aplicação modifique o mapa de serviços do Google. Não se destina a utilização por aplicações normais."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"iniciar automaticamente no arranque"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"executar no arranque"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que uma aplicação se inicie automaticamente assim que tiver terminado o arranque do sistema. Isto pode atrasar o arranque do tablet e permitir à aplicação abrandar todo o funcionamento do tablet, uma vez que está em constante execução."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que uma aplicação se inicie automaticamente assim que tiver terminado o arranque do sistema. Isto pode atrasar o arranque do telemóvel e permitir à aplicação abrandar todo o funcionamento do telemóvel, uma vez que está em constante execução."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar difusão fixa"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que uma aplicação envie difusões fixas, que permanecem após o fim da difusão. As aplicações maliciosas podem tornar o tablet lento ou instável, fazendo com que utilize demasiada memória."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que a aplicação envie difusões fixas, que permanecem após o fim da difusão. As aplicações maliciosas podem tornar o telemóvel lento ou instável, fazendo com que utilize demasiada memória."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"ler dados de contacto"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"escrever dados de contacto"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"ler os contactos"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que a aplicação leia todos os dados sobre os contactos armazenados no seu tablet, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para enviar os seus dados de contacto a outras pessoas."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que a aplicação leia todos os dados sobre os contactos armazenados no seu telemóvel, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para enviar os seus dados de contacto a outras pessoas."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar os contactos"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que a aplicação modifique os dados sobre os contactos armazenados no seu tablet, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para apagar ou modificar os seus dados de contacto."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que a aplicação modifique os dados sobre os contactos armazenados no seu telemóvel, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para apagar ou modificar os seus dados de contacto."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"ler registo de chamadas"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite à aplicação ler o registo de chamadas do tablet, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para enviar os seus dados para outras pessoas."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite que a aplicação leia o registo de chamadas do telemóvel, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para enviar os seus dados para outras pessoas."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"escrever registo de chamadas"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite à aplicação modificar o registo de chamadas do tablet, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para apagar ou modificar o registo de chamadas."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite à aplicação modificar o registo de chamadas do telemóvel, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para apagar ou modificar o seu registo de chamadas."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"ler os dados do perfil"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"ler o próprio cartão de contacto"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que a aplicação leia dados de perfil pessoais armazenados no seu aparelho, como o seu nome e dados de contacto. Isto significa que outras aplicações podem identificá-lo e enviar os seus dados de perfil a terceiros."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"escrever nos dados do seu perfil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modificar o próprio cartão de contacto"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que a aplicação altere ou adicione dados de perfil pessoais armazenados no seu aparelho, como o seu nome e dados de contacto. Isto significa que outras aplicações podem identificá-lo e enviar os seus dados de perfil a terceiros."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ler o seu fluxo social"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que a aplicação aceda e sincronize atualizações sociais suas e dos seus amigos. As aplicações maliciosas podem usar isto para ler as comunicações privadas entre si e os seus amigos em redes sociais."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forçar reinício do telefone"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que a aplicação force o reinício do tablet."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que a aplicação force o reinício do telemóvel."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montar e desmontar sistemas de ficheiros"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"aceder ao sistema de ficheiros da memória USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"aceder ao sistema de ficheiros do Cartão SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite à aplicação montar e desmontar sistemas de ficheiros para armazenamento amovível."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatar armazenamento externo"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"apagar armazenamento USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"apagar Cartão SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite à aplicação formatar o armazenamento amovível."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"obter informações sobre o armazenamento interno"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permite à aplicação obter informações sobre o armazenamento interno."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite à aplicação montar/desmontar o armazenamento interno."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"mudar o nome do armazenamento interno"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite à aplicação mudar o nome do armazenamento interno."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"controlar vibrador"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"controlar vibração"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permite à aplicação controlar o vibrador."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"controlar lanterna"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permite à aplicação controlar a lanterna."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que a aplicação informe o sistema acerca dos widgets que podem ser utilizados com cada aplicação. Com esta autorização, algumas aplicações podem conceder acesso a dados pessoais a outras aplicações. Não se destina a utilização por aplicações normais."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado do telefone"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que a aplicação controle as funcionalidades de telefone do aparelho. Uma aplicação com esta permissão pode alternar entre redes, ligar/desligar o rádio do telefone e outras coisas semelhantes sem sequer o notificar."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"ler identidade e estado do telefone"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"ler o estado e a identidade do telemóvel"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que a aplicação aceda às funcionalidades do aparelho. Uma aplicação com esta autorização pode obter o número deste telemóvel assim como o número de série do mesmo, se existe uma chamada ativa, o número a que a essa chamada está ligada, etc."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"impedir que o tablet entre em inactividade"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir modo de inactividade do telefone"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Executar como um teste de nível inferior do fabricante, permitindo o acesso total ao hardware do telefone. Apenas disponível quando um telefone está em execução em modo de teste do fabricante."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"definir imagem de fundo"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite à aplicação definir a imagem de fundo do sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"definir sugestões de tamanho da imagem de fundo"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar o tamanho da imagem de fundo"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que a aplicação defina as sugestões de tamanho da imagem de fundo do sistema."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"repor definições de fábrica do sistemas"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que a aplicação reponha totalmente as definições de fábrica do sistema, apagando todos os dados, configurações e aplicações instaladas."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que a aplicação altere o fuso horário do telemóvel."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"funciona como Serviço de Gestor de Conta"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que a aplicação efetue chamadas para Autenticadores de Conta."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"descobrir contas reconhecidas"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"procurar contas no dispositivo"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que a aplicação obtenha a lista de contas reconhecidas pelo tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que a aplicação obtenha a lista de contas reconhecidas pelo telemóvel."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"funciona como autenticador de conta"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"criar contas e definir palavras-passe"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que uma aplicação utilize as funcionalidades de autenticador de conta do Gestor de Conta, incluindo a criação de contas e a obtenção e definição das respetivas palavras-passe."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"gerir a lista de contas"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"adicionar ou remover contas"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que a aplicação execute operações, como adicionar e remover contas e eliminar a respetiva palavra-passe."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"utilizar as credenciais de autenticação de uma conta"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"utilizar contas no dispositivo"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que a aplicação solicite tokens de autenticação."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ver estado da rede"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver ligações de rede"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite à aplicação ver o estado de todas as redes."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acesso total à internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite à aplicação criar camadas de rede."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que a aplicação altere o estado de conectividade da rede ligada."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"mudar definição de utilização de dados de segundo plano"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite à aplicação mudar a definição de utilização de dados em segundo plano."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"ver estado de Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver ligações Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite à aplicação ver as informações acerca do estado do Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"alterar estado de Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"ligar e desligar de redes Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite a uma aplicação ligar e desligar de pontos de acesso de Wi-Fi, bem como efetuar alterações a redes Wi-Fi configuradas."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recepção Multicast Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que a aplicação receba pacotes não enviados diretamente para o aparelho. Esta opção pode ser útil para descobrir serviços oferecidos na vizinhança. Utiliza mais energia do que o modo não multicast."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Administração de Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"aceder às definições de Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite à aplicação configurar o tablet Bluetooth local, bem como descobrir e emparelhar com dispositivos remotos."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que a aplicação configure o telemóvel Bluetooth local, bem como descobrir e emparelhar com dispositivos remotos."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Ver estado do WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver ligações WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite à aplicação ver as informações acerca do estado do WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Alterar estado do WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que a aplicação se ligue e desligue da rede WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"criar ligações Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"sincronizar com dispositivos Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que a aplicação veja a configuração do tablet Bluetooth local, bem como efetuar e aceitar ligações com dispositivos emparelhados."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que a aplicação veja a configuração do telefone Bluetooth local, bem como efetuar e aceitar ligações com dispositivos emparelhados."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controlo Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permite que a aplicação comunique com etiquetas, cartões e leitores Near Field Communication (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"desactivar bloqueio de teclas"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desativar o bloqueio do ecrã"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite à aplicação desativar o bloqueio de teclas e qualquer segurança por palavra-passe associada. Um exemplo legítimo é a desativação do bloqueio de teclas pelo telemóvel ao receber uma chamada, reativando, em seguida, o bloqueio de teclas ao terminar a chamada."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"ler definições de sincronização"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que a aplicação leia as definições de sincronização, como, por exemplo, se a sincronização está ativada na aplicação Pessoas."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"definições de sincronização de escrita"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ativar e desativar a sincronização"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que a aplicação modifique as definições de sincronização como, por exemplo, se a sincronização está ativada nos Contactos."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"ler estatísticas de sincronização"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite à aplicação ler as estatísticas de sincronização, como o histórico de sincronizações ocorridas."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite à aplicação obter detalhes acerca dos feeds atualmente sincronizados."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escrever feeds subscritos"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite à aplicação modificar os feeds atualmente sincronizados. Isto pode permitir a uma aplicação maliciosa alterar os seus feeds sincronizados."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"ler dicionário definido pelo utilizador"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"ler os termos adicionados ao dicionário"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite à aplicação ler quaisquer palavras, nomes e expressões privadas que o utilizador possa ter armazenado no dicionário do utilizador."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"escrever no dicionário definido pelo utilizador"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite à aplicação escrever novas palavras no dicionário do utilizador."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"ler conteúdo da memória USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"ler conteúdo do cartão SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permite que a aplicação leia conteúdos da memória USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permite que a aplicação leia conteúdos do cartão SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"mod./elim. conteúdo do armaz. USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/eliminar conteúdo do cartão SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"ler os conteúdos da memória USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"ler os conteúdos do cartão SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permitir que aplic. leia cont. da mem. USB, que poderão incluir fotogr. e multimédia."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que a aplicação leia os conteúdos do cartão SD, que poderão incluir fotografias e elementos multimédia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificar ou eliminar os conteúdos da memória USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modificar ou eliminar os conteúdos do cartão SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite que a aplicação escreva na unidade de armazenamento USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que a aplicação escreva no cartão SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modif./elim. armaz. interno"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Nenhum cartão SIM no telefone."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insira um cartão SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"O cartão SIM está em falta ou não é legível. Introduza um cartão SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"O cartão SIM foi desativado definitivamente. "\n" Contacte o seu fornecedor de serviços de rede sem fios para obter outro cartão SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botão Faixa anterior"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botão Faixa seguinte"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"carácter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"palavra"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"linha"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"O teste de fábrica falhou"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Freguesia"</string> <string name="autofill_area" msgid="3547409050889952423">"Área"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirado"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ler histórico e marcadores do browser"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ler os marcadores da Web e o histórico"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que a aplicação leia todos os URL visitados pelo Navegador e todos os marcadores do Navegador."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"gravar histórico e marcadores do browser"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"gravar marcadores da Web e o histórico"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que a aplicação modifique o histórico do Navegador ou os marcadores armazenados no seu tablet. As aplicações maliciosas podem usar isto para apagar ou modificar os dados do seu Navegador."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que a aplicação modifique o histórico do Navegador ou os marcadores armazenados no seu telemóvel. As aplicações maliciosas podem usar isto para apagar ou modificar os dados do seu Navegador."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"definir alarme no despertador"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"definir um alarme"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que a aplicação defina um alarme numa aplicação de despertador instalada. Algumas aplicações de despertador podem não integrar esta funcionalidade."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"adicionar correio de voz"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que a aplicação adicione mensagens à sua caixa de entrada de correio de voz."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Definir"</string> <string name="date_time_done" msgid="2507683751759308828">"Concluído"</string> <string name="default_permission_group" msgid="2690160991405646128">"Predefinido"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Não são necessárias permissões"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar tudo"</b></string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index f70370c87878..423eb9105239 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Seu tablet será desligado."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"O seu telefone será desligado."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Deseja desligar?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reiniciar no modo de segurança"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Deseja reiniciar no modo de segurança? Isso desativará todos os aplicativos de terceiros instalados. Eles serão restaurados quando você reiniciar novamente."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Recente"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Nenhum aplicativo recente"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opções do tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Suas mensagens"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Ler e gravar mensagens SMS, e-mails e outras mensagens."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Suas informações pessoais"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acessa diretamente seus contatos e agenda armazenados no tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acessa diretamente os seus contatos e agenda armazenados no telefone."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Seu local"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitore seu local físico."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicação da rede"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Acesse diversos recursos de rede."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Suas contas"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acessar as contas disponíveis."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acesso de nível inferior e controle do sistema."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ferramentas de desenvolvimento"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Recursos necessários apenas para desenvolvedores de aplicativos."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acessa o armazenamento USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acessar o cartão SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que o aplicativo seja a barra de status."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir/recolher barra de status"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite que o aplicativo expanda ou recolha a barra de status."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptar chamadas enviadas"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redirecionar as chamadas efetuadas"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que o aplicativo processe as chamadas de saída e altere o número a ser discado. Aplicativos maliciosos podem monitorar, redirecionar ou evitar chamadas de saída."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"receber SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"receber mensagens de texto (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que o aplicativo receba e processe mensagens SMS. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las para você."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"receber MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"receber mensagens de texto (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que o aplicativo receba e processe mensagens MMS. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las a você."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"receber transmissões de emergência"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite que o aplicativo receba e processe mensagens de transmissão de emergência. Esta permissão só está disponível para aplicativos do sistema."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Permite que o aplicativo envie mensagens SMS. Aplicativos maliciosos podem gerar gastos ao enviar mensagens sem sua confirmação."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensagens SMS sem confirmação"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que o aplicativo envie mensagens SMS. Aplicativos maliciosos podem gerar custos ao enviar mensagens sem sua confirmação."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"ler SMS ou MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"ler suas mensagens de texto (SMS ou MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que o aplicativo leia de mensagens SMS armazenadas em seu tablet ou cartão SIM. Aplicativos maliciosos podem ler suas mensagens confidenciais."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que o aplicativo leia mensagens SMS armazenadas no telefone ou cartão SIM. Aplicativos maliciosos podem ler suas mensagens confidenciais."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"editar SMS ou MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"editar suas mensagens de texto (SMS ou MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que o aplicativo grave mensagens SMS armazenadas em seu tablet ou cartão SIM. Aplicativos maliciosos pode excluir suas mensagens."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que o aplicativo grave mensagens SMS armazenadas no telefone ou cartão SIM. Aplicativos maliciosos podem excluir suas mensagens."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"receber WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"receber mensagens de texto (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que o aplicativo receba e processe mensagens WAP. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las para você."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicativos em execução"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permite que o aplicativo recupere informações sobre atualmente tarefas executadas recentemente e tarefas em execução. Aplicativos maliciosos podem descobrir informações particulares de outros aplicativos."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recuperar detalhes dos aplicativos em execução"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite que o aplicativo recupere informações detalhadas sobre tarefas executadas atual e recentemente. Aplicativos maliciosos podem descobrir informações privadas sobre outros aplicativos."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"reordenar os aplicativos em execução"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permite que o aplicativo mova tarefas para o primeiro plano e para o plano de fundo. Aplicativos maliciosos podem forçar-se para a primeiro plano sem que você tenha controle sobre a ação."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"parar os aplicativos em execução"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite que o aplicativo controle o modo de compatibilidade de tela de outros aplicativos. Aplicativos maliciosos podem interromper o comportamento de outros aplicativos."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"ativar depuração do aplicativo"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que o aplicativo ative a depuração para outro aplicativo. Aplicativos maliciosos podem usar esse recurso para cancelar outros aplicativos."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"alterar as suas configurações de UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"alterar configurações de exibição do sistema"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que o aplicativo altere a configuração atual, como o local ou o tamanho da fonte."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"ativar o modo de carro"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que o aplicativo ative o modo Carro."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"interromper processos em segundo plano"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"fechar outros aplicativos"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite que o aplicativo mate os processos de plano de fundo de outros aplicativos, mesmo se a memória não estiver baixa."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"força o interrompimento de outros aplicativos"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite que o aplicativo force o interrompimento de outros aplicativos."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que o aplicativo transmita uma notificação quando uma mensagem WAP PUSH for recebida. Aplicativos maliciosos podem usar esse recurso para forjar o recebimento de mensagens MMS ou substituir o conteúdo de qualquer página da web com variantes maliciosas."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar número de processos em execução"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite que o aplicativo controle o máximo de processos que serão executados. Nunca é necessário para aplicativos normais."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"fechar todos os aplicativos executados em segundo plano"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forçar encerramento de aplicativos em segundo plano"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que o aplicativo controle se as atividades são sempre encerrados ao serem enviados para o plano de fundo. Nunca é necessário para aplicativos normais."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modificar estatísticas da bateria"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite que o aplicativo modifique as estatísticas coletadas da bateria. Não deve ser usado em aplicativos normais."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que o aplicativo lance a interface de usuário de confirmação de backup completo. Não deve ser usado por qualquer aplicativo."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"exibir janelas não autorizadas"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que o aplicativo crie janelas destinadas ao uso pela interface interna do sistema. Não deve ser usado em aplicativos normais."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"exibir alertas de nível do sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"induzir outros aplicativos"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que o aplicativo mostre janelas de alerta do sistema. Aplicativos maliciosos podem assumir a tela inteira."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar velocidade de animação global"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que o aplicativo altere a velocidade de animação global (animação mais rápida ou mais lenta) a qualquer momento."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite que um aplicativo conceda ou revogue permissões específicas para ele ou outros aplicativos. Aplicativos maliciosos podem usar isso para acessar recursos aos quais você não concedeu permissão."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"definir aplicativos preferidos"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite que o aplicativo modifique seus aplicativos preferidos. Aplicativos maliciosos podem alterar os aplicativos que são executados, falsificando seus aplicativos existentes para coletar seus dados particulares."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modificar configurações globais do sistema"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar configurações do sistema"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite que o aplicativo modifique os dados das configurações do sistema. Aplicativos maliciosos podem corromper a configuração de seu sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar configurações do sistema de segurança"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que o aplicativo modifique dados das configurações seguras do sistema. Não deve ser usado em aplicativos normais."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modificar o mapa de serviços do Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que o aplicativo modifique o mapa de serviços do Google. Não deve ser usado em aplicativos normais."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"iniciar automaticamente na inicialização"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"executar na inicialização"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que o aplicativo inicie-se logo que o sistema concluir a inicialização. Isso pode tornar a inicialização do tablet mais lenta e permitir que o aplicativo deixe o telefone mais lento por estar sempre em execução."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que o aplicativo inicie-se logo que o sistema concluir a inicialização. Isso pode tornar a inicialização do telefone mais lenta e permitir que o aplicativo deixe o telefone mais lento por estar sempre em execução."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar transmissão persistente"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que o aplicativo envie transmissões fixas, que permaneçam depois que a transmissão terminar. Aplicativos maliciosos podem desacelerar ou desestabilizar o tablet, fazendo com que ele utilize muita memória."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que o aplicativo envie transmissões fixas, que permanecem depois que a transmissão termina. Aplicativos maliciosos podem deixar o telefone lento ou instável, fazendo com que ele use muita memória."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"ler dados do contato"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"gravar dados de contato"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"ler seus contatos"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que o aplicativo leia todos os dados sobre os contatos armazenados em seu tablet, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para enviar seus dados de contato para outras pessoas."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que o aplicativo leia todos os dados sobre os contatos armazenados em seu telefone, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para enviar seus dados de contato para outras pessoas."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar seus contatos"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que o aplicativo leia todos os dados sobre os contatos armazenados em seu tablet, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seus dados de contato."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que o aplicativo modifique todos os dados sobre os contatos armazenados em seu telefone, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seus dados de contato."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"ler registro de chamadas"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite que o aplicativo leia o registro de chamadas de seu tablet, incluindo dados sobre chamadas recebidas e efetuadas. Aplicativos maliciosos podem usar esta permissão para enviar seus dados para outras pessoas."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite que o aplicativo leia o registro de chamadas de seu telefone, incluindo dados sobre chamadas recebidas e efetuadas. Aplicativos maliciosos podem usar esta permissão para enviar seus dados para outras pessoas."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"salvar no registo de chamadas"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite que o aplicativo modifique o registro de chamadas de seu tablet, incluindo dados sobre chamadas recebidas e efetuadas. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seu registro de chamadas."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite que o aplicativo modifique o registro de chamadas de seu telefone, incluindo dados sobre chamadas recebidas e efetuadas. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seu registro de chamadas."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"ler dados de seu perfil"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"ler próprio cartão de contato"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que o aplicativo leia informações de perfil pessoais armazenadas em seu dispositivo, como seu nome e informações de contato. Isso significa que o aplicativo pode identificá-lo e enviar suas informações de perfil para outros aplicativos."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"escrever nos dados do perfil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"mod. próprio cartão contato"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que o aplicativo altere ou adicione informações de perfil pessoais armazenados em seu dispositivo, como seu nome e informações de contato. Isso significa que outros aplicativos podem identificá-lo e enviar as informações de seus perfil para outros aplicativos."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ler suas transmissões sociais"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que o aplicativo acesse e sincronize suas atualizações sociais e as de seus amigos. Aplicativos maliciosos podem usar esse recurso para ler comunicações privadas entre você e seus amigos em redes sociais."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forçar reinicialização do telefone"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que o aplicativo force a reinicialização do tablet."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que o aplicativo force a reinicialização do telefone."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montar e desmontar sistemas de arquivos"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acess sist. arquiv armaz. USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"acessar sistema de arquivos do cartão SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite que o aplicativo monte e desmonte sistemas de arquivos para armazenamento removível."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatar armazenamento externo"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"apagar armazenamento USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"apagar cartão SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite que o aplicativo formate o armazenamento removível."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"obter informações sobre o armazenamento interno"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permite que o aplicativo obtenha informações sobre armazenamento interno."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite que o aplicativo conecte/desconecte o armazenamento interno."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"renomear armazenamento interno"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite que o aplicativo renomeie o armazenamento interno."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"controlar o vibrador"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"controlar vibração"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permite que o aplicativo controle a vibração."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"controlar lanterna"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permite que o aplicativo controle a lanterna."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que o aplicativo informe ao sistema quais widgets podem ser usados por qualquer aplicativo. Um aplicativo com essa permissão podem conceder acesso a dados pessoais para outros aplicativos. Não deve ser usado em aplicativos normais."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado do telefone"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que o aplicativo controle os recursos de telefone do dispositivo. Um aplicativo com essa permissão pode alternar entre redes, ligar e desligar o rádio do telefone e assim por diante, sem nunca notificá-lo."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"ler estado e identidade do telefone"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"ler status e identidade do telefone"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que o aplicativo acesse recursos de telefone do dispositivo. Um aplicativo com essa permissão pode identificar o número de telefone e número de série do telefone, se há uma chamada ativa, o número chamado e assim por diante."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"impedir modo de inatividade do tablet"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir modo de inatividade do telefone"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Executa como um teste do fabricante de nível inferior, permitindo o acesso completo ao hardware do telefone. Disponível apenas quando um telefone está em execução no modo de teste do fabricante."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"definir plano de fundo"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite que o aplicativo defina o papel de parede do sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"definir sugestões de tamanho do plano de fundo"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar tamanho do plano de fundo"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que o aplicativo defina as dicas de tamanho do plano de fundo do sistema."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"redefinir o sistema para os padrões de fábrica"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que o aplicativo redefina completamente o sistema para as configurações de fábrica, apagando todos os dados, as configuração e os aplicativos instalados."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que o aplicativo altera o fuso horário do telefone."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"agir como AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que o aplicativo faça chamadas para AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"descobrir contas conhecidas"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"encontrar contas no dispositivo"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que o aplicativo obtenha a lista de contas conhecidas pelo tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que o aplicativo obtenha a lista de contas conhecidas pelo telefone."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"agir como autenticador da conta"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"criar contas e definir senhas"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que o aplicativo use os recursos do autenticador de conta do AccountManager, incluindo a criação de contas e a obtenção e definição de senhas."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"gerenciar a lista de contas"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"adicionar ou remover contas"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que um aplicativo execute operações como adição e remoção de contas e exclusão de senhas."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"usar as credenciais de autenticação de uma conta"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"usar contas no dispositivo"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que o aplicativo solicite tokens de autenticação."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ver estado da rede"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver conexões de rede"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite que o aplicativo visualize o estado de todas as redes."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acesso total da internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite que o aplicativo crie sockets de rede."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que o aplicativo altere o estado de conectividade de rede conectada."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"alterar configuração de uso dos dados de segundo plano"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite que o aplicativo altere as configurações de uso de dados de segundo plano."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"visualizar estado da rede Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver conexões Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite que o aplicativo visualize informações sobre o estado do Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"alterar o estado de Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"conectar e desconectar do Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite que um aplicativo se conecte e desconecte dos pontos de acesso Wi-Fi e faça alterações nas redes Wi-Fi configuradas."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recebimento de multicast Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que o aplicativo receba pacotes não endereçados diretamente para seu aparelho. Isso pode ser útil ao detectar serviços oferecidos nas proximidades. Esse recurso consome mais energia do que o modo não multicast."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"administração de Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"acessar configurações de Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite que um aplicativo configure o tablet Bluetooth local, descubra dispositivos remotos e emparelhe com eles."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que um aplicativo configure o telefone Bluetooth local, descubra e emparelhe com dispositivos remotos."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Visualizar estado do WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver conexões WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite que o aplicativo visualize as informações sobre o estado de WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Alterar estado do WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que o aplicativo seja conectado e desconectado de uma rede WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"criar conexões Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"parear com dispositivos Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que o aplicativo visualize a configuração do tablet Bluetooth local e faça e aceite conexões com dispositivos emparelhados."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que o aplicativo visualize a configuração do telefone Bluetooth local e possa estabelecer e aceitar conexões com dispositivos pareados."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controlar a comunicação a curta distância"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permite que o aplicativo se comunique com leitores, cartões e etiqueta NFC (Comunicação a curta distância)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"desativar o bloqueio de teclas"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desativar o bloqueio de tela"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite que o aplicativo desative o bloqueio de teclas e qualquer segurança por senha associada. Um exemplo real é a desativação do bloqueio de teclas pelo telefone ao receber uma chamada e a reativação do bloqueio quando a chamada é finalizada."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"ler as configurações de sincronização"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que o aplicativo leia as configurações de sincronização, como se a sincronização está ativada para o aplicativo de pessoas."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"gravar configurações de sincronização"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ativar e desativar sincronização"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que o aplicativo modifique as configurações de sincronização, como, por exemplo, se a sincronização está ativada para o aplicativo Pessoas."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"ler estatísticas de sincronização"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite que o aplicativo leia as estatísticas de sincronização; por exemplo, o histórico de sincronizações realizadas."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite que o aplicativo obtenha detalhes sobre os feeds sincronizados no momento."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"gravar feeds inscritos"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite que o aplicativo modifique seus feeds sincronizados no momento. Aplicativos maliciosos podem alterar seus feeds sincronizados."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"ler dicionário definido pelo usuário"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"ler termos adicionados ao dicionário"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que o aplicativo leia palavras, nomes e frases particulares armazenados pelo usuário no dicionário do usuário."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"gravar no dicionário definido pelo usuário"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que o aplicativo grave novas palavras no dicionário do usuário."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"ler conteúdo do armaz. USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"ler conteúdo do cartão SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permite apl. ler cont. arm USB"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permite que o aplicativo leia o conteúdo do cartão SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar/excluir cont. USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/excluir conteúdo do cartão SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"ler conteúdo do armaz. USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"ler conteúdo do cartão SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Perm apl leia cont arm USB, incl fotos e mídia."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que o aplicativo leia o conteúdo do cartão SD, o qual pode incluir fotos e mídia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modif ou excl cont. armaz USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modificar ou excluir conteúdo do cartão SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite gravar no armaz. USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que o aplicativo grave em seu cartão SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modificar/excluir conteúdos de armazenamento de mídia internos"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Não há um cartão SIM no telefone."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insera um cartão SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"O cartão SIM não foi inserido ou não é possível lê-lo. Insira um cartão SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"O cartão SIM foi desativado permanentemente."\n"Entre em contato com seu provedor de serviços sem fio para obter outro cartão SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botão \"Faixa anterior\""</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botão \"Próxima faixa\""</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"caractere"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"palavra"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"linha"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Falha no teste de fábrica"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Paróquia"</string> <string name="autofill_area" msgid="3547409050889952423">"Área"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirado"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ler histórico e favoritos do Navegador"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ler seu histórico e seus favoritos da web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que o aplicativo leia todos os URLs visitados pelo navegador e todos os favoritos do navegador."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"gravar histórico e favoritos do Navegador"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"gravar seu histórico e seus favoritos da web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que o aplicativo modifique o histórico do navegador ou dos favoritos armazenados em seu tablet. Aplicativos maliciosos podem usar isso para apagar ou modificar os dados de seu navegador."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que o aplicativo modifique o histórico do navegador ou os favoritos armazenados em seu telefone. Aplicativos maliciosos podem usar esse recurso para apagar ou modificar os dados de seu navegador."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"definir alarme no despertador"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"definir um alarme"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que o aplicativo defina um alarme em um aplicativo despertador instalado. Alguns aplicativos despertador podem não implementar este recurso."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"adicionar correio de voz"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que o aplicativo adicione mensagens a sua caixa de entrada do correio de voz."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Definir"</string> <string name="date_time_done" msgid="2507683751759308828">"Concluído"</string> <string name="default_permission_group" msgid="2690160991405646128">"Padrão"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVO: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nenhuma permissão necessária"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar todas"</b></string> diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml index a4ffc429761b..f6177ba7f93f 100644 --- a/core/res/res/values-rm/strings.xml +++ b/core/res/res/values-rm/strings.xml @@ -209,15 +209,78 @@ <!-- no translation found for permgroupdesc_messages (7821999071003699236) --> <skip /> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vossas infurmaziuns persunalas"</string> - <!-- no translation found for permgroupdesc_personalInfo (6975389054186265786) --> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> <skip /> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acceder directamain als contacts ed al chalender memorisà sin il telefonin."</string> <string name="permgrouplab_location" msgid="635149742436692049">"Vossa posiziun"</string> <!-- no translation found for permgroupdesc_location (5704679763124170100) --> <skip /> <string name="permgrouplab_network" msgid="5808983377727109831">"Communicaziun rait"</string> <!-- no translation found for permgroupdesc_network (4478299413241861987) --> <skip /> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Voss contos"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Access als contos disponibels"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Cumonds da la hardware"</string> @@ -229,6 +292,10 @@ <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Utensils per sviluppaders"</string> <!-- no translation found for permgroupdesc_developmentTools (7058828032358142018) --> <skip /> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Memoria"</string> <!-- no translation found for permgroupdesc_storage (7442318502446874999) --> <skip /> @@ -242,13 +309,16 @@ <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expander/reducir la trav da status"</string> <!-- no translation found for permdesc_expandStatusBar (6917549437129401132) --> <skip /> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptar cloms sortints"</string> + <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) --> + <skip /> <!-- no translation found for permdesc_processOutgoingCalls (1152111671618301044) --> <skip /> - <string name="permlab_receiveSms" msgid="2697628268086208535">"retschaiver SMS"</string> + <!-- no translation found for permlab_receiveSms (8673471768947895082) --> + <skip /> <!-- no translation found for permdesc_receiveSms (8107887121893611793) --> <skip /> - <string name="permlab_receiveMms" msgid="8894700916188083287">"retschaiver MMS"</string> + <!-- no translation found for permlab_receiveMms (1821317344668257098) --> + <skip /> <!-- no translation found for permdesc_receiveMms (1424805308566612086) --> <skip /> <!-- no translation found for permlab_receiveEmergencyBroadcast (1803477660846288089) --> @@ -266,23 +336,30 @@ <skip /> <!-- no translation found for permdesc_sendSmsNoConfirmation (3437759207020400204) --> <skip /> - <string name="permlab_readSms" msgid="4085333708122372256">"leger SMS u MMS"</string> + <!-- no translation found for permlab_readSms (8745086572213270480) --> + <skip /> <!-- no translation found for permdesc_readSms (2341692916884515613) --> <skip /> <!-- no translation found for permdesc_readSms (5653850482025875493) --> <skip /> - <string name="permlab_writeSms" msgid="6881122575154940744">"modifitgar SMS u MMS"</string> + <!-- no translation found for permlab_writeSms (3216950472636214774) --> + <skip /> <!-- no translation found for permdesc_writeSms (5160413947794501538) --> <skip /> <!-- no translation found for permdesc_writeSms (7268668709052328567) --> <skip /> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"retschaiver messadis WAP"</string> + <!-- no translation found for permlab_receiveWapPush (5991398711936590410) --> + <skip /> <!-- no translation found for permdesc_receiveWapPush (7983455145335316872) --> <skip /> <!-- no translation found for permlab_getTasks (6466095396623933906) --> <skip /> <!-- no translation found for permdesc_getTasks (6608159250520381359) --> <skip /> + <!-- no translation found for permlab_getDetailedTasks (6229468674753529501) --> + <skip /> + <!-- no translation found for permdesc_getDetailedTasks (153824741440717599) --> + <skip /> <!-- no translation found for permlab_reorderTasks (2018575526934422779) --> <skip /> <!-- no translation found for permdesc_reorderTasks (4175137612205663399) --> @@ -303,13 +380,15 @@ <skip /> <!-- no translation found for permdesc_setDebugApp (4474512416299013256) --> <skip /> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"modifitgar ils parameters da la UI"</string> + <!-- no translation found for permlab_changeConfiguration (4162092185124234480) --> + <skip /> <!-- no translation found for permdesc_changeConfiguration (4372223873154296076) --> <skip /> <string name="permlab_enableCarMode" msgid="5684504058192921098">"activar il modus dad auto"</string> <!-- no translation found for permdesc_enableCarMode (4853187425751419467) --> <skip /> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"interrumper ils process en il fund davos"</string> + <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) --> + <skip /> <!-- no translation found for permdesc_killBackgroundProcesses (931129103262126617) --> <skip /> <!-- no translation found for permlab_forceStopPackages (2329627428832067700) --> @@ -348,7 +427,7 @@ <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar il dumber maximal da process exequids"</string> <!-- no translation found for permdesc_setProcessLimit (7318061314040879542) --> <skip /> - <!-- no translation found for permlab_setAlwaysFinish (238828158465736054) --> + <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) --> <skip /> <!-- no translation found for permdesc_setAlwaysFinish (7471310652868841499) --> <skip /> @@ -365,7 +444,8 @@ <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"mussar fanestras betg autorisadas"</string> <!-- no translation found for permdesc_internalSystemWindow (7458387759461466397) --> <skip /> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"mussar avertiments dal sistem"</string> + <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) --> + <skip /> <!-- no translation found for permdesc_systemAlertWindow (8507863469978066409) --> <skip /> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modifitgar la sveltezza globala da las animaziuns"</string> @@ -480,7 +560,8 @@ <skip /> <!-- no translation found for permdesc_setPreferredApplications (4973986762241783712) --> <skip /> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modifitgar parameters generals dal sistem"</string> + <!-- no translation found for permlab_writeSettings (2226195290955224730) --> + <skip /> <!-- no translation found for permdesc_writeSettings (7775723441558907181) --> <skip /> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modifitgar ils parameters da segirezza dal sistem"</string> @@ -489,7 +570,8 @@ <string name="permlab_writeGservices" msgid="2149426664226152185">"modifitgar Google Services Map"</string> <!-- no translation found for permdesc_writeGservices (1287309437638380229) --> <skip /> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"aviar automaticamain suenter ch\'il sistem è avià"</string> + <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) --> + <skip /> <!-- no translation found for permdesc_receiveBootCompleted (7390304664116880704) --> <skip /> <!-- no translation found for permdesc_receiveBootCompleted (513950589102617504) --> @@ -499,12 +581,14 @@ <skip /> <!-- no translation found for permdesc_broadcastSticky (3287869131621514325) --> <skip /> - <string name="permlab_readContacts" msgid="6219652189510218240">"leger las datas da contact"</string> + <!-- no translation found for permlab_readContacts (8348481131899886131) --> + <skip /> <!-- no translation found for permdesc_readContacts (6370069055638209432) --> <skip /> <!-- no translation found for permdesc_readContacts (4093353182535351501) --> <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"scriver datas da contact"</string> + <!-- no translation found for permlab_writeContacts (5107492086416793544) --> + <skip /> <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> <skip /> <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> @@ -521,11 +605,11 @@ <skip /> <!-- no translation found for permdesc_writeCallLog (683941736352787842) --> <skip /> - <!-- no translation found for permlab_readProfile (6824681438529842282) --> + <!-- no translation found for permlab_readProfile (4701889852612716678) --> <skip /> <!-- no translation found for permdesc_readProfile (94520753797630679) --> <skip /> - <!-- no translation found for permlab_writeProfile (4679878325177177400) --> + <!-- no translation found for permlab_writeProfile (907793628777397643) --> <skip /> <!-- no translation found for permdesc_writeProfile (4637366723793045603) --> <skip /> @@ -595,10 +679,16 @@ <skip /> <!-- no translation found for permdesc_reboot (5326008124289989969) --> <skip /> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montar e demontar sistems da datotecas"</string> + <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) --> + <skip /> + <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) --> + <skip /> <!-- no translation found for permdesc_mount_unmount_filesystems (1829290701658992347) --> <skip /> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formataziun da la memoria externa"</string> + <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) --> + <skip /> + <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) --> + <skip /> <!-- no translation found for permdesc_mount_format_filesystems (8784268246779198627) --> <skip /> <!-- no translation found for permlab_asec_access (3411338632002193846) --> @@ -621,7 +711,8 @@ <skip /> <!-- no translation found for permdesc_asec_rename (1794757588472127675) --> <skip /> - <string name="permlab_vibrate" msgid="7768356019980849603">"controllar la vibraziun"</string> + <!-- no translation found for permlab_vibrate (7696427026057705834) --> + <skip /> <!-- no translation found for permdesc_vibrate (6284989245902300945) --> <skip /> <string name="permlab_flashlight" msgid="2155920810121984215">"controllar la glischina"</string> @@ -661,7 +752,8 @@ <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modifitgar il status dal telefon"</string> <!-- no translation found for permdesc_modifyPhoneState (1029877529007686732) --> <skip /> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"leger il status e l\'identitad dal telefon"</string> + <!-- no translation found for permlab_readPhoneState (9178228524507610486) --> + <skip /> <!-- no translation found for permdesc_readPhoneState (5127767618743602782) --> <skip /> <!-- no translation found for permlab_wakeLock (1531731435011495015) --> @@ -685,7 +777,8 @@ <string name="permlab_setWallpaper" msgid="6627192333373465143">"definir la culissa"</string> <!-- no translation found for permdesc_setWallpaper (7373447920977624745) --> <skip /> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"definir ils indicaturs da grondezza per il fund davos"</string> + <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) --> + <skip /> <!-- no translation found for permdesc_setWallpaperHints (8235784384223730091) --> <skip /> <string name="permlab_masterClear" msgid="2315750423139697397">"reinizialisar il sistem cun ses parameters originals"</string> @@ -704,21 +797,26 @@ <string name="permlab_accountManagerService" msgid="4829262349691386986">"agir sco administratur da contos"</string> <!-- no translation found for permdesc_accountManagerService (1948455552333615954) --> <skip /> - <string name="permlab_getAccounts" msgid="4549918644233460103">"tschertgar contos enconuschents"</string> + <!-- no translation found for permlab_getAccounts (1086795467760122114) --> + <skip /> <!-- no translation found for permdesc_getAccounts (3238360555257773358) --> <skip /> <!-- no translation found for permdesc_getAccounts (2735689364629830348) --> <skip /> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"agir sco autentificatur da contos"</string> + <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) --> + <skip /> <!-- no translation found for permdesc_authenticateAccounts (5472124296908977260) --> <skip /> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"administrar la glista da contos"</string> + <!-- no translation found for permlab_manageAccounts (4983126304757177305) --> + <skip /> <!-- no translation found for permdesc_manageAccounts (8698295625488292506) --> <skip /> - <string name="permlab_useCredentials" msgid="6401886092818819856">"utilisar las infurmaziuns dad autentificaziun dad in conto"</string> + <!-- no translation found for permlab_useCredentials (235481396163877642) --> + <skip /> <!-- no translation found for permdesc_useCredentials (7984227147403346422) --> <skip /> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"mussar il status da la rait"</string> + <!-- no translation found for permlab_accessNetworkState (4951027964348974773) --> + <skip /> <!-- no translation found for permdesc_accessNetworkState (479772796952547198) --> <skip /> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"access cumplet a l\'internet"</string> @@ -738,22 +836,24 @@ <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"modifitgar il parameter d\'utilisaziun da datas dal fund davos"</string> <!-- no translation found for permdesc_changeBackgroundDataSetting (5347729578468744379) --> <skip /> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"mussar il status WLAN"</string> + <!-- no translation found for permlab_accessWifiState (5202012949247040011) --> + <skip /> <!-- no translation found for permdesc_accessWifiState (7770452658226256831) --> <skip /> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"modifitgar il status WLAN"</string> + <!-- no translation found for permlab_changeWifiState (6550641188749128035) --> + <skip /> <!-- no translation found for permdesc_changeWifiState (7399961004537946240) --> <skip /> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permetter la recepziun da multicast WLAN"</string> <!-- no translation found for permdesc_changeWifiMulticastState (7633598524564320817) --> <skip /> - <!-- no translation found for permlab_bluetoothAdmin (3606576270792236062) --> + <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) --> <skip /> <!-- no translation found for permdesc_bluetoothAdmin (6921177471748882137) --> <skip /> <!-- no translation found for permdesc_bluetoothAdmin (8931682159331542137) --> <skip /> - <!-- no translation found for permlab_accessWimaxState (1232061307208861588) --> + <!-- no translation found for permlab_accessWimaxState (7436749103151096452) --> <skip /> <!-- no translation found for permdesc_accessWimaxState (5914958077555177749) --> <skip /> @@ -761,7 +861,8 @@ <skip /> <!-- no translation found for permdesc_changeWimaxState (3328853825006455912) --> <skip /> - <string name="permlab_bluetooth" msgid="8361038707857018732">"stabilir connexiuns bluetooth"</string> + <!-- no translation found for permlab_bluetooth (6127769336339276828) --> + <skip /> <!-- no translation found for permdesc_bluetooth (7007851048416363446) --> <skip /> <!-- no translation found for permdesc_bluetooth (31846362767164948) --> @@ -770,13 +871,15 @@ <skip /> <!-- no translation found for permdesc_nfc (7120611819401789907) --> <skip /> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"deactivar la bloccaziun da la tastatura"</string> + <!-- no translation found for permlab_disableKeyguard (3598496301486439258) --> + <skip /> <!-- no translation found for permdesc_disableKeyguard (6231611286892232626) --> <skip /> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"leger ils parameters da sincronisaziun"</string> <!-- no translation found for permdesc_readSyncSettings (5464056785274229278) --> <skip /> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"scriver configuraziuns da sincronisaziun"</string> + <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) --> + <skip /> <!-- no translation found for permdesc_writeSyncSettings (1466056564502117130) --> <skip /> <string name="permlab_readSyncStats" msgid="7396577451360202448">"leger las statisticas da sincronisaziun"</string> @@ -788,7 +891,7 @@ <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"scriver feeds abunads"</string> <!-- no translation found for permdesc_subscribedFeedsWrite (6928930188826089413) --> <skip /> - <!-- no translation found for permlab_readDictionary (8410247960433376352) --> + <!-- no translation found for permlab_readDictionary (4107101525746035718) --> <skip /> <!-- no translation found for permdesc_readDictionary (8977815988329283705) --> <skip /> @@ -796,17 +899,18 @@ <skip /> <!-- no translation found for permdesc_writeDictionary (8185385716255065291) --> <skip /> - <!-- no translation found for permlab_sdcardRead (4086221374639183281) --> + <!-- no translation found for permlab_sdcardRead (367275095159405468) --> <skip /> - <!-- no translation found for permlab_sdcardRead (8537875151845139539) --> + <!-- no translation found for permlab_sdcardRead (2188156462934977940) --> <skip /> - <!-- no translation found for permdesc_sdcardRead (1055302898999352339) --> + <!-- no translation found for permdesc_sdcardRead (3530894470637667917) --> <skip /> - <!-- no translation found for permdesc_sdcardRead (7947792373570683542) --> + <!-- no translation found for permdesc_sdcardRead (2555811422562526606) --> <skip /> - <!-- no translation found for permlab_sdcardWrite (85430876310764752) --> + <!-- no translation found for permlab_sdcardWrite (8485979062254666748) --> + <skip /> + <!-- no translation found for permlab_sdcardWrite (9084476432661578751) --> <skip /> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modifitgar/stizzar cuntegns da la carta SD"</string> <!-- no translation found for permdesc_sdcardWrite (6175406299445710888) --> <skip /> <!-- no translation found for permdesc_sdcardWrite (4337417790936632090) --> @@ -1052,6 +1156,8 @@ <skip /> <!-- no translation found for lockscreen_missing_sim_instructions_long (3526573099019319472) --> <skip /> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (910904643433151371) --> <skip /> <!-- no translation found for lockscreen_transport_prev_description (201594905152746886) --> @@ -1179,15 +1285,17 @@ <skip /> <!-- no translation found for autofill_emirate (2893880978835698818) --> <skip /> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"leger la cronologia ed ils segnapaginas dal navigatur"</string> + <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) --> + <skip /> <!-- no translation found for permdesc_readHistoryBookmarks (4577476392604595921) --> <skip /> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"scriver en la cronologia ed en ils segnapaginas dal navigatur"</string> + <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) --> + <skip /> <!-- no translation found for permdesc_writeHistoryBookmarks (1757103804824209530) --> <skip /> <!-- no translation found for permdesc_writeHistoryBookmarks (6693764355720719197) --> <skip /> - <!-- no translation found for permlab_setAlarm (5924401328803615165) --> + <!-- no translation found for permlab_setAlarm (1379294556362091814) --> <skip /> <!-- no translation found for permdesc_setAlarm (316392039157473848) --> <skip /> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index b41940ef7192..602236dbfd7b 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Computerul dvs. tablet PC se va închide."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefonul dvs. se va închide."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Doriţi să închideţi?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reporniţi în modul sigur"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Doriţi să reporniţi în modul sigur? Astfel vor fi dezactivate toate aplicaţiile terţă parte pe care le-aţi instalat. Acestea vor fi restabilite când reporniţi din nou."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Recente"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Nu există aplicaţii recente."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Opţiuni tablet PC"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Mesajele dvs."</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Citire şi scriere mesaje SMS, e-mailuri şi alte mesaje."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informaţiile dvs. personale"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acces direct la agenda şi la calendarul stocate pe computerul dvs. tablet PC."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acces direct la agenda şi la calendarul stocate pe telefonul dvs."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Locaţia dvs."</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Monitorizează locaţia dvs. fizică."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicare în reţea"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Accesează diferite funcţii ale reţelei."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Conturile dvs."</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accesează conturile disponibile."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controale hardware"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acces şi control de nivel redus ale sistemului."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Instrumente de dezvoltare"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funcţii necesare doar pentru dezvoltatorii de aplicaţii."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Stocare"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accesează stocarea USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesează cardul SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Permite aplicaţiei să fie bară de stare."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"extindere/restrângere bară de stare"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite aplicaţiei să extindă sau să restrângă bara de stare."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"interceptare apeluri trimise"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redirecţionează apelurile efectuate"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite aplicaţiei să proceseze apelurile efectuate şi să schimbe numărul care trebuie format. Aplicaţiile rău intenţionate pot monitoriza, redirecţiona sau împiedica apelurile efectuate."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"primire SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"primeşte mesaje text (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite aplicaţiei să primească şi să proceseze mesaje SMS. Aplicaţiile rău intenţionate pot să monitorizeze mesajele sau să le şteargă fără să vi le arate."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"primire MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"primeşte mesaje text (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite aplicaţiei să primească şi să proceseze mesaje MMS. Aplicaţiile rău intenţionate pot să monitorizeze mesajele sau să le şteargă fără să vi le arate."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"primeşte mesaje difuzate de urgenţă"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite aplicaţiei să primească şi să proceseze mesajele difuzate de urgenţă. Această permisiune este disponibilă numai pentru aplicaţiile de sistem."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Permite aplicaţiei să trimită mesaje SMS. Aplicaţiile rău intenţionate pot să vă genereze costuri, deoarece trimit mesaje fără confirmarea dvs."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"trimitere mesaje SMS fără confirmare"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite aplicaţiei să trimită mesaje SMS. Aplicaţiile rău intenţionate pot să vă genereze costuri, deoarece trimit mesaje fără confirmarea dvs."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"citire mesaje SMS sau MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"citeşte mesajele text (SMS sau MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite aplicaţiei să citească mesajele SMS stocate pe tabletă sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă citească mesajele confidenţiale"</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite aplicaţiei să citească mesajele SMS stocate pe telefon sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă citească mesajele confidenţiale."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"editare SMS sau MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"editează mesajele text (SMS sau MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite aplicaţiei să scrie în mesajele SMS stocate pe tabletă sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă şteargă mesajele."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite aplicaţiei să scrie în mesajele SMS stocate pe telefon sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă şteargă mesajele."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"primire WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"primeşte mesaje text (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite aplicaţiei să primească şi să proceseze mesaje WAP. Aplicaţiile rău intenţionate pot să monitorizeze mesajele sau să le şteargă fără să vi le arate."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"preluare aplicaţii care rulează"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Permite aplicaţiei să preia informaţii despre activităţile rulate curent şi recent. Aplicaţiile rău intenţionate pot să descopere informaţii private despre alte aplicaţii."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"preia detalii despre aplicaţiile care rulează"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite aplicaţiei să preia informaţii detaliate despre activităţile rulate curent şi recent. Aplicaţiile rău intenţionate pot să descopere informaţii private despre alte aplicaţii."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"reordonare aplicaţii care rulează"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Permite aplicaţiei să mute activităţile în prim-plan şi în fundal. Aplicaţiile rău intenţionate pot să apară forţat în prim-plan, fără ca dvs. să puteţi controla acest lucru."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"oprire aplicaţii care rulează"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite aplicaţiei să controleze modul de compatibilitate a ecranului pentru alte aplicaţii. Aplicaţiile rău intenţionate pot afecta comportamentul altor aplicaţii."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"activare depanare aplicaţie"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite aplicaţiei să activeze depanarea pentru o altă aplicaţie. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a închide alte aplicaţii."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"modificare setări UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modifică setările de afişare ale sistemului"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite aplicaţiei să modifice configurarea curentă, cum ar fi limba sau dimensiunea generală a fontului."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"activare mod Maşină"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite aplicaţiei să activeze modul Maşină."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"oprire procese din fundal"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"închide alte aplicaţii"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite aplicaţiei să oprească procesele derulate în fundal de alte aplicaţii, chiar dacă există suficientă memorie."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"forţare oprire a altor aplicaţii"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite aplicaţiei să oprească alte aplicaţii în mod forţat."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite aplicaţiei să difuzeze o notificare de primire a unui mesaj WAP PUSH. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a deturna primirea mesajelor MMS sau pentru a înlocui fără a vă înştiinţa conţinutul oricărei pagini web cu variante rău intenţionate."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitare număr de procese în derulare"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite aplicaţiei să controleze numărul maxim de procese care vor rula. Nu este niciodată necesară pentru aplicaţiile obişnuite."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"închidere a tuturor aplicaţiilor din fundal"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forţează închiderea aplicaţiilor de fundal"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite aplicaţiei să controleze dacă activităţile sunt întotdeauna închise imediat ce ajung în fundal. Nu este niciodată necesară pentru aplicaţiile obişnuite."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"modificare statistici referitoare la baterie"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite aplicaţiei să modifice statisticile colectate despre baterie. Nu se utilizează de aplicaţiile obişnuite."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite aplicaţiei să lanseze interfaţa de utilizare pentru confirmarea copiei de rezervă complete. Nu poate fi utilizată de orice aplicaţie."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"afişare ferestre neautorizate"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite aplicaţiei să creeze ferestre destinate a fi folosite de către interfaţa de utilizare a sistemului intern. Nu se utilizează de aplicaţiile obişnuite."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"afişare alerte la nivel de sistem"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"suprapune elemente vizuale peste alte aplicaţii"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite aplicaţiei să afişeze ferestre de alertă de sistem. Aplicaţiile rău intenţionate pot să preia controlul asupra întregului ecran."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificare viteză de animaţie globală"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite aplicaţiei să modifice oricând viteza globală de animaţie (animaţii mai rapide sau mai lente)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite unei aplicaţii să acorde sau să revoce permisiuni specifice acelei aplicaţii sau altor aplicaţii. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a accesa funcţii pe care nu le-aţi permis."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"setare aplicaţii preferate"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite aplicaţiei să modifice aplicaţiile dvs. preferate. Aplicaţiile rău intenţionate pot să modifice fără a vă înştiinţa aplicaţiile care rulează, păcălind aplicaţiile existente să colecteze date private de la dvs."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"modificare setări sistem globale"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"modifică setări de sistem"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite aplicaţiei să modifice datele din setările sistemului. Aplicaţiile rău intenţionate pot corupe configuraţia sistemului dvs."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificare setări securizate sistem"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite aplicaţiei să modifice datele setărilor securizate ale sistemului. Nu se utilizează de aplicaţiile obişnuite."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"modificare hartă servicii Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite aplicaţiei să modifice harta serviciilor Google. Nu se utilizează de aplicaţiile obişnuite."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"pornire automată la deschidere"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"rulează la pornire"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite aplicaţiei să pornească imediat ce s-a terminat încărcarea sistemului. Din acest motiv, pornirea tabletei poate dura mai mult timp, iar rularea continuă a aplicaţiei poate încetini dispozitivul."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite aplicaţiei să pornească imediat ce s-a terminat încărcarea sistemului. Din acest motiv, pornirea telefonului poate dura mai mult timp, iar rularea continuă a aplicaţiei poate încetini dispozitivul."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"trimitere mesaj difuzat persistent"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite aplicaţiei să trimită mesaje difuzate persistente, care rămân după terminarea mesajului difuzat. Aplicaţiile rău intenţionate pot să încetinească sau să destabilizeze tableta, determinând-o să utilizeze prea multă memorie."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite aplicaţiei să trimită mesaje difuzate persistente, care rămân după terminarea mesajului difuzat. Aplicaţiile rău intenţionate pot să încetinească sau să destabilizeze telefonul, determinându-l să utilizeze prea multă memorie."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"citire date de contact"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"scriere date de contact"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"citeşte agenda"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite aplicaţiei să citească toate datele despre persoanele de contact stocate pe tabletă, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a trimite datele dvs. de contact altor persoane."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite aplicaţiei să citească toate datele despre persoanele de contact stocate pe telefon, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a trimite datele dvs. de contact altor persoane."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"modifică agenda"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite aplicaţiei să modifice datele despre persoanele de contact stocate pe tabletă, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a şterge sau pentru a modifica datele dvs. de contact."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite aplicaţiei să modifice datele despre persoanele de contact stocate pe telefon, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a şterge sau pentru a modifica datele dvs. de contact."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"citeşte jurnalul de apeluri"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite aplicaţiei să citească jurnalul de apeluri al tabletei dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a trimite datele dvs. altor persoane."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite aplicaţiei să citească jurnalul de apeluri al telefonului dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a trimite datele dvs. altor persoane."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"scrie jurnalul de apeluri"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite aplicaţiei să modifice jurnalul de apeluri al tabletei dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a şterge sau pentru a modifica jurnalul dvs. de apeluri."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite aplicaţiei să modifice jurnalul de apeluri al telefonului dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a şterge sau pentru a modifica jurnalul dvs. de apeluri."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"citire date din profilul dvs."</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"citeşte cartea dvs. de vizită"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite aplicaţiei să citească informaţii de profil personal stocate pe dispozitiv, cum ar fi numele şi informaţiile de contact, ceea ce înseamnă că aplicaţia vă poate identifica şi poate trimite informaţiile dvs. de profil altor utilizatori."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"scriere date în profilul dvs."</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"modifică cartea dvs. de vizită"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite aplicaţiei să schimbe sau să adauge conţinut în informaţiile din profilul personal stocate pe dispozitivul dvs., cum ar fi numele şi informaţiile dvs. de contact. Aceasta înseamnă că alte aplicaţii vă pot identifica şi pot trimite informaţiile din profilul dvs. altor persoane."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"citeşte fluxul social"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite aplicaţiei să acceseze şi să sincronizeze actualizările sociale de la dvs. şi de la prietenii dvs. Aplicaţiile rău intenţionate se pot folosi de această permisiune pentru a citi comunicările private dintre dvs. şi prietenii dvs. de pe reţelele sociale."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forţare repornire telefon"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite aplicaţiei să forţeze repornirea tabletei."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite aplicaţiei să forţeze repornirea telefonului."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montare şi demontare sisteme de fişiere"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acces. sist. fişiere stoc. USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accesează sistemul de fişiere pe cardul SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite aplicaţiei să monteze şi să demonteze sisteme de fişiere pentru stocarea pe suporturi amovibile."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatare stocare externă"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"şterge stocarea USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"şterge cardul SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite aplicaţiei să formateze stocarea pe suporturi amovibile."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"descărcare informaţii pe stocarea internă"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Permite aplicaţiei să obţină informaţii despre stocarea internă."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite aplicaţiei să monteze/demonteze stocarea internă."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"redenumire stocare internă"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite aplicaţiei să redenumească stocarea internă."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"controlare mecanism de vibrare"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"controlează vibrarea"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Permite aplicaţiei să controleze mecanismul de vibrare."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"control lanternă"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Permite aplicaţiei să controleze lanterna."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite aplicaţiei să indice sistemului ce aplicaţii pot utiliza anumite widgeturi. Cu ajutorul acestei permisiuni, aplicaţiile pot să acorde altor aplicaţii accesul la datele personale. Nu se utilizează de aplicaţiile obişnuite."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificare stare telefon"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite aplicaţiei să controleze funcţiile de telefon ale dispozitivului. O aplicaţie cu această permisiune poate să schimbe reţeaua, să închidă şi să deschidă radioul şi să efectueze alte acţiuni similare, fără să vă înştiinţeze."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"citire stare şi identitate telefon"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"citeşte starea şi identitatea telefonului"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite aplicaţiei să acceseze funcţiile de telefon ale dispozitivului. O aplicaţie cu această permisiune poate regăsi numărul de telefon şi numărul serial al telefonului, dacă un apel este activ, numărul la care este conectat apelul şi alte aspecte similare."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"împiedicarea computerului tablet PC să intre în repaus"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"împiedicare intrare telefon în repaus"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Rulează ca testare de nivel redus al producătorului, permiţând accesul complet la hardware-ul telefonului. Permisiune disponibilă doar când telefonul rulează în modul de testare a producător."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"setare imagine de fundal"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite aplicaţiei să seteze imaginea de fundal a sistemului."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"setare sugestii de dimensiune pentru imaginile de fundal"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustează dimensiunea imaginii de fundal"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite aplicaţiei să seteze sugestiile privind dimensiunile imaginii de fundal a sistemului."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"resetare sistem la setările prestabilite din fabrică"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Permite aplicaţiei să reseteze complet sistemul la setările din fabrică, ştergând toate datele, configurările şi aplicaţiile instalate."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite aplicaţiei să schimbe fusul orar al telefonului."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"efectuare ca AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite aplicaţiei să efectueze apeluri către AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"descoperire conturi cunoscute"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"găseşte conturi pe dispozitiv"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite aplicaţiei să obţină lista conturilor cunoscute de tabletă."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite aplicaţiei să obţină lista conturilor cunoscute de telefon."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"acţionare ca autentificator de cont"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"creează conturi şi setează parole"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite aplicaţiei să utilizeze capacităţile de autentificator de cont ale AccountManager, incluzând crearea conturilor şi obţinerea şi setarea parolelor."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"gestionare listă de conturi"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"adaugă sau elimină conturi"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite aplicaţiei să efectueze operaţii cum ar fi adăugarea şi eliminarea conturilor şi ştergerea parolelor."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"utilizare acreditive de autentificare pentru un cont"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"utilizează conturile de pe dispozitiv"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite aplicaţiei să solicite indicative de autentificare."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"vizualizare stare reţea"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"vizualizează conexiunile la reţea"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite aplicaţiei să vizualizeze starea tuturor reţelelor."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acces complet la Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite aplicaţiei să creeze socluri de reţea."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite aplicaţiei să modifice starea de conectivitate prin tethering la reţea."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"modificare setare pentru utilizarea datelor din fundal"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite aplicaţiei să modifice setarea pentru utilizarea datelor de fundal."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"vizualizare stare Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"vizualizează conexiunile Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite aplicaţiei să vizualizeze informaţiile despre starea Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"modificare stare Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"se conectează şi se deconectează de la Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite aplicaţiei să se conecteze la şi să se deconecteze de la punctele de acces Wi-Fi, precum şi să efectueze modificări în reţelele Wi-Fi configurate."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitere recepţionare difuzare multiplă Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite aplicaţiei să primească pachete care nu sunt direct adresate dispozitivului dvs. Această permisiune poate fi utilă la descoperirea serviciilor oferite în apropiere. Consumă mai multă energie decât modul fără difuzare multiplă."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"administrare Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accesează setările Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite aplicaţiei să configureze tableta Bluetooth locală, să descopere şi să se împerecheze cu dispozitive la distanţă."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite aplicaţiei să configureze telefonul Bluetooth local, să descopere şi să se împerecheze cu dispozitive la distanţă."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Vizualizaţi starea WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Afişaţi conexiunile WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite aplicaţiei să vizualizeze informaţiile despre starea WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Schimbaţi starea WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite aplicaţiei să se conecteze la şi să se deconecteze de la reţeaua WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"creare conexiuni Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"împerechează dispozitive Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite aplicaţiei să vizualizeze configuraţia tabletei Bluetooth locale, să efectueze şi să accepte conexiuni cu dispozitive împerecheate."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite aplicaţiei să vizualizeze configuraţia telefonului Bluetooth local, să efectueze şi să accepte conexiuni cu dispozitive împerecheate."</string> <string name="permlab_nfc" msgid="4423351274757876953">"controlare schimb de date prin Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Permite aplicaţiei să comunice cu etichetele, cardurile şi cititoarele NFC (Near Field Communication)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"dezactivare blocare taste"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"dezactivează blocarea ecranului"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite aplicaţiei să dezactiveze blocarea tastelor şi orice modalitate asociată de securizare prin parolă. Un bun exemplu este dezactivarea blocării tastelor de către telefon atunci când se primeşte un apel telefonic şi reactivarea blocării tastelor la terminarea apelului."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"citire setări sincronizare"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite aplicaţiei să citească setările de sincronizare, cum ar fi activarea sincronizării pentru aplicaţia Persoane."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"scriere setări de sincronizare"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activează/dezactivează sincronizarea"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite aplicaţiei să modifice setările de sincronizare, cum ar fi activarea sincronizării pentru aplicaţia Persoane."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"citire statistici privind sincronizarea"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite aplicaţiei să citească statisticile privind sincronizarea, de exemplu, istoricul sincronizărilor care au avut loc."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite aplicaţiei să obţină detalii despre feedurile sincronizate în prezent."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"scriere feeduri abonat"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite aplicaţiei să modifice fluxurile sincronizate curent. Aplicaţiile rău intenţionate pot să modifice fluxurile sincronizate."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"citire din dicţionarul definit de utilizator"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"citeşte termenii adăugaţi în dicţionar"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite aplicaţiei să citească cuvinte, nume şi expresii private stocate de utilizator în dicţionarul său."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"scriere în dicţionarul definit de utilizator"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite aplicaţiei să scrie cuvinte noi în dicţionarul utilizatorului."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"citeşte conţinutul stoc. USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"citeşte conţinutul cardului SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Permite aplic. citirea conţinutului stoc. USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Permite aplicaţiei să citească conţinutul cardului SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificare/ştergere a conţinutului stocării USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificare/ştergere conţinut card SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"citeşte conţinutul stocării USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"citeşte conţinutul cardului SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permite aplic. să citească conţin. stoc. USB, care poate include fotogr. şi media."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite aplicaţiei să citească conţinutul cardului SD, care poate include fotografii şi conţinut media."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modifică sau şterge conţinutul stocării USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"modifică sau şterge conţinutul cardului SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite scriere în stoc. USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite aplicaţiei să scrie pe cardul SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modif./şterg. conţinutul media stocat intern"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonul nu are card SIM."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Introduceţi un card SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Cardul SIM lipseşte sau nu poate fi citit. Introduceţi un card SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Cardul dvs. SIM este dezactivat definitiv."\n" Contactaţi furnizorul de servicii wireless pentru a obţine un alt card SIM."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Butonul Melodia anterioară"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Butonul Melodia următoare"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"caracter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"cuvânt"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"rând"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Testarea de fabrică nu a reuşit"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Cartier"</string> <string name="autofill_area" msgid="3547409050889952423">"Zonă"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"citire istoric şi marcaje în browser"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"citeşte marcajele şi istoricul web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite aplicaţiei să citească toate adresele URL accesate din browser şi toate marcajele aflate în acesta."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"citire istoric şi marcaje în browser"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"scrie în marcajele şi în istoricul web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite aplicaţiei să modifice istoricul sau marcajele din browser stocate pe tabletă. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a şterge sau pentru a modifica datele din browser."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite aplicaţiei să modifice istoricul sau marcajele din browser stocate pe telefon. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a şterge sau a modifica datele din browser."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"setare alarmă pentru ceasul cu alarmă"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"setează o alarmă"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Permite aplicaţiei să seteze o alarmă într-o aplicaţie de ceas cu alarmă instalată. Este posibil ca unele aplicaţii de ceas cu alarmă să nu implementeze această funcţie."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"adăugare mesagerie vocală"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite aplicaţiei să adauge mesaje în Mesaje primite în mesageria vocală."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Setaţi"</string> <string name="date_time_done" msgid="2507683751759308828">"Terminat"</string> <string name="default_permission_group" msgid="2690160991405646128">"Prestabilit"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOU: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOU: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nu se solicită nicio permisiune"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ascundeţi"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Afişaţi-le pe toate"</b></string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 9f916933ad71..b9e8e774541b 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Планшетный ПК будет отключен."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Телефон будет выключен."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Завершить работу?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Переход в безопасный режим"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Перейти в безопасный режим? Все приложения сторонних поставщиков отключатся. Они будут включены по возвращении в обычный режим."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Недавние"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Список пуст"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Настройки планшетного ПК"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Сообщения"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Чтение и запись SMS, электронных писем и других сообщений."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Личная информация"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Прямой доступ к контактам и событиям календаря, сохраненным в памяти планшетного ПК."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Прямой доступ к контактам и событиям календаря, сохраненным в памяти телефона."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Ваше местоположение"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Приложение сможет отслеживать ваше местоположение."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Сетевой обмен данными"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Приложение сможет получать доступ к различным сетевым функциям."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ваши аккаунты"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ к имеющимся аккаунтам."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Управление оборудованием"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Доступ нижнего уровня и управление системой."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Инструменты разработки"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функции, предназначенные для разработчиков приложений."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Память"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Доступ к USB-накопителю."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ к SD-карте."</string> @@ -195,30 +261,32 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Приложение сможет заменять собой строку состояния."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"разворачивать/сворачивать строку состояния"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Приложение сможет разворачивать и сворачивать строку состояния."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"перехватывать исходящие вызовы"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"Перенаправление исходящих вызовов"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Приложение сможет обрабатывать исходящие вызовы и изменять набираемый номер. Вредоносные программы смогут отслеживать, перенаправлять или блокировать исходящие вызовы."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"получать SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"Прием SMS"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Приложение сможет получать и обрабатывать SMS. Вредоносные программы смогут отслеживать и удалять сообщения, не показывая их."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"получать MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"Прием MMS"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Приложение сможет получать и обрабатывать MMS. Вредоносные программы смогут отслеживать и удалять сообщения, не показывая их."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"принимать экстренные вызовы"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Приложение сможет получать и обрабатывать экстренные сообщения рассылок. Это разрешение доступно только для системных приложений."</string> - <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"Читать сообщения рассылки"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Приложение сможет считывать сообщения рассылки, полученные вашим устройством. В ряде стран вам будут приходить уведомления об экстренных ситуациях. В этом случае вредоносные программы могут помешать работе вашего устройства."</string> + <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"Читать сообщения массовой рассылки"</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Приложение получит доступ к сообщениям широковещательных SMS-служб, которые в некоторых странах используются для информирования населения об экстренных ситуациях. Вредоносные программы могут помешать работе устройства, на которое поступают такие сообщения."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"отправлять SMS-сообщения"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"Приложение сможет отправлять SMS. Вредоносные программы смогут отправлять SMS без вашего подтверждения, что приведет к непредвиденным расходам."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"отправка SMS без подтверждения"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Приложение сможет отправлять SMS. Вредоносные программы смогут отправлять SMS без вашего подтверждения, что приведет к непредвиденным расходам."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"считывать SMS или MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"Просмотр своих SMS и MMS"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Приложение получит доступ к SMS, сохраненным на планшетном ПК или SIM-карте. Вредоносные программы смогут получить доступ к конфиденциальным данным в сообщениях."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Приложение получит доступ к SMS, сохраненным на телефоне или SIM-карте. Вредоносные программы смогут получить доступ к конфиденциальным данным в сообщениях."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"изменять SMS или MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"Изменение SMS и MMS"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Приложение сможет изменять SMS, сохраненные на планшетном ПК или SIM-карте. Вредоносные программы смогут удалять ваши сообщения."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Приложение сможет изменять SMS, сохраненные на телефоне или SIM-карте. Вредоносные программы смогут удалять ваши сообщения."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"получать WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"Прием WAP-сообщений"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Приложение сможет получать и обрабатывать WAP-сообщения. Вредоносные программы смогут отслеживать и удалять сообщения, не показывая их."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"получение запущенных приложений"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Приложение сможет получать информацию о недавно запущенных и выполняемых задачах. Вредоносные программы смогут получить личную информацию из других приложений."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"получение сведений о работающих приложениях"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Приложение сможет получать подробные сведения о недавно запущенных и выполняемых задачах. При этом конфиденциальная информация о других приложениях не будет защищена от вредоносных программ."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"изменение порядка запущенных приложений"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Приложение сможет перемещать задачи в режим активного или фонового выполнения. Вредоносные программы смогут переводить себя в активный режим без вашего ведома."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"остановка запущенных приложений"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Приложение сможет управлять режимом совместимости экрана других приложений. Вредоносное ПО может привести к сбоям в работе других программ."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"включение отладки приложений"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Приложение сможет включать отладку для другой программы. Вредоносное ПО сможет таким образом останавливать работу других приложений."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"изменять настройки пользовательского интерфейса"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"Изменение настроек отображения"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Приложение сможет изменять текущую конфигурацию, например, региональные настройки или размер шрифта."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"включить режим громкой связи"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Приложение сможет включать режим \"Штурман\"."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"завершать фоновые процессы"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"Закрытие других приложений"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Приложение сможет останавливать фоновые процессы других программ, даже если памяти достаточно."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"принудительное закрытие других приложений"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Приложение сможет принудительно останавливать работу других программ."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Приложение сможет уведомлять о получении сообщений WAP PUSH. Вредоносные программы смогут таким образом фальсифицировать получение MMS или незаметно подменять содержание любой страницы вредоносными данными."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ограничивать количество запущенных процессов"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Приложение сможет управлять максимальным количеством процессов, которые могут быть запущены. Это разрешение не используется обычными приложениями."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"закрытие всех фоновых приложений"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"Закрытие фоновых приложений"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Приложение сможет управлять завершением процессов после их перехода в фоновый режим. Это разрешение не используется обычными приложениями."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"изменять статистику батареи"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Приложение сможет изменять собранную статистику использования заряда батареи. Это разрешение не используется обычными приложениями."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Приложение сможет отображать окно подтверждения полного резервного копирования. Это разрешение не предназначено для всех приложений."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"показывать неавторизованные окна"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Приложение сможет создавать окна для интерфейса внутренней системы. Это разрешение не используется обычными приложениями."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"показывать оповещения системного уровня"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"Размещение поверх других приложений"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Приложение сможет показывать окна системных предупреждений. Вредоносные программы смогут перехватить управление всем экраном."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"изменять глобальную скорость анимации"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Приложение сможет в любой момент изменить общую скорость анимации."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Позволяет приложению предоставлять и отзывать разрешения самому себе и другим программам. Вредоносные приложения могут использовать эту функцию для получения прав, которых вы им не предоставляли."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"настройка предпочтительных приложений"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Приложение сможет изменять предпочтительные приложения. Вредоносные программы смогут незаметно изменять запускаемые вами программы и собирать ваши личные данные от имени существующих приложений."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"изменять общие настройки системы"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"Bзменение настроек системы"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Приложение сможет изменять настройки системы. Вредоносные программы смогут повредить конфигурацию системы."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"изменять настройки системы безопасности"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Приложение сможет изменять системные настройки безопасности. Это разрешение не используется обычными приложениями."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"изменять карту служб Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Приложение сможет изменять карту служб Google. Это разрешение не используется обычными приложениями."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"автоматически запускать при загрузке"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"Автоматический запуск при загрузке"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Приложение сможет запускаться после начальной загрузки системы. Это может привести к увеличению времени включения планшетного ПК и уменьшить его быстродействие в связи с постоянной работой приложения."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Приложение сможет запускаться после начальной загрузки системы. Это может привести к увеличению времени включения телефона и уменьшить его быстродействие в связи с постоянной работой приложения."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"отправить несрочную рассылку"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Приложение сможет отправлять несрочные рассылки, которые не удаляются после их завершения. Вредоносные программы смогут замедлить работу планшетного ПК или сделать ее нестабильной из-за чрезмерного использования памяти."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Приложение сможет делать рассылки типа sticky broadcast. Вредоносные программы смогут замедлить работу телефона или сделать ее нестабильной из-за чрезмерного использования памяти."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"считывать данные контакта"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"перезаписывать данные контакта"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"Просмотр своих контактов"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Приложение сможет читать все данные о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это поможет автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это разрешение для отправки ваших сведений о контактах другим людям."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Приложение сможет читать все данные о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это поможет автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это разрешение для отправки ваших сведений о контактах другим людям."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"Изменение контактов"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Приложение сможет изменять сведения о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это помогает автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это для удаления или изменения ваших сведений о контактах."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Приложение сможет изменять сведения о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это помогает автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это для удаления или изменения ваших сведений о контактах."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"чтение журнала вызовов"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Приложение получит доступ к списку вызовов планшетного ПК, включая данные о входящих и исходящих звонках. Вредоносные приложения могут использовать доступ для передачи ваших данных третьим лицам."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Приложение получит доступ к списку вызовов телефона, включая данные о входящих и исходящих звонках. Вредоносные приложения смогут воспользоваться этим, чтобы отправить ваши данные третьим лицам."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"запись журнала вызовов"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Приложение сможет вносить изменения в список вызовов планшетного ПК и данные о входящих и исходящих звонках. Вредоносные приложения смогут воспользоваться этим для удаления или изменения информации о звонках."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Приложение сможет вносить изменения в список вызовов телефона и данные о входящих и исходящих звонках. Вредоносные приложения смогут воспользоваться этим для удаления или изменения информации о звонках."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"просматривать данные профиля"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"Просмотр своих контактных данных"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Приложение сможет считывать информацию личного профиля, сохраненную на устройстве, такую как ваше имя и контактные данные. Это означает, что приложение сможет получить ваши личные данные и отправить их другим пользователям."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"изменение данных профиля"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"Изменение своих контактных данных"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Приложение сможет изменять и добавлять информацию личного профиля, сохраненную на устройстве, такую как ваше имя и контактные данные. Это означает, что другие приложения смогут получить ваши личные данные и отправить их другим пользователям."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"читать записи в вашей социальной ленте"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Приложение сможет считывать и синхронизировать новости от вас и ваших друзей. Вредоносные программы смогут получить доступ к вашим личным записям и записям ваших друзей в социальных сетях."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"принудительно перезагружать телефон"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Приложение сможет принудительно перезагружать планшетный ПК."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Приложение сможет принудительно перезагружать телефон."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"монтировать и удалять файловые системы"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"Доступ к файловой системе USB-накопителя"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"Доступ к файловой системе SD-карты"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Приложение сможет подключать и удалять файловые системы для съемных накопителей."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"форматировать внешний накопитель"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"Удаление данных с USB-накопителя"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"Удаление данных с SD-карты"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Приложение сможет форматировать съемный накопитель."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"получать сведения о внутреннем накопителе"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Приложение сможет получать сведения о внутреннем хранилище."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Приложение сможет подключать и отключать внутреннее хранилище."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"переименовывать внутренний накопитель"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Приложение сможет переименовывать внутреннее хранилище."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"управлять вибровызовом"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"Управление вибросигналом"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Приложение сможет контролировать вибросигналы."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"управлять вспышкой"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Приложение сможет контролировать вспышку."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Приложение сможет настраивать в системе возможность использования виджетов различными программами. Приложение с таким разрешением может предоставлять другим программам доступ к личным данным. Это разрешение не используется обычными приложениями."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"изменять состояние телефона"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Приложение сможет управлять на устройстве функциями телефона: переключать сети, включать и выключать приемопередатчик, а также выполнять другие подобные действия без уведомления."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"считывать состояние и идентификаторы телефона"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"Получение данных о состоянии и идентификаторах телефона"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Предоставляет приложению доступ к функциям телефона на устройстве. Приложение с таким разрешением может определить номер и серийный номер телефона, состояние активности вызова, номер, с которым установлено соединение, или получить другую подобную информацию."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"не разрешать переключение планшетного ПК в спящий режим"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"предотвращать переключение телефона в спящий режим"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Выполнить стандартную проверку нижнего уровня, обеспечивающую полный доступ к аппаратному обеспечению телефона. Доступно, только в режиме стандартной проверки."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"устанавливать фоновый рисунок"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Приложение сможет устанавливать системные обои."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"давать рекомендации по размеру фоновых рисунков"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"Изменение размера обоев"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Приложение сможет устанавливать подсказки по размеру системных обоев."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"восстанавливать параметры системы по умолчанию, установленные на заводе-изготовителе"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Приложение сможет выполнить полный сброс системы до заводских настроек, удалив все данные, параметры и установленные программы."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Приложение сможет изменять часовой пояс в настройках устройства."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"выступать в качестве службы управления аккаунтом"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Приложение сможет вызывать службы аутентификации аккаунта."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"обнаруживать известные аккаунты"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"Поиск аккаунтов на устройстве"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Приложение сможет получать список аккаунтов, добавленных в планшетный ПК."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Приложение сможет получать список аккаунтов, добавленных в телефон."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"выступать в качестве службы аутентификации аккаунта"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"Создание аккаунтов и установка паролей"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Приложение сможет использовать возможности аутентификации диспетчера аккаунтов, в том числе создавать аккаунты, получать и устанавливать пароли для них."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"управление списком аккаунтов"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"Добавление или удаление аккаунтов"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Приложение сможет добавлять и удалять аккаунты, а также стирать их пароли."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"использование учетных данных аккаунта для аутентификации"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"Использование аккаунтов на устройстве"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Приложение сможет запрашивать токены аутентификации."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"просматривать состояние сети"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"Просмотр сетевых подключений"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Приложение сможет просматривать состояние всех сетей."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"неограниченный доступ в Интернет"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Приложение сможет создавать сетевые сокеты."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Приложение сможет включать и выключать режим модема."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"изменять настройки использования данных в фоновом режиме"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Приложение сможет изменять настройки использования трафика в фоновом режиме."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"просматривать состояние Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"Просмотр подключений Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Приложение сможет просматривать сведения о состоянии Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"изменять состояние Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"Подключение к сети Wi-Fi и отключение от нее"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Приложение сможет подключаться к точкам доступа Wi-Fi и отключаться от них, а также вносить изменения в конфигурацию сетей Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"разрешить принимать многоадресный сигнал Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Приложение сможет получать пакеты данных, не адресованные напрямую вашему устройству. Благодаря этому устройство может обнаруживать новые службы, которые доступны поблизости. Расход заряда батареи при использовании этой функции повышается."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"управление Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Доступ к настройкам Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Приложение сможет настраивать параметры локального планшетного ПК с поддержкой Bluetooth, а также обнаруживать удаленные устройства и выполнять сопряжение с ними."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Приложение сможет настраивать параметры локального телефона с поддержкой Bluetooth, а также обнаруживать удаленные устройства и выполнять сопряжение с ними."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Узнавать о состоянии WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Просмотр подключений WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Приложение сможет получать сведения о состоянии WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Изменять состояние WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Приложение сможет подключаться к сети WiMAX и отключаться от нее."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"создавать подключения Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"Привязка к устройствам Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Приложение сможет просматривать конфигурацию локального планшетного ПК с поддержкой Bluetooth, а также создавать и принимать соединения с сопряженными устройствами."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Приложение сможет просматривать конфигурацию локального телефона с поддержкой Bluetooth, а также запрашивать и подтверждать соединение с другими устройствами."</string> <string name="permlab_nfc" msgid="4423351274757876953">"управлять радиосвязью ближнего действия"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Приложение сможет обмениваться данными с NFC-метками, картами и устройствами считывания, используя связь малого радиуса действия."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"отключать блокировку клавиатуры"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"Отключение защиты экрана"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Приложение сможет отключать блокировку экрана и другие функции защиты. Пример допустимого использования этой функции – отключение блокировки экрана при получении входящего вызова и ее включение после завершения разговора."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"считывать настройки синхронизации"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Приложение сможет считывать настройки синхронизации, например сведения о том, включена ли синхронизация Контактов."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"записывать настройки синхронизации"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"Включение и отключение синхронизации"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Приложение сможет изменять настройки синхронизации, например включать синхронизацию Контактов."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"считывать статистику синхронизации"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Предоставляет приложению доступ к статистике синхронизации, например истории выполненных синхронизаций."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Приложение сможет получать сведения о синхронизируемых в настоящее время фидах."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"создавать фиды с возможностью подписки"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Приложение сможет изменять фиды, синхронизируемые в настоящее время. Вредоносные программы смогут изменять синхронизированные фиды."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"чтение данных из пользовательского словаря"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"Просмотр добавленных в словарь терминов"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Приложение получит доступ ко всем словам, именам и фразам, которые хранятся в пользовательском словаре."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"запись данных в пользовательский словарь"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Приложение сможет добавлять слова в пользовательский словарь."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"чтение данных с USB-накопителя"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"чтение данных с SD-карты"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Приложение сможет считывать данные с USB-накопителя."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Приложение сможет считывать данные с SD-карты."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"доступ к USB-накопителю"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"изменять/удалять содержимое SD-карты"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"Считывание содержимого USB-накопителя"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"Считывание содержимого SD-карты"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Приложение сможет считывать содержимое USB-накопителя, включая фото и файлы мультимедиа."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Приложение сможет считывать содержимое SD-карты, включая фото и файлы мультимедиа."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"Изменение или удаление содержимого USB-накопителя"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"Изменение или удаление содержимого SD-карты"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Приложение сможет записывать данные на USB-накопитель."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Приложение сможет записывать данные на SD-карту."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"изм./удал. данных мультимедиа"</string> @@ -698,12 +764,14 @@ <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Идет зарядка (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string> <string name="lockscreen_charged" msgid="4938930459620989972">"Батарея заряжена"</string> <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string> - <string name="lockscreen_low_battery" msgid="1482873981919249740">"Подключите зарядное устройство."</string> + <string name="lockscreen_low_battery" msgid="1482873981919249740">"Подключите зарядное устройство"</string> <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Нет SIM-карты"</string> <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"SIM-карта не установлена."</string> <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"SIM-карта не установлена."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Вставьте SIM-карту."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-карта отсутствует или недоступна. Вставьте SIM-карту."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-карта окончательно заблокирована."\n"Чтобы получить новую, обратитесь к своему оператору."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Кнопка перехода к предыдущему треку"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Кнопка перехода к следующему треку"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"символ"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"слово"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"ссылка"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"строка"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Не удалось провести стандартный тест"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Округ"</string> <string name="autofill_area" msgid="3547409050889952423">"Область"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Эмират"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"считывать историю и закладки браузера"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Просмотр закладок и истории"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Приложение сможет считывать все URL, посещенные браузером, и все его закладки."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"записывать историю и закладки браузера"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"Запись закладок и истории"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Приложение сможет изменять историю или закладки браузера, сохраненные на устройстве. Вредоносные программы смогут таким образом удалять и изменять ваши данные в браузере."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Приложение может изменять историю или закладки браузера, сохраненные на устройстве. Вредоносные программы смогут таким образом удалять и изменять ваши данные в браузере."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"настраивать сигнал будильника"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"Установка будильника"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Приложение сможет настраивать будильник. Функция поддерживается не во всех программах."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"добавлять голосовые сообщения"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Приложение сможет добавлять голосовые сообщения в папку \"Входящие\"."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Установить"</string> <string name="date_time_done" msgid="2507683751759308828">"Готово"</string> <string name="default_permission_group" msgid="2690160991405646128">"По умолчанию"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВОЕ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВОЕ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Не требуется разрешений"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Скрыть"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Показать все"</b></string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index d87cdf207b16..005988cb6740 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Váš tablet bude vypnutý."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Váš telefón bude vypnutý."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Chcete zariadenie vypnúť?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Reštartovať do núdzového režimu"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Chcete zariadenie reštartovať do núdzového režimu? Zakážu sa tým všetky aplikácie tretích strán, ktoré ste nainštalovali. Tieto aplikácie budú obnovené po ďalšom reštartovaní."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Najnovšie"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Žiadne nedávne aplikácie"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Možnosti tabletu"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Vaše správy"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Čítanie a písanie správ SMS, e-mailov a ďalších správ."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vaše osobné informácie"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Priamy prístup k vašim kontaktom a kalendáru uloženým v tablete."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Priamy prístup k vašim kontaktom a kalendáru uloženým v telefóne."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Vaša poloha"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Sledovanie vašej fyzickej polohy."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Sieťová komunikácia"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Prístup k rôznym funkciám siete."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaše účty"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Prístup k dostupným účtom."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Ovládanie hardvéru"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Nízkoúrovňový prístup a ovládanie systému."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Nástroje pre vývoj"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcie len pre vývojárov aplikácií."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Ukladací priestor"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Prístup do ukl. priestoru USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Prístup na kartu SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Umožňuje aplikácii fungovať ako stavový riadok."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"rozbalenie a zbalenie stavového riadka"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Umožňuje aplikácii rozbaliť alebo zbaliť stavový riadok."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"zachytenie odchádzajúcich hovorov"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"presmerovať odchádzajúce hovory"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Umožňuje aplikácii spracovávať odchádzajúce hovory a zmeniť číslo, ktoré chcete vytočiť. Škodlivé aplikácie môžu sledovať, presmerovať alebo zablokovať odchádzajúce hovory."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"príjem správ SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"prijímať textové správy (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Umožňuje aplikácii prijímať a spracovávať správy SMS. Škodlivé aplikácie môžu sledovať vaše správy alebo ich odstrániť bez toho, aby ich zobrazili."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"príjem správ MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"prijímať textové správy (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Umožňuje aplikácii prijímať a spracovávať správy MMS. Škodlivé aplikácie môžu sledovať vaše správy alebo ich odstrániť bez toho, aby ich zobrazili."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"príjem núdzového vysielania"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Umožňuje aplikácii prijímať a spracovávať správy núdzového vysielania. Toto povolenie je k dispozícii len pre systémové aplikácie."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Umožňuje aplikácii odosielať správy SMS. Škodlivé aplikácie môžu bez vášho potvrdenia odosielať spoplatnené správy."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"posielať správy SMS bez potvrdenia"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Umožňuje aplikácii odosielať správy SMS. Škodlivé aplikácie môžu bez vášho potvrdenia odosielať spoplatnené správy."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"čítanie správ SMS a MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"čítať textové správy (SMS alebo MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Umožňuje aplikácii čítať správy SMS uložené v tablete alebo na karte SIM. Škodlivé aplikácie môžu čítať vaše dôverné správy."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Umožňuje aplikácii čítať správy SMS uložené v telefóne alebo na karte SIM. Škodlivé aplikácie môžu čítať vaše dôverné správy."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"úprava správ SMS a MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"upraviť textové správy (SMS alebo MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Umožňuje aplikácii písať správy SMS uložené v tablete alebo na karte SIM. Škodlivé aplikácie môžu vaše správy odstrániť."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Umožňuje aplikácii písať do správ SMS uložených v telefóne alebo na karte SIM. Škodlivé aplikácie môžu vaše správy odstrániť."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"príjem WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"prijímať textové správy (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Umožňuje aplikácii prijímať a spracovávať správy WAP. Škodlivé aplikácie môžu sledovať vaše správy alebo ich odstrániť bez toho, aby ich zobrazili."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"načítať spustené aplikácie"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Umožňuje aplikácii načítať informácie o aktuálnych a nedávno spustených úlohách. Škodlivé aplikácie môžu odhaliť súkromné informácie o iných aplikáciách."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"načítať podrobnosti o spustených aplikáciách"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Umožňuje aplikácii načítať podrobné informácie o aktuálnych a nedávno spustených úlohách. Škodlivé aplikácie môžu odhaliť súkromné informácie o iných aplikáciách."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"zmeniť poradie spustených aplikácií"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Umožňuje aplikácii presúvať úlohy do popredia a pozadia. Škodlivé aplikácie sa môžu pretlačiť do popredia bez vášho vedomia."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"zastaviť spustené aplikácie"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Umožňuje aplikácii ovládať režim kompatibility obrazovky v ostatných aplikáciách. Škodlivé aplikácie môžu narušiť správanie ostatných aplikácií."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"povoliť ladenie aplikácií"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Umožňuje aplikácii zapnúť ladenie inej aplikácie. Škodlivé aplikácie môžu pomocou tohto nastavenia ukončiť iné aplikácie."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"zmeny vašich nastavení používateľského rozhrania"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"zmeniť systémové nastavenia obrazovky"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Umožňuje aplikácii zmeniť aktuálnu konfiguráciu, napr. miestne nastavenie alebo celkovú veľkosť písma."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivovať režim V aute"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Umožňuje aplikácii povoliť režim V aute."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"ukončiť procesy na pozadí"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zavrieť iné aplikácie"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Umožňuje aplikácii ukončiť procesy na pozadí iných aplikácií (aj v prípade nedostatku pamäte)."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"vynútiť zastavenie ďalších aplikácií"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Umožňuje aplikácii vynútiť zastavenie iných aplikácií."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Umožňuje aplikácii vysielať oznámenie, že správa WAP PUSH bola doručená. Škodlivé aplikácie môžu použiť toto nastavenie na vytvorenie potvrdenia o doručení správy MMS alebo na utajené nahradenie obsahu akejkoľvek stránky škodlivými variantmi."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"obmedzenie počtu spustených procesov"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Umožňuje aplikácii kontrolovať maximálny počet spustených procesov. Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"zavrieť všetky aplikácie na pozadí"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vynútiť zavretie aplikácií na pozadí"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Umožňuje aplikácii ovládať, či sa aktivity po presune na pozadie vždy ukončia. Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"zmena štatistických údajov o batérii"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Umožňuje aplikácii zmeniť zhromaždené štatistické údaje o batérii. Bežné aplikácie toto nastavenie nepoužívajú."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Umožňuje aplikácii spustiť používateľské rozhranie potvrdenia úplnej zálohy. Toto nastavenie by nemala používať žiadna aplikácia."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"zobrazenie neoprávnených okien"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Umožňuje aplikácii vytvárať okná, ktoré majú byť použité interným systémom používateľského rozhrania. Bežné aplikácie toto nastavenie nepoužívajú."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"zobrazenie upozornení systémovej úrovne"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"vykresliť cez ďalšie aplikácie"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Umožňuje aplikácii zobrazovať okná s upozorneniami systému. Škodlivé aplikácie môžu prevziať kontrolu nad celou obrazovkou."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"globálne zmeny rýchlosti animácie"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Umožňuje aplikácii kedykoľvek globálne zmeniť rýchlosť animácie (rýchlejšia alebo pomalšia animácia)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Umožňuje aplikácii povoliť alebo zakázať konkrétne povolenia pre seba alebo iné aplikácie. Škodlivé aplikácie môžu použiť túto možnosť na pristupovanie k funkciám, ktoré ste im nepovolili."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nastaviť preferované aplikácie"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Umožňuje aplikácii zmeniť vaše preferované aplikácie. Škodlivé aplikácie môžu v tichosti zmeniť spustené aplikácie a oklamať existujúce aplikácie, aby zhromažďovali vaše súkromné údaje."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"zmeny globálnych nastavení systému"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"upraviť nastavenia systému"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Umožňuje aplikácii zmeniť údaje nastavení systému. Škodlivé aplikácie môžu poškodiť konfiguráciu vášho systému."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"zmeny zabezpečených nastavení systému"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Umožňuje aplikácii zmeniť údaje o bezpečnostných nastaveniach systému. Bežné aplikácie toto nastavenie nepoužívajú."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"zmeny mapy služieb Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Umožňuje aplikácii upraviť mapu služieb Google. Bežné aplikácie toto nastavenie nepoužívajú."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatické spustenie pri štarte"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"spustiť pri štarte"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Umožňuje aplikácii spustiť sa hneď po spustení systému. Toto nastavenie môže spomaliť spustenie tabletu a tiež jeho celkový výkon, pretože aplikácia bude neustále spustená."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Umožňuje aplikácii okamžité spustenie po spustení systému. Toto nastavenie môže spomaliť spustenie tabletu a tiež celkový výkon tabletu, pretože aplikácia bude neustále zapnutá."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"odoslanie trvalého vysielania"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Umožňuje aplikácii odosielať trvalé vysielania, ktoré pretrvávajú aj po skončení vysielania. Škodlivé aplikácie môžu tablet spomaliť alebo spôsobiť jeho nestabilitu, pretože bude používať príliš veľa pamäte."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Umožňuje aplikácii odosielať trvalé vysielania, ktoré pretrvávajú aj po skončení vysielania. Škodlivé aplikácie môžu telefón spomaliť alebo spôsobiť jeho nestabilitu spotrebou príliš veľkého množstva pamäte."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"čítanie údajov kontaktov"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"zápis údajov kontaktov"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"čítať kontakty"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Umožňuje aplikácii čítať všetky údaje o kontaktoch uložených v tablete vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Umožňuje aplikácii čítať všetky údaje o kontaktoch uložených v telefóne vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"upraviť kontakty"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Umožňuje aplikácii upravovať všetky údaje o kontaktoch uložených v tablete vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Umožňuje aplikácii upravovať všetky údaje o kontaktoch uložených v telefóne vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"čítať denník hovorov"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Umožňuje aplikácii čítať denník hovorov vo vašom tablete vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na odosielanie vašich údajov iným osobám."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Umožňuje aplikácii čítať denník hovorov vo vašom telefóne vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na odosielanie vašich údajov iným osobám."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"zapisovať do denníka hovorov"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Umožňuje aplikácii upravovať denník hovorov vo vašom tablete vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu vášho denníka hovorov."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Umožňuje aplikácii upravovať denník hovorov vo vašom telefóne vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu vášho denníka hovorov."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"čítať údaje vášho profilu"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"čítať vlastnú kartu kontaktu"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Umožňuje aplikácii čítať informácie v osobnom profile uložené vo vašom zariadení, ako je vaše meno a kontaktné informácie. Znamená to, že ďalšie aplikácie vás môžu identifikovať a poslať ostatným informácie o vašom profile."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"zapisovať do údajov profilu"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"upraviť vlastnú kartu kontaktu"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Umožňuje aplikácii zmeniť alebo pridať do osobného profilu informácie uložené vo vašom zariadení, ako je vaše meno a kontaktné informácie. Znamená to, že ďalšie aplikácie vás môžu identifikovať a poslať ostatným informácie o vašom profile."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"čítať váš sociálny stream"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Umožňuje aplikácii pristupovať k sociálnym aktualizáciám vašich priateľov a synchronizovať ich. Škodlivé aplikácie to môžu využiť na pristupovanie k súkromnej komunikácii medzi vami a vašimi priateľmi v sociálnych sieťach."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"vynútenie reštartovania telefónu"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Umožňuje aplikácii vynútiť reštartovanie tabletu."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Umožňuje aplikácii vynútiť reštartovanie telefónu."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"pripojenie a odpojenie súborových systémov"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"pristup. do systému súbor. USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"pristupovať do systému súborov karty SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Umožňuje aplikácii pripojiť a odpojiť súborové systémy vo vymeniteľných ukladacích priestoroch."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formátovať externý ukladací priestor"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"vymazať ukladací priestor USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"vymazať kartu SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Umožňuje aplikácii formátovať vymeniteľný ukladací priestor."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"získať informácie o internom ukladacom priestore"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Umožňuje aplikácii získať informácie o internom ukladacom priestore."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Umožňuje aplikácii pripojiť alebo odpojiť interný ukladací priestor."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"premenovať interný ukladací priestor"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Umožňuje aplikácii premenovať interný ukladací priestor."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"ovládanie vibrácií"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"ovládať vibrovanie"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Umožňuje aplikácii ovládať vibrácie."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"ovládanie kontrolky"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Umožňuje aplikácii ovládať svetlo."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Umožňuje aplikácii povedať systému, ktoré aplikácie môžu používať určité miniaplikácie. Aplikácia s týmto povolením môže iným aplikáciám povoliť prístup k osobným údajom. Bežné aplikácie toto nastavenie nepoužívajú."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmeny stavu telefónu"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Umožňuje aplikácii ovládať telefónne funkcie zariadenia. Aplikácia s týmto povolením môže prepínať siete alebo zapnúť a vypnúť rádio bez toho, aby vás na to upozornila."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"čítanie stavu a identity telefónu"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"čítať stav a identitu telefónu"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Umožňuje aplikácii pristupovať k telefónnym funkciám zariadenia. Aplikácia s týmto povolením môže určiť telefónne číslo a sériové číslo tohto telefónu. Okrem iného môže určiť aj to, či je hovor aktívny, a číslo, ku ktorému je hovor pripojený."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zabránenie prechodu tabletu do režimu spánku"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zabránenie prechodu telefónu do režimu spánku"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Umožňuje aplikácii spustenie v režime nízkoúrovňového testu výrobcu a povolí úplný prístup k hardvéru telefónu. K dispozícii iba vtedy, keď je telefón spustený v režime testovania výrobcu."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"nastavenie tapety"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Umožňuje aplikácii nastaviť tapetu systému."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"nastavenie tipov pre veľkosť tapety"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"upraviť veľkosť tapety"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Umožňuje aplikácii nastaviť tipy pre veľkosť tapety systému."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"obnovenie továrenských nastavení systému"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Umožňuje aplikácii úplne obnoviť továrenské nastavenia systému a vymazať všetky údaje, konfiguráciu a nainštalované aplikácie."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Umožňuje aplikácii zmeniť časové pásmo telefónu."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"rola služby AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Umožňuje aplikácii volať funkcie AccountAuthenticator."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"objavenie známych účtov"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"nájsť účty na zariadení"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Umožňuje aplikácii získať zoznam účtov v tablete."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Umožňuje aplikácii získať zoznam účtov v telefóne."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"rola overovateľa účtu"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"vytvoriť účty a nastaviť heslá"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Umožňuje aplikácii využiť možnosti overovania účtu aplikácie AccountManager vrátane vytvárania účtov a získavania a nastavovania ich hesiel."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"správa zoznamu účtov"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"pridať alebo odstrániť účty"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Umožňuje aplikácii uskutočňovať operácie, ako je pridávanie alebo odstraňovanie účtov alebo odstraňovanie ich hesiel."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"používanie overovacích poverení účtu"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"používať účty na zariadení"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Umožňuje aplikácii vyžiadať overovacie tokeny."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"zobrazenie stavu siete"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"zobraziť sieťové pripojenia"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Umožňuje aplikácii zobraziť stav všetkých sietí."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"úplný prístup na Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Umožňuje aplikácii vytvárať sieťové zásuvky."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Umožňuje aplikácii zmeniť stav sieťového pripojenia zdieľaného pomocou tetheringu."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"zmeniť nastavenie použitia údajov na pozadí"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Umožňuje aplikácii zmeniť nastavenie používania údajov na pozadí."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"zobrazenie stavu Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"zobraziť pripojenia siete Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Umožňuje aplikácii zobraziť informácie o stave siete Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"zmeniť stav Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"pripojiť a odpojiť od siete Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Umožňuje aplikácii pripojiť sa k prístupovým bodom Wi-Fi alebo sa od nich odpojiť a uskutočňovať zmeny nakonfigurovaných sietí Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Povoliť príjem viacsmerového vysielania Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Umožňuje aplikácii prijímať pakety, ktoré neboli adresované priamo vášmu zariadeniu. Pomocou tejto možnosti môžete objaviť služby ponúkané vo vašej blízkosti. Spotreba energie je vyššia ako v režime bez viacsmerového vysielania."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"správa rozhrania Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"pristupovať k nastaveniam Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Umožňuje aplikácii konfigurovať miestny tablet s rozhraním Bluetooth a vyhľadávať a spárovať vzdialené zariadenia."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Umožňuje aplikácii konfigurovať miestny telefón s rozhraním Bluetooth, vyhľadávať a spárovať vzdialené zariadenia."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Zobraziť stav siete WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Zobraziť pripojenia siete WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Umožňuje aplikácii zobraziť informácie o stave siete WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Zmeniť stav siete WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Umožňuje aplikácii pripojiť sa a odpojiť zo siete WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"vytvorenie pripojenia Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"párovať so zariadeniami Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Umožňuje aplikácii zobraziť konfiguráciu miestneho tabletu s rozhraním Bluetooth, vytvárať pripojenie na spárované zariadenia a prijímať tieto pripojenia."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Umožňuje aplikácii zobraziť konfiguráciu miestneho telefónu s rozhraním Bluetooth, vytvárať pripojenie so spárovanými zariadeniami a prijímať tieto pripojenia."</string> <string name="permlab_nfc" msgid="4423351274757876953">"ovládať technológiu Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Umožňuje aplikácii komunikovať so značkami, kartami a čítačkami s podporou technológie Near Field Communication (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"zakázanie uzamknutia klávesnice"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"zakázať uzamknutie obrazovky"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Umožňuje aplikácii zakázať uzamknutie klávesnice a súvisiace zabezpečenie heslom. Príkladom oprávneného použitia tejto funkcie je zakázanie uzamknutia klávesnice pri prichádzajúcom hovore a jej opätovné povolenie po skončení hovoru."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"čítanie nastavení synchronizácie"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Umožňuje aplikácii čítať nastavenia synchronizácie (napr. či má byť povolená synchronizácia aplikácie Ľudia)."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"zápis nastavení synchronizácie"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"prepínať nastavenie synchronizácie medzi hodnotou zapnuté a vypnuté"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Umožňuje aplikácii zmeniť nastavenia synchronizácie (napr. či má byť povolená synchronizácia aplikácie Ľudia)."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"čítanie štatistických údajov o synchronizácii"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Umožňuje aplikácii čítať štatistiky synchronizácie, napr. históriu uskutočnených synchronizácií."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Umožňuje aplikácii získať podrobnosti o aktuálne synchronizovaných informačných kanáloch."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zápis odoberaných zdrojov"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Umožňuje aplikácii upraviť vaše aktuálne synchronizované informačné kanály. Škodlivé aplikácie môžu synchronizované informačné kanály zmeniť."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"čítať slovník definovaný používateľom"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"čítať výrazy pridané do slovníka"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Umožňuje aplikácii čítať súkromné slová, názvy a frázy, ktoré mohol používateľ uložiť do slovníka používateľa."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"zapisovať do slovníka definovaného používateľom"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Umožňuje aplikácii zapisovať nové slová do používateľského slovníka."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"čítanie obsahu úložiska USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"čítanie obsahu karty SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Umožňuje apl. čítať obsah USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Umožňuje aplikácii čítať obsah karty SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"upraviť/odstrániť obsah ukl. pr. USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"Zmeniť/odstrániť obsah karty SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"čítať obsah úložiska USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"čítať obsah karty SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Umožňuje aplikácii čítať obsah úložiska USB, ktorý môže obsahovať fotografie a mediálne údaje."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Umožňuje aplikácii čítať obsah karty SD, ktorý môže zahrnovať fotografie a mediálne údaje."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"upraviť alebo odstrániť obsah úložiska USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"upraviť alebo odstrániť obsah karty SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Umožňuje aplikácii zápis do ukladacieho priestoru USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Umožňuje aplikácii zápis na kartu SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"úprava alebo odstránenie obsahu interného ukladacieho priestoru média"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefóne nie je žiadna karta SIM."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vložte kartu SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Karta SIM chýba alebo sa z nej nedá čítať. Vložte kartu SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaša karta SIM bola natrvalo zakázaná."\n"Ak chcete získať inú kartu SIM, kontaktujte svojho operátora."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Tlačidlo Predchádzajúca stopa"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Tlačidlo Ďalšia stopa"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"znak"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"slovo"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"odkaz"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"riadok"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Továrenský test zlyhal"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Farnosť"</string> <string name="autofill_area" msgid="3547409050889952423">"Oblasť"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirát"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Čítanie histórie a záložiek prehliadača"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"čítať webové záložky a históriu"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Umožňuje aplikácii čítať všetky záložky a adresy URL navštívené prehliadačom."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Zapisovať históriu a záložky prehliadača"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"zapisovať webové záložky a históriu"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Umožňuje aplikácii zmeniť históriu prehliadača alebo záložky uložené v tablete. Škodlivé aplikácie môžu pomocou tohto nastavenia vymazať alebo zmeniť údaje vo vašom prehliadači."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Umožňuje aplikácii zmeniť históriu prehliadača alebo záložky uložené v telefóne. Škodlivé aplikácie môžu pomocou tohto nastavenia vymazať alebo zmeniť údaje vo vašom prehliadači."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"nastaviť budík"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"nastaviť budík"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Umožňuje aplikácii nastaviť budík v nainštalovanej aplikácii budík. Niektoré aplikácie budíka nemusia túto funkciu implementovať."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"pridať hlasovú schránku"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Umožní aplikácii pridávať správy do doručenej pošty hlasovej schránky."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Nastaviť"</string> <string name="date_time_done" msgid="2507683751759308828">"Hotovo"</string> <string name="default_permission_group" msgid="2690160991405646128">"Predvolené"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVINKA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVINKA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Nevyžadujú sa žiadne oprávnenia."</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Skryť"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Zobraziť všetky"</b></string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 9630b02e9539..693cdc3a2fcc 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tablični računalnik se bo zaustavil."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefon bo zaustavljen."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Ali želite izklopiti telefon?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Vnovičen zagon v varnem načinu"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Ali želite znova zagnati v varnem načinu? S tem onemogočite vse nameščene aplikacije drugih ponudnikov. Obnovljene bodo pri naslednjem vnovičnem zagonu."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Nedavno"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Ni nedavnih programov"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Možnosti tabličnega računalnika"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Vaša sporočila"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Pisanje in branje SMS-ov, e-pošte in drugih sporočil."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Osebni podatki"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Neposreden dostop do stikov in koledarskih vnosov, shranjenih v tabličnem računalniku."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Neposreden dostop do stikov in koledarja, shranjenega v telefonu."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Vaša lokacija"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Spremljanje fizične lokacije."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Omrežna komunikacija"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Dostop do različnih funkcij omrežja."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaši računi"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Dostop do razpoložljivih računov."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontrolniki strojne opreme"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Dostop nižje ravni in nadzor sistema."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Razvojna orodja"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcije, ki jih potrebujejo le razvijalci programa."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Prostor za shranjevanje"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Dostop do pomnilnika USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostop do kartice SD."</string> @@ -195,49 +261,47 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Programu omogoča, da postane vrstica stanja."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"razširjanje/strnjevanje vrstice stanja"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Programu omogoča razširjanje ali strnjevanje vrstice stanja."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"prestrezanje odhodnih klicev"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"preusmeritev odhodnih klicev"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Programu omogoča obdelavo odhodnih klicev in spreminjanje klicne številke. Zlonamerni programi lahko nadzirajo, preusmerijo ali preprečijo odhodne klice."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"prejemanje sporočil SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"prejemanje sporočil (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Programu omogoča prejemanje in obdelavo SMS-ov. Zlonamerni programi lahko nadzirajo sporočila ali jih brišejo, ne da bi vam jih pokazali."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"prejemanje sporočil MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"prejemanje sporočil (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Programu omogoča prejemanje in obdelavo sporočil MMS. Zlonamerni programi lahko nadzirajo sporočila ali jih brišejo, ne da bi vam jih pokazali."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"prejemanje oddaj v sili"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Programu omogoča prejemanje in obdelavo sporočil za oddajanje v sili. To dovoljenje je na voljo samo sistemskim programom."</string> - <!-- no translation found for permlab_readCellBroadcasts (1598328843619646166) --> - <skip /> - <!-- no translation found for permdesc_readCellBroadcasts (6361972776080458979) --> - <skip /> + <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"branje sporočil oddaje v celici"</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Omogoča aplikaciji branje sporočil oddaje v celici, ki jih prejme naprava. Opozorila oddaje v celici so dostavljena na nekaterih lokacijah, da vas opozorijo na izredne razmere. Zlonamerne aplikacije lahko vplivajo na delovanje naprave, ko dobi sporočilo oddaje v celici."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"pošiljanje sporočil SMS"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"Programu omogoča pošiljanje SMS-ov. Zlonamerni programi lahko pošiljajo sporočila brez vaše potrditve, kar vas lahko drago stane."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"pošiljanje SMS-ov brez potrditve"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Programu omogoča pošiljanje sporočil SMS. Zlonamerni programi lahko pošiljajo sporočila brez vaše potrditve, kar vas lahko drago stane."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"branje sporočil SMS ali MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"branje sporočil (SMS ali MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Programu omogoča branje SMS-ov, shranjenih v tabličnem računalniku ali na kartici SIM. Zlonamerni programi lahko berejo vaša zaupna sporočila."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Programu omogoča branje SMS-ov, shranjenih v telefonu ali na kartici SIM. Zlonamerni programi lahko berejo vaša zaupna sporočila."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"urejanje sporočil SMS ali MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"urejanje sporočil (SMS ali MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Programu omogoča zapisovanje v sporočila SMS, shranjena v tabličnem računalniku ali na kartici SIM. Zlonamerni programi lahko izbrišejo vaša sporočila."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Programu omogoča zapisovanje v sporočila SMS, shranjena v telefonu ali na kartici SIM. Zlonamerni programi lahko izbrišejo vaša sporočila."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"prejemanje sporočil WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"prejemanje sporočil (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Programu omogoča prejemanje in obdelavo sporočil WAP. Zlonamerni programi lahko nadzirajo sporočila ali jih brišejo, ne da bi vam jih pokazali."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"dobivanje programov, ki se izvajajo"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Programu omogoča dobivanje informacij o trenutnih in nedavno izvajajočih se opravilih. Zlonamerni programi lahko odkrijejo zasebne podatke o drugih programih."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"prejemanje podrobnosti o aplikacijah, ki se izvajajo"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Aplikaciji omogoča, da dobi podatke o trenutnih in nedavno izvajajočih se opravilih. Zlonamerne aplikacije lahko odkrijejo zasebne podatke o drugih aplikacijah."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"preurejanje programov, ki se izvajajo"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Programu omogoča premikanje opravil v ospredje in ozadje. Zlonamerni programi se lahko brez vašega nadzora vsilijo v ospredje."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"ustavitev programov, ki se izvajajo"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Programu omogoča odstranjevanje opravil in zapiranje njihovih programov. Zlonamerni programi lahko motijo delovanje drugih programov."</string> - <!-- no translation found for permlab_startAnyActivity (2918768238045206456) --> - <skip /> - <!-- no translation found for permdesc_startAnyActivity (997823695343584001) --> - <skip /> + <string name="permlab_startAnyActivity" msgid="2918768238045206456">"zagon poljubne dejavnosti"</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Omogoča aplikaciji zagon poljubne dejavnosti, ne glede na zaščito dovoljenj ali izvoženo stanje."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"nastavitev združljivosti zaslona"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Programu omogoča nadzor združljivostnega načina zaslona drugih programov. Zlonamerni programi lahko prekinejo delovanje drugih programov."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"omogočanje iskanja in odpravljanja napak v programu"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Programu omogoča vklop funkcije za odpravljanje napak za drug program. Zlonamerni programi lahko to uporabijo za zapiranje drugih programov."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"spreminjanje nastavitev UV"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"spreminjanje sistemskih nastavitev prikaza"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Programu omogoča spreminjanje trenutne konfiguracije, kot so na primer območne nastavitve ali splošna velikost pisave."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"omogočanje načina delovanja v avtomobilu"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Programu dovoljuje omogočanje načina za avto."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"zaustavitev procesov v ozadju"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zapiranje drugih aplikacij"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Programu omogoča zaustavitev postopkov v ozadju drugih programov, tudi če je na voljo dovolj pomnilnika."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"vsiljena zaustavitev drugih programov"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Omogoča, da program na silo zaustavi druge programe."</string> @@ -261,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Programu omogoča oddajo obvestila, da je bilo potisno sporočilo WAP prejeto. Zlonamerni programi lahko to uporabijo za ponarejanje potrdila o prejemu sporočila MMS ali za neopazno menjavo vsebine poljubne spletne strani z zlonamernimi različicami."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"omejevanje števila izvajajočih se procesov"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Programu omogoča nadzor največjega števila postopkov, ki se bodo izvajali. Tega nikoli ni treba uporabiti za navadne programe."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"zapiranje vseh programov v ozadju"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vsiljeno zapiranje aplikacij v ozadju"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Programu omogoča, da nadzoruje, ali so dejavnosti zaključene takoj, ko so premaknjene v ozadje. Tega ni treba nikoli uporabiti za navadne programe."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"spreminjanje statističnih podatkov o bateriji"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Programu omogoča spreminjanje zbranih statističnih podatkov o bateriji. Ni za uporabo z navadnimi programi."</string> @@ -271,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Programu omogoča zagon uporabniškega vmesnika za potrditev popolnega varnostnega kopiranja. Ni za uporabo s programi."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"prikazovanje nepooblaščenih oken"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Programu omogoča ustvarjanje oken, ki jih bo uporabljal uporabniški vmesnik notranjega sistema. Ni za uporabo z navadnimi programi."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"prikaz opozoril na ravni sistema"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"prekrivanje drugih aplikacij"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Programu omogoča prikaz oken s sistemskimi opozorili. Zlonamerni programi lahko zavzamejo celoten zaslon."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"spreminjanje splošne hitrosti animacij"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Programu omogoča, da kadar koli spremeni splošno hitrost animacije (hitrejše ali počasnejše animacije)."</string> @@ -333,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Aplikaciji omogoča dodeljevanje ali preklic posebnih dovoljenj zanjo ali za druge aplikacije. Zlonamerne aplikacije lahko to uporabijo za dostop do funkcij, za katere jim niste dodelili pravic."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nastavitev prednostnih programov"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Programu omogoča spreminjanje priljubljenih programov. Zlonamerni programi lahko s tem neopazno spremenijo programe, ki se izvajajo, tako da se izdajajo za obstoječe programe in zbirajo osebne podatke."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"spreminjanje splošnih nastavitev sistema"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"spreminjanje sistemskih nastavitev"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Programu omogoča spreminjanje podatkov nastavitev sistema. Zlonamerni programi lahko poškodujejo konfiguracijo sistema."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"spreminjanje varnih sistemskih nastavitev"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Programu omogoča spreminjanje podatkov varnostnih nastavitev sistema. Ni za uporabo z navadnimi programi."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"spreminjanje zemljevidov Googlovih storitev"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Programu omogoča spreminjanje zemljevidov Googlovih storitev. Ni za uporabo z navadnimi programi."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"samodejni začetek pri zagonu"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"izvedba ob zagonu"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Programu omogoča, da se samodejno zažene po zagonu sistema. To lahko povzroči daljši zagon tabličnega računalnika in programu omogoči, da s stalnim izvajanjem upočasni delovanje tabličnega računalnika."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Programu omogoča, da se zažene takoj, ko sistem dokonča zagon. Zato lahko zagon telefona traja nekoliko dlje, program pa lahko upočasni splošno delovanje telefona, ker se vedno izvaja."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"pošiljanje fiksne oddaje"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Programu omogoča hitro pošiljanje fiksnih oddaj, ki ostanejo po koncu oddajanja. Zaradi zlonamernih programov je lahko delovanje tabličnega računalnika počasno ali nestabilno ali tablični računalnik zaradi njih porabi preveč pomnilnika."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Programu omogoča hitro pošiljanje fiksnih oddaj, ki ostanejo po koncu oddajanja. Zaradi zlonamernih programov je delovanje telefona lahko počasno ali nestabilno ali tablični računalnik zaradi njih porabi preveč pomnilnika."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"branje podatkov stika"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"pisanje podatkov stika"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"branje stikov"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Aplikaciji omogoča branje vseh podatkov o stikih, shranjenih v tabličnem računalniku, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za pošiljanje podatkov o stikih drugim ljudem."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Aplikaciji omogoča branje vseh podatkov o stikih, shranjenih v telefonu, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za pošiljanje podatkov o stikih drugim ljudem."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"spreminjanje stikov"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Aplikaciji omogoča spreminjanje podatkov o stikih, shranjenih v tabličnem računalniku, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za brisanje ali spreminjanje podatkov o stikih."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Aplikaciji omogoča spreminjanje podatkov o stikih, shranjenih v telefonu, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za brisanje ali spreminjanje podatkov o stikih."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"branje dnevnika klicev"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Aplikaciji dovoli branje dnevnika klicev v tabličnem računalniku, vključno s podatki o dohodnih in odhodnih klicih. Zlonamerne aplikacije lahko tako pošiljajo vaše podatke drugim."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Aplikaciji dovoli branje dnevnika klicev v telefonu, vključno s podatki o dohodnih in odhodnih klicih. Zlonamerne aplikacije lahko tako pošiljajo vaše podatke drugim."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"pisanje v dnevnik klicev"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Aplikaciji dovoli spreminjanje dnevnika klicev v tabličnem računalniku, vključno s podatki o dohodnih in odhodnih klicih. Zlonamerne aplikacije lahko tako izbrišejo ali spreminjajo vaš dnevnik klicev."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Aplikaciji dovoli spreminjanje dnevnika klicev v telefonu, vključno s podatki o dohodnih in odhodnih klicih. Zlonamerne aplikacije lahko tako izbrišejo ali spreminjajo vaš dnevnik klicev."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"branje podatkov v profilu"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"branje vaše osebne vizitke"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Programu omogoča branje osebnih podatkov v profilu, kot so ime in podatki za stik. To pomeni, da vas lahko program prepozna in vaše podatke o profilu pošlje drugim."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"pisanje v podatke v profilu"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"spreminj. vaše osebne vizitke"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Programu omogoča spreminjanje ali dodajanje osebnih podatkov v profilu, kot so ime in podatki za stik. To pomeni, da vas lahko drugi programi prepoznajo in vaše podatke o profilu pošljejo drugim."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"preberite svoj družabni tok"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Programu omogoča dostop do družabnih posodobitev vas in vaših prijateljev. Zlonamerni programi lahko to uporabijo za branje zasebne komunikacije med vami in prijatelji v družabnih omrežjih."</string> @@ -404,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"vsiljevanje vnovičnega zagona telefona"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Programu omogoča, da vsili vnovični zagon tabličnega računalnika."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Dovoljuje, da program vsili vnovični zagon telefona."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"vpenjanje in izpenjanje datotečnih sistemov"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"dostop do dat. sist. pomn. USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"dostop do datotečnega sistema kartice SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Programu omogoča vpenjanje in izpenjanje datotečnih sistemov za izmenljive pomnilnike."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatiranje zunanje shrambe"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"brisanje pomnilnika USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"brisanje kartice SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Programu omogoča formatiranje shrambe za izmenljive medije."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"informacije o notranjem pomnilniku"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Programu omogoča dobivanje podatkov o notranjem pomnilniku."</string> @@ -418,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Programu omogoča vpenjanje in izpenjanje notranjega pomnilnika."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"preimenovanje notranje shrambe"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Programu omogoča preimenovanje notranjega pomnilnika."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"nadzor vibriranja"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"nadzor vibriranja"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Programu omogoča nadzor vibriranja."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"nadzor svetilke"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Programu omogoča nadzor svetilke."</string> @@ -443,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Programu omogoča, da sistemu ukaže, katere pripomočke je mogoče uporabiti s katerim programom. S tem dovoljenjem lahko programi drugim programom dajo dostop do osebnih podatkov. Ni za uporabo z navadnimi programi."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"spreminjanje stanja telefona"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Programu omogoča nadziranje telefonskih funkcij naprave. Program lahko s tem dovoljenjem preklaplja omrežja, vklopi ali izklopi radio v telefonu, ne da bi vas obvestil."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"branje stanja in identitete telefona"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"branje stanja in identitete telefona"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Programu omogoča dostop do funkcij telefona v napravi. Program lahko s tem dovoljenjem določi telefonsko številko in serijsko številko tega telefona, določi lahko tudi, ali je klic aktiven, številko, s katero je klic povezan, in podobno."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"preprečitev prehoda tabličnega računalnika v stanje pripravljenosti"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"preprečevanje prehoda v stanje pripravljenosti telefona"</string> @@ -458,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Se izvaja kot preskus izdelovalca nizke ravni, ki dovoljuje popoln dostop do strojne opreme telefona. Na voljo le, ko se telefon izvaja v načinu preskusa izdelovalca."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"nastavljanje ozadja"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Programu omogoča nastavitev ozadja sistema."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"namigi za nastavitev velikosti ozadja"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"prilagajanje velikosti slike za ozadje"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Programu omogoča nastavitev namigov o velikosti ozadja sistema."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"ponastavitev sistema na privzete tovarniške nastavitve"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Programu omogoča, da v celoti ponastavi sistema na tovarniške nastavitve, izbriše vse podatke, konfiguracijo in nameščene programe."</string> @@ -470,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Programu omogoča spreminjanje časovnega pasu v telefonu."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"opravljanje vloge AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Programu omogoča, da pokliče overovitelje računa."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"odkrivanje znanih računov"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"iskanje računov v napravi"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Programu omogoča dobivanje seznama računov, ki jih pozna tablični računalnik."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Programu omogoča dobivanje seznama računov, ki jih pozna telefon."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"opravlja vlogo overovitelja računa"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ustvarjanje računov in nastavitev gesel"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Programu omogoča uporabo zmožnosti overovitelja računa storitve AccountManager, vključno z ustvarjanjem računov ter s pridobivanjem in nastavljanjem njihovih gesel."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"upravljanje seznama računov"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"dodajanje ali odstranjevanje računov"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Programu omogoča izvajanje operacij, kot je dodajanje in odstranjevanje računov ter brisanje njihovih gesel."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"uporaba poverilnic preverjanja pristnosti računa"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"uporaba računov v napravi"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Programu omogoča, da zahteva žetone za preverjanje pristnosti."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ogled stanja omrežja"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"prikaz omrežnih povezav"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Programu omogoča ogled stanja vseh omrežij."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"poln dostop do interneta"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Omogoča, da program ustvari vtičnice omrežja."</string> @@ -491,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Programu dovoljuje spreminjanje stanja povezljivosti posredniškega omrežja."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"spreminjanje nastavitev porabe podatkov ozadja"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Programu omogoča spreminjanje nastavitev uporabe podatkov ozadja."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"ogled stanja brezžičnega omrežja"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"prikaz povezav Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Programu omogoča ogled podatkov o stanju omrežja Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"spreminjanje stanja brezžičnega omrežja"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"vzpostavitev povezave z omrežjem Wi-Fi in prekinitev povezave z njim"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Programu omogola vzpostavljanje povezave z dostopnimi točkami omrežja Wi-Fi in prekinitev povezave z njimi ter spreminjanje nastavljenih omrežij Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"dovoljevanje sprejema večvrstnega brezžičnega oddajanja"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Programu omogoča prejemanje paketov, ki niso naslovljeni neposredno na vašo napravo. To je lahko uporabno, ko odkrivate storitve, ki so dane na voljo v bližini. Poraba je večja od načina delovanja brez večvrstnega oddajanja."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"skrbništvo storitve Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"dostop do nastavitev Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Programu omogoča konfiguriranje lokalnega tabličnega računalnika Bluetooth ter zaznavanje oddaljenih naprav in združevanje z njimi."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Programu omogoča konfiguriranje lokalnega telefona s tehnologijo Bluetooth ter odkrivanje oddaljenih naprav in povezovanje z njimi."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Prikaz stanja omrežja WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Prikaz povezav WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Programu omogoča, da prikaže informacije o stanju omrežja WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Sprememba stanja omrežja WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Programu omogoča, da vzpostavi povezavo z omrežjem WiMAX in jo prekine."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"ustvarjanje povezav Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"seznanitev z napravami Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Programu omogoča ogled konfiguracije lokalnega tabličnega računalnika Bluetooth ter vzpostavljanje in sprejemanje povezave z združenimi napravami."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Programom omogoča ogled konfiguracije lokalnega telefona Bluetooth ter ustvarjanje in sprejemanje povezave s povezanimi napravami."</string> <string name="permlab_nfc" msgid="4423351274757876953">"nadzor nad komunikacijo s tehnologijo bližnjega polja"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Podpira komunikacijo med računalnikom in oznakami, karticami in bralniki komunikacije s tehnologijo bližnjega polja."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"onemogočanje zaklepa tipkovnice"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"onemogočanje zaklepanja zaslona"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Programu omogoča, da onemogoči zaklep tipk in morebitno povezano varnostno geslo. Legitimen primer je onemogočenje zaklepa tipkovnice pri dohodnem klicu ter vnovičnem omogočanju zaklepa, ko je klic dokončan."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"branje nastavitev sinhronizacije"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Programu omogoča branje nastavitev sinhronizacije, na primer nastavitev, ali je sinhronizacija omogočena za program Ljudje."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"pisanje nastavitev za sinhronizacijo"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"vklop in izklop sinhronizacije"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Programu omogoča spremembo nastavitev sinhronizacije, na primer nastavitev, ali je sinhronizacija omogočena za program Ljudje."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"branje statističnih podatkov sinhronizacije"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Programu omogoča branje statističnih podatkov o sinhronizaciji, na primer o zgodovini sinhronizacij, ki so bile izvedene."</string> @@ -521,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Programu omogoča dobivanje podrobnosti o trenutno sinhroniziranih virih."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"pisanje naročenih virov"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Programu omogoča spreminjanje trenutno sinhroniziranih virov. Zlonamerni programi lahko s tem spremenijo sinhronizirane vire."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"branje uporabniško določenega slovarja"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"branje izrazov, ki ste jih dodali v slovar"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Programu omogoča branje morebitnih zasebnih besed, imen in izrazov, ki jih je uporabnik shranil v uporabniški slovar."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"pisanje v uporabniško določen slovar"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Programu omogoča pisanje nove besede v uporabniški slovar."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"branje vsebine pomnilnika USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"branje vsebine kartice SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Aplikaciji dovoli branje vsebine pomnilnika USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Aplikaciji dovoli branje vsebine kartice SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"spreminjanje vsebine pomnilnika USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"spreminjanje/brisanje vsebine kartice SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"branje vsebine pomnilnika USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"branje vsebine kartice SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Apl. om. br. USB s fot. in pr."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Omogoča, da aplikacija bere vsebino kartice SD, ki lahko vključuje fotografije in predstavnost."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"spr. ali bris. vseb. pomn. USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"spreminjanje ali brisanje vsebine kartice SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Programu omogoča zapisovanje v pomnilnik USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Programu omogoča pisanje na kartico SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"spreminjanje/brisanje vsebine notranje shrambe nosilca podatkov"</string> @@ -708,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefonu ni kartice SIM."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vstavite kartico SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Ni kartice SIM ali je ni mogoče prebrati. Vstavite kartico SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Kartica SIM je trajno onemogočena."\n" Če želite dobiti drugo kartico SIM, se obrnite na ponudnika brezžičnih storitev."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Gumb za prejšnjo skladbo"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Gumb za naslednjo skladbo"</string> @@ -750,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"znak"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"beseda"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"povezava"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"vrstica"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Tovarniški preskus ni uspel"</string> @@ -787,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Župnija"</string> <string name="autofill_area" msgid="3547409050889952423">"Območje"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"branje zgodovine in zaznamkov brskalnika"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"branje spletnih zaznamkov in zgodovine"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Programu omogoča branje vseh spletnih naslovov, ki jih je brskalnik obiskal, in vseh zaznamkov brskalnika."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"pisanje zgodovine in zaznamkov brskalnika"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"zapisovanje spletnih zaznamkov in zgodovine"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Programu omogoča spreminjanje zgodovine ali zaznamkov brskalnika v tabličnem računalniku. Zlonamerni programi lahko izbrišejo ali spremenijo podatke v brskalniku."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Programu omogoča spreminjanje zgodovine ali zaznamkov brskalnika v telefonu. Zlonamerni programi lahko izbrišejo ali spremenijo podatke v brskalniku."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"nastavitev alarma budilke"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"nastavitev alarma"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Programu omogoča nastavitev alarma v nameščenem programu budilke. Nekateri programi budilke morda nimajo te funkcije."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"dodajanje odzivnika"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Programu omogoča dodajanje sporočil prejetim sporočilom odzivnika."</string> @@ -1053,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Nastavi"</string> <string name="date_time_done" msgid="2507683751759308828">"Končano"</string> <string name="default_permission_group" msgid="2690160991405646128">"Privzeto"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVO: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Ni zahtevanih dovoljenj"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Skrij"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Pokaži vse"</b></string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 1fa2f3a3c042..0bef1e32aa07 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Таблет ће се искључити."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Телефон ће се искључити."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Да ли желите да искључите телефон?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Поново покрени систем у безбедном режиму"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Да ли желите да поново покренете систем у безбедном режиму? Ово ће онемогућити све инсталиране апликације независних произвођача. Оне ће бити враћене када поново покренете систем."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Недавно"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Нема недавних апликација."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Опције за таблет"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Поруке"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Читање и писање SMS порука, порука е-поште и осталих порука."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Личне информације"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Директни приступ контактима и календарима сачуваним на таблету."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Директни приступ контактима и календару сачуваним на телефону."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Локација"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Надгледајте своју физичку локацију."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Комуникација преко мреже"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Приступајте разним функцијама мреже."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Налози"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Приступ доступним налозима."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Контроле хардвера"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Нижи нивои приступа и контроле система."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Алатке за програмирање"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функције потребне само програмерима апликација."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Складиште"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Приступите USB меморији."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Приступ SD картици."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Дозвољава апликацији да функционише као статусна трака."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"проширење/скупљање статусне траке"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Дозвољава апликацији да проширује или скупља статусну траку."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"пресретање одлазних позива"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"преусмеравање одлазних позива"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Дозвољава апликацији да пресретне одлазне позиве и промени број који се бира. Злонамерне апликације могу да надгледају, преусмеравају или блокирају одлазне позиве."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"пријем SMS порука"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"пријем текстуалних порука (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Дозвољава апликацији да прима и обрађује SMS поруке. Злонамерне апликације могу да надгледају поруке или да их бришу, а да вам их не прикажу."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"пријем MMS порука"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"пријем текстуалних порука (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Дозвољава апликацији да прима и обрађује MMS поруке. Злонамерне апликације могу да надгледају поруке или да их бришу, а да вам их не прикажу."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"пријем хитних преноса"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Дозвољава апликацији да прима и обрађује поруке хитног преноса. Ова дозвола је доступна само за системске апликације."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Дозвољава апликацији да шаље SMS поруке. Злонамерне апликације могу да шаљу поруке без ваше потврде, што вам може изазвати трошкове."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"слање SMS порука без потврде"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Дозвољава апликацији да шаље SMS поруке. Злонамерне апликације могу да шаљу поруке без ваше потврде, што вам може изазвати трошкове."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"читање SMS или MMS порука"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"читање текстуалних порука (SMS или MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Дозвољава апликацији да чита SMS поруке сачуване на таблету или SIM картици. Злонамерне апликације могу да читају поверљиве поруке."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Дозвољава апликацији да чита SMS поруке сачуване на телефону или SIM картици. Злонамерне апликације могу да читају поверљиве поруке."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"измена SMS или MMS порука"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"измена текстуалних порука (SMS или MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Дозвољава апликацији да уписује податке у SMS поруке сачуване на таблету или SIM картици. Злонамерне апликације могу да избришу поруке."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Дозвољава апликацији да уписује податке у SMS поруке сачуване на телефону или SIM картици. Злонамерне апликације могу да избришу поруке."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"пријем преко WAP-а"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"пријем текстуалних порука (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Дозвољава апликацији да прима и обрађује WAP поруке. Злонамерне апликације могу да надгледају поруке или да их бришу, а да вам их не прикажу."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"преузимање покренутих апликација"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Дозвољава апликацији да преузима информације о актуелним и недавно покренутим задацима. Злонамерне апликације могу да открију приватне информације о другим апликацијама."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"преузимање детаља о покренутим апликацијама"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Дозвољава апликацији да преузима детаљне информације о актуелним и недавно покренутим задацима. Злонамерне апликације могу да открију приватне информације о другим апликацијама."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"промена редоследа покренутих апликација"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Дозвољава апликацији да премешта задатке у први план и у позадину. Злонамерне апликације могу на тај начин да принудно пређу у први план без ваше контроле."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"заустављање покренутих апликација"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Дозвољава апликацији да контролише режим компатибилности екрана других апликација. Злонамерне апликације могу да угрозе понашање других апликација."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"омогућавање отклањања грешака у апликацији"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Дозвољава апликацији да укључи уклањање грешака за другу апликацију. Злонамерне апликације могу то да искористе за онемогућавање других апликација."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"промена подешавања корисничког интерфејса"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"промена системских подешавања приказа"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Дозвољава апликацији да промени тренутну конфигурацију, као што је локалитет или општа величина фонта."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"омогућавање режима рада у аутомобилу"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Дозвољава апликацији да омогући режим рада у аутомобилу."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"заустављање позадинских процеса"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"затварање других апликација"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Дозвољава апликацији да заустави позадинске процесе других апликација, чак и када постоји довољно слободне меморије."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"принудно заустављање других апликација"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Дозвољава апликацији да принудно заустави друге апликације."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Дозвољава апликацији да емитује обавештење да је примљена PUSH порука преко WAP-а. Злонамерне апликације то могу да искористе да фалсификују пријем MMS порука или да кришом замене садржај било које веб странице уносом злонамерног садржаја."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ограничење броја покренутих процеса"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Дозвољава апликацији да управља максималним бројем процеса који ће моћи да се покрену. Никада није потребна уобичајеним апликацијама."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"затварање свих позадинских апликација"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"принудно затварање позадинских апликација"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Дозвољава апликацији да управља тиме да ли ће се активности увек окончати чим пређу у позадину. Уобичајене апликације је никада не користе."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"измена статистике о батерији"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Дозвољава апликацији да измени прикупљену статистику о батерији. Не користе је уобичајене апликације."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Дозвољава апликацији да покреће кориснички интерфејс за потврду прављења комплетне резервне копије. Ово не треба да користи ниједна апликација."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"приказ неовлашћених прозора"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Дозвољава апликацији да прави прозоре које ће користити кориснички интерфејс интерног система. Не користе је уобичајене апликације."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"приказ упозорења на нивоу система"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"превлачење преко других апликација"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Дозвољава апликацији да прикаже прозоре са системским упозорењима. Злонамерне апликације на тај начин могу да преузму цео екран."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"измена глобалне брзине анимација"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Дозвољава апликацији да у сваком тренутку промени глобалну брзину анимација (брже или спорије анимације)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Омогућава апликацији да додели или опозове посебне дозволе за њу или друге апликације. Злонамерне апликације могу то да користе да би приступале функцијама које им нисте одобрили."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"подешавање жељених апликација"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Дозвољава апликацији да мења омиљене апликације. Злонамерне апликације могу без обавештења да промене апликације које су покренуте и да преко њих прикупљају ваше приватне податке."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"измена глобалних подешавања система"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"измена подешавања система"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Дозвољава апликацији да мења податке о подешавању система. Злонамерне апликације могу да оштете конфигурацију система."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"измена безбедносних подешавања система"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Дозвољава апликацији да измени системске податке за безбедносна подешавања. Уобичајене апликације је не користе."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"измена мапе Google услуга"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Дозвољава апликацији да измени мапу Google услуга. Не користе је уобичајене апликације."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"аутоматско покретање при покретању система"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"покретање при покретању система"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Омогућава да се апликација покрене одмах након покретања система. То може да успори покретање таблета, при чему ова апликација може да успори функционисање целог таблета тиме што ће увек бити активна."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Омогућава да се апликација покрене чим се систем покрене. То може да успори покретање телефона, при чему ова апликација може да успори функционисање целог телефона тиме што ће увек бити активна."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"слање пријемчивих емитовања"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Дозвољава апликацији да шаље пријемчива емитовања, која остају по завршетку емитовања. Злонамерне апликације могу да успоре или дестабилизују таблет тиме што ће га приморати да троши превише меморије."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Дозвољава апликацији да шаље пријемчива емитовања, која остају по завршетку емитовања. Злонамерне апликације могу да успоре или дестабилизују телефон тиме што ће га приморати да троши превише меморије."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"читање података о контактима"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"уписивање података о контактима"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"читање контаката"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Дозвољава апликацији да чита све податке о контактима ускладиштене на таблету, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу да искористе ову дозволу за слање ваших података о контакту другим људима."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Дозвољава апликацији да чита све податке о контактима ускладиштене на телефону, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу да искористе ову дозволу за слање ваших података о контакту другим људима."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"измена контаката"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Дозвољава апликацији да мења податке о контактима ускладиштене на таблету, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу то да искористе да би избрисале или измениле ваше податке о контакту."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Дозвољава апликацији да мења податке о контактима ускладиштене на телефону, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу то да искористе да би избрисале или измениле ваше податке о контакту."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"читање евиденције позива"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Дозвољава апликацији да чита евиденцију позива на таблету, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би слале податке другим људима."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Дозвољава апликацији да чита евиденцију позива на телефону, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би слале податке другим људима."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"писање евиденције позива"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Дозвољава апликацији да мења евиденцију позива на таблету, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би брисале или мењале евиденцију позива."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Дозвољава апликацији да мења евиденцију позива на телефону, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би брисале или мењале евиденцију позива."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"читање података о профилу"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"читање ваше контакт картице"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Дозвољава апликацији да чита личне информације са профила сачуване на уређају, као што су име и контакт информације. То значи да друге апликације могу да вас идентификују и да информације о вашем профилу шаљу другима."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"уписивање у податке профила"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"измена ваше контакт картице"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Дозвољава апликацији да мења или да додаје нове личне информације са профила сачуване на уређају, као што су име и информације за контакт. То значи да друге апликације могу да вас идентификују и да информације о профилу шаљу другима."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"читање друштвеног стрима"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Дозвољава апликацији да приступа вашим друштвеним ажурирањима и друштвеним ажурирањима пријатеља и да их синхронизује. Злонамерне апликације могу помоћу тога да читају приватне преписке између вас и пријатеља на друштвеним мрежама."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"принудно поновно покретање телефона"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Дозвољава апликацији да принудно поново покрене таблет."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Дозвољава апликацији да принудно поново покрене телефон."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"прикључивање и искључивање система датотека"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"приступ сист. дат. USB мемор."</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"приступ систему датотека SD картице"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Дозвољава апликацији да прикључи и искључи системе датотека преносне меморије."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"форматирање екстерног складишта"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"брисање USB меморије"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"брисање SD картице"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Дозвољава апликацији да форматира преносну меморију."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"увид у информације о интерној меморији"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Дозвољава апликацији да преузме информације о интерној меморији."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Дозвољава апликацији да прикључи/искључи интерну меморију."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"преименовање интерне меморије"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Дозвољава апликацији да преименује интерну меморију."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"контрола вибрације"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"контрола вибрације"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Дозвољава апликацији да контролише вибрацију."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"контрола осветљења"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Дозвољава апликацији да контролише блиц."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Дозвољава апликацији да изда наредбу систему о томе које апликације ће моћи да користе које виџете. Ова дозвола омогућава апликацијама да другим апликацијама одобре приступ личним подацима. Не користе је уобичајене апликације."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"измена статуса телефона"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Дозвољава апликацији да управља функцијама телефона на уређају. Апликација са овом дозволом може да прелази са једне мреже на другу и да без обавештења укључује и искључује радио телефона и сличне функције."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"читање статуса и идентитета телефона"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"читање статуса и идентитета телефона"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Дозвољава апликацији да приступа функцијама телефона уређаја. Ова дозвола омогућава да апликација утврди број телефона и серијски број телефона, затим да ли је позив активан, са којим бројем је успостављена веза и слично."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"спречавање преласка таблета у стање спавања"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"спречавање преласка телефона у стање спавања"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Покретање теста ниског нивоа који спроводи произвођач, које омогућава потпуни приступ хардверу телефона. Доступно је само када телефон покренут у режиму тестирања које спроводи произвођач."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"подешавање позадине"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Дозвољава апликацији да поставља позадину система."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"савети за подешавање величине позадине"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"прилагођавање величине позадине"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дозвољава апликацији да подеси савете за системску величину позадине."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"поновно постављање фабричких подразумеваних подешавања"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Дозвољава апликацији да поново постави комплетна фабричка подешавања система и тиме избрише све податке, конфигурацију и инсталиране апликације."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Дозвољава апликацији да промени временску зону телефона."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"улога услуге управљања налогом"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Дозвољава апликацији да упућује позиве издаваоцима потврде аутентичности налога."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"откривање познатих налога"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"проналажење налога на уређају"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Дозвољава апликацији да преузме листу налога познатих таблету."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Дозвољава апликацији да преузме листу налога за које постоје подаци на телефону."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"улога потврде идентитета налога"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"отварање налога и подешавање лозинки"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Дозвољава апликацији да користи могућности менаџера налога за потврду аутентичности налога, укључујући отварање налога, као и преузимање и подешавање лозинки за њих."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"управљање листом налога"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"додавање или уклањање налога"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Дозвољава апликацији да изврши радње попут додавања и уклањања налога, као и брисања одговарајућих лозинки."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"коришћење акредитива налога за потврду идентитета"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"коришћење налога на уређају"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Дозвољава апликацији да захтева токене за потврду аутентичности."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"приказ статуса мреже"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"преглед мрежних веза"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Дозвољава апликацији да прегледа статус свих мрежа."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"потпуни приступ Интернету"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Дозвољава апликацији да прави мрежне прикључке."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Дозвољава апликацији да мења статус везе са привезаном мрежом."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"промена подешавања за коришћење података у позадини"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Дозвољава апликацији да мења подешавање коришћења позадинских података."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"приказ Wi-Fi статуса"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"преглед Wi-Fi веза"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Дозвољава апликацији да прегледа информације о статусу Wi-Fi мреже."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"промена Wi-Fi статуса"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"повезивање и прекид везе са Wi-Fi мрежом"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Омогућава да се апликација повезује са Wi-Fi приступним тачкама и да прекине везу са њима, као и да уноси промене у конфигурисане Wi-Fi мреже."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"омогућавање пријема вишесмерног Wi-Fi саобраћаја"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Дозвољава апликацији да прима пакете који нису директно намењени уређају. То може бити корисно при откривању услуга које се нуде у близини. Користи више напајања од режима једносмерног саобраћаја."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Администрирање преко Bluetooth-а"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"приступ Bluetooth подешавањима"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Дозвољава апликацији да конфигурише локални Bluetooth таблет, као и да открије даљинске уређаје и упари се са њима."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Дозвољава апликацији да конфигурише локални Bluetooth телефон, као и да открије даљинске уређаје и упари се са њима."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Прикажи WiMAX статус"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Преглед WiMAX веза"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Дозвољава апликацији да прегледа информације о статусу WiMAX мреже."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Промени WiMAX статус"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Дозвољава апликацији повезивање и прекид везе са WiMAX мрежом."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"креирање Bluetooth веза"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"упаривање са Bluetooth уређајима"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Дозвољава апликацији да конфигурише локални Bluetooth таблет, као и да успоставља и прихвата везе са упареним уређајима."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Дозвољава апликацији да конфигурише локални Bluetooth телефон, као и да успоставља и прихвата везе са упареним уређајима."</string> <string name="permlab_nfc" msgid="4423351274757876953">"контрола комуникације у ужем пољу (Near Field Communication)"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Дозвољава апликацији да комуницира са ознакама, картицама и читачима комуникације кратког домета (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"онемогућавање закључавања тастатуре"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"онемогућавање закључавања екрана"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Дозвољава апликацији да онемогући закључавање тастатуре и свих повезаних безбедносних мера са лозинкама. Оправдани пример додељивања такве дозволе је када телефон онемогући закључавање тастатуре при пријему долазног телефонског позива и поново је омогући по завршетку позива."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"читање подешавања синхронизације"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Дозвољава апликацији да мења подешавања синхронизације, нпр. да омогући или онемогући синхронизацију апликације Људи."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"уписивање подешавања синхронизације"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"укључивање и искључивање синхронизације"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Дозвољава апликацији да измени подешавања синхронизације, нпр. да омогући или онемогући синхронизацију апликације Људи."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"читање статистике о синхронизацији"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Дозвољава апликацији да чита статистику синхронизације, нпр. историју обављених синхронизација."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Дозвољава апликацији да преузима детаље о тренутно синхронизованим фидовима."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"уписивање пријављених фидова"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Дозвољава апликацији да измени тренутно синхронизоване фидове. Злонамерне апликације могу да промене синхронизоване фидове."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"читање речника који је корисник дефинисао"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"читање термина које сте додали у речник"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Дозвољава апликацији да чита све приватне речи, називе и фразе које је корисник сачувао у корисничком речнику."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"уписивање у речник који је дефинисао корисник"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дозвољава апликацији да уписује нове речи у кориснички речник."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"читање садржаја USB меморије"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"читање садржаја SD картице"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Дозвољава апл. да чита садржај USB меморије."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Дозвољава апликацији да чита садржај SD картице."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"измена/брисање садржаја USB меморије"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"измена/брисање садржаја SD картице"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"читање садржаја USB меморије"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"читање садржаја SD картице"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Дозвољава апликацији читање садржаја USB меморије, што могу да буду слике и медији."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Дозвољава апликацији да чита садржај SD картице, који може да обухвата слике и медијуме."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"измена или брисање садржаја USB меморије"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"измена или брисање садржаја SD картице"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дозвољава апликацији да уписује податке на USB меморију."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Дозвољава апликацији да уписује податке на SD картицу."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"измена/брисање интерне меморије медија"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"У телефон није уметнута SIM картица."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Уметните SIM картицу."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM недостаје или не може да се прочита. Уметните SIM картицу."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM картица је трајно онемогућена."\n" Обратите се добављачу услуге бежичне мреже да бисте добили другу SIM картицу."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Дугме за претходну песму"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Дугме за следећу песму"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"знак"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"реч"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"веза"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"ред"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Фабричко тестирање није успело"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Парохија"</string> <string name="autofill_area" msgid="3547409050889952423">"Област"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Емират"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"читање историје и обележивача у прегледачу"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"читање веб обележивача и историје"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Дозвољава апликацији да чита све URL адресе које су посећене помоћу Прегледача, као и све обележиваче у њему."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"уписивање историје и обележивача из прегледача"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"писање веб обележивача и историје"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Дозвољава апликацији да измени историју или обележиваче Прегледача сачуване на таблету. Злонамерне апликације могу то да користе за брисање или измену података Прегледача."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Дозвољава апликацији да измени историју или обележиваче Прегледача који су ускладиштени на телефону. Злонамерне апликације могу то да користе за брисање или измену података Прегледача."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"подешавање аларма у будилнику"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"подешавање аларма"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Дозвољава апликацији да подеси аларм у инсталираној апликацији будилника. Неке апликације будилника можда не примењују ову функцију."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"додавање говорне поште"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Дозвољава апликацији да додаје поруке у пријемно сандуче говорне поште."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Подеси"</string> <string name="date_time_done" msgid="2507683751759308828">"Готово"</string> <string name="default_permission_group" msgid="2690160991405646128">"Подразумевано"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВО: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВО: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Није потребна ниједна дозвола"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Сакриј"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Прикажи све"</b></string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 1a085ab0d9b8..7f2b2c92e8bd 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Din pekdator stängs av."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Din telefon stängs av."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Vill du stänga av?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Starta om i felsäkert läge"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Vill du starta om datorn i felsäkert läge? Då inaktiveras alla appar från tredje part som du har installerat. Apparna återställs när du startar om datorn igen."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Senaste"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Inga nya appar."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Alternativ för pekdatorn"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Dina meddelanden"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Läsa och skriva SMS, e-post och andra meddelanden."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Dina personliga uppgifter"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direktåtkomst till dina kontakter och kalendern som har lagrats på pekdatorn."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direktåtkomst till dina kontakter och kalendern som har lagrats på telefonen."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Din plats"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Övervaka din fysiska plats."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Nätverkskommunikation"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Åtkomst till olika nätverksfunktioner."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Dina konton"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Få åtkomst till tillgängliga konton."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontroller för maskinvara"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Åtkomst och kontroll av systemet på lägre nivå."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Utvecklingsverktyg"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktioner som endast behövs för apputvecklare."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Få åtkomst till USB-enheten."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Få åtkomst till SD-kortet."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Tillåter att appen visas i statusfältet."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandera/komprimera statusfält"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Tillåter att appen expanderar eller komprimerar statusfältet."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"spärra utgående samtal"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"omdirigera utgående samtal"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Tillåter att appen hanterar utgående samtal och ändrar numret som ska ringas upp. Skadliga appar kan övervaka, omdirigera eller förhindra utgående samtal."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"ta emot SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"ta emot textmeddelanden (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Tillåter att appen tar emot och bearbetar SMS. Skadliga appar kan övervaka dina meddelanden eller ta bort dem innan du har sett dem."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"ta emot MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"ta emot textmeddelanden (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Tillåter att appen tar emot och bearbetar MMS. Skadliga appar kan övervaka dina meddelanden eller ta bort dem innan du har sett dem."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ta emot sändningar i nödsituationer"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Tillåter att appen tar emot och bearbetar sändningar i nödsituationer. Behörigheten är bara tillgänglig för systemappar."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Tillåter att appen skickar SMS. Skadliga appar kan skicka meddelanden utan ditt godkännande vilket kan kosta pengar."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"skicka SMS utan bekräftelse"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Tillåter att appen skickar SMS. Skadliga appar kan skicka meddelanden utan ditt godkännande vilket kan kosta pengar."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"läsa SMS eller MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"läsa dina textmeddelanden (SMS eller MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Tillåter att appen läser SMS som lagras på pekdatorn eller SIM-kortet. Skadliga appar kan läsa dina konfidentiella meddelanden."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Tillåter att appen läser SMS som sparas på telefonen eller SIM-kortet. Skadliga appar kan läsa dina konfidentiella meddelanden."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"redigera SMS eller MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"redigera dina textmeddelanden (SMS eller MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Tillåter att appen skriver till SMS som lagras på pekdatorn eller SIM-kortet. Skadliga appar kan radera dina meddelanden."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Tillåter att appen skriver till SMS som lagras på mobilen eller SIM-kortet. Skadliga appar kan radera dina meddelanden."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"ta emot WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ta emot textmeddelanden (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Tillåter att appen tar emot och bearbetar WAP-meddelanden. Skadliga appar kan övervaka dina meddelanden eller ta bort dem innan du har sett dem."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"hämta appar som körs"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Tillåter att appen hämtar information om uppgifter som körs och har körts. Skadliga appar kan upptäcka privat information om andra appar."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hämta information om aktiva appar"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillåter att appen hämtar detaljerad information om uppgifter som körs och har körts. Skadliga appar kan upptäcka personliga uppgifter om andra appar."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"byt ordning på appar som körs"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Tillåter att appen flyttar uppgifter till förgrunden eller bakgrunden. Skadliga appar kan tvinga sig till förgrunden utan att du kan styra det."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"avsluta appar som körs"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Tillåter att appen styr skärmkompatibilitetsläget i andra appar. Skadliga appar kan störa andra appars funktion."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"aktivera felsökning av appar"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Tillåter att appen aktiverar felsökning för en annan app. Skadliga appar kan använda detta för att avsluta andra appar."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"ändra dina gränssnittsinställningar"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"ändra systemets skärminställningar"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Tillåter att appen ändrar den aktuella konfigurationen, till exempel språk eller övergripande teckenformat."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivera trafikläge"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Tillåter att appen aktiverar billäge."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"avbryt bakgrundsprocesser"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"stänga andra appar"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Tillåter att appen avslutar bakgrundsprocesser för andra appar även om det inte finns för lite ledigt minne."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"tvinga andra appar att avslutas"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Tillåter att appen avslutar andra appar."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Tillåter att appen skickar ett meddelande om att ett WAP PUSH-meddelande har tagits emot. Skadliga appar kan använda detta för att förfalska mottagning av MMS eller för att obemärkt byta ut innehållet på en webbsida mot skadligt innehåll."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"begränsa antalet processer som körs"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Tillåter att appen styr högsta antalet processer som körs. Behövs inte för vanliga appar."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"gör så att alla bakgrundsappar stängs"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"tvinga bakgrundsappar att avslutas"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Tillåter att appen bestämmer om aktiviteter alltid är slutförda när de hamnar i bakgrunden. Ska inte behövas för vanliga appar."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"ändra batteristatistik"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Tillåter att appen ändrar samlad batteristatistik. Används inte av vanliga appar."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Tillåter att appen startar användargränssnittet för bekräftelse av fullständig säkerhetskopia. Ska inte användas av någon app."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"visa otillåtna fönster"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Tillåter att appen skapar fönster som ska användas av det interna systemgränssnittet. Används inte av vanliga appar."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"visa varningar på systemnivå"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"skriva över andra appar"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Tillåter att appen visar fönster med systemvarningar. Skadliga appar kan överta hela skärmen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ändra global animeringshastighet"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Tillåter att appen när som helst ändrar den globala animeringshastigheten (snabbare eller långsammare)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Tillåter att en app beviljar eller återkallar specifik behörighet, för sig själv eller andra appar. Skadlig programvara kan utnyttja detta för att få åtkomst till funktioner som du inte har beviljat behörighet till."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ange önskade appar"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Tillåter att appen ändrar dina önskade appar. Skadliga appar kan utan förvarning ändra de appar som körs och kapa dina befintliga appar så att de börjar samla privata uppgifter från dig."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"ändra globala systeminställningar"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"ändra systeminställningar"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Tillåter att appen ändrar systemets inställningar. Skadliga appar kan skada systemets konfiguration."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"ändra skyddade systeminställningar"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Tillåter att appen ändrar systemets säkerhetsinställningar. Används inte av vanliga appar."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"ändra kartan för Googles tjänster"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Tillåter att appen ändrar kartan för Googles tjänster. Används inte av vanliga appar."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"starta automatiskt vid systemstart"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"köra vid start"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Tillåter att appen startar automatiskt när systemet har startats om. Detta kan innebära att det tar längre tid att starta pekdatorn och att pekdatorn blir långsammare i och med att appen hela tiden körs i bakgrunden."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Tillåter att appen startar automatiskt när systemet har startats om. Detta kan innebära att det tar längre tid att starta mobilen och att mobilen blir långsammare i och med att appen hela tiden körs i bakgrunden."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"Skicka sticky broadcast"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Tillåter att appen skickar sticky broadcasts, som finns kvar när sändningen är slut. Skadliga appar kan göra pekdatorn seg eller instabil genom att se till att den använder för mycket minne."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Tillåter att appen skickar sticky broadcasts, som finns kvar när sändningen är slut. Skadliga appar kan göra mobilen seg eller instabil genom att använda för mycket minne."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"läsa kontaktinformation"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"skriva kontaktuppgifter"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"läsa dina kontakter"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Appen tillåts läsa alla data om dina kontakter som finns lagrade på pekdatorn, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Behörigheten kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Appen tillåts läsa alla data om dina kontakter som finns lagrade i mobilen, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Behörigheten kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"ändra kontakterna"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Appen tillåts läsa alla data om dina kontakter som finns lagrade i mobilen, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Detta kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Appen tillåts läsa alla data om dina kontakter som finns lagrade i mobilen, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Detta kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"läs samtalslogg"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Tillåter att appen läser pekdatorns samtalslista, inklusive uppgifter om inkommande och utgående samtal. Skadliga appar kan använda informationen för att skicka dina data till andra personer."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Tillåter att appen läser mobilens samtalslista, inklusive uppgifter om inkommande och utgående samtal. Skadliga appar kan använda informationen för att skicka dina data till andra personer."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"skriv samtalslogg"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Tillåter att appen gör ändringar i pekdatorns samtalslista, inklusive i uppgifter om inkommande och utgående samtal. Skadliga program kan använda detta för att radera eller ändra din samtalslista."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Tillåter att appen gör ändringar i mobilens samtalslista, inklusive i uppgifter om inkommande och utgående samtal. Skadliga program kan använda detta för att radera eller ändra din samtalslista."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"läser din profilinformation"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"läsa ditt eget kontaktkort"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Tillåter att appen läser personlig profilinformation som lagras på din enhet, t.ex. ditt namn och kontaktuppgifter. Det innebär att appen kan identifiera dig och skicka profilinformation till andra."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"skriver till data för din profil"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"ändra ditt eget kontaktkort"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Tillåter att appen ändrar eller lägger till personlig profilinformation som lagras på din enhet, t.ex. ditt namn och dina kontaktuppgifter. Det innebär att andra appar kan identifiera dig och skicka profilinformation till andra."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"läs mitt sociala flöde"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Gör att appen kan få åtkomst till och synkronisera sociala uppdateringar från dig och dina vänner. Skadliga appar kan använda detta för att läsa privata konversationer mellan dig och dina vänner på sociala nätverk."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"tvinga omstart av telefon"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Tillåter att appen tvingar pekdatorn att starta om."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Tillåter att appen tvingar mobilen att starta om."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"montering och demontering av filsystem"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"få åtkomst till USB-lagringen"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"få åtkomst till SD-kortets filsystem"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Tillåter att appen monterar och monterar bort filsystem för flyttbara lagringsmedia."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"formatera extern lagring"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"radera USB-lagring"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"radera SD-kort"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Tillåter att appen formaterar flyttbara lagringsmedia."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"få information om intern lagring"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Gör att appen får tillgång till information om internt minne."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Tillåter att appen monterar/monterar bort internt minne."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"byt namn på intern lagring"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Tillåter att appen byter namn på det interna minnet."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kontrollera vibration"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"styra vibration"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Tillåter att appen styr vibrationen."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"styra lampa"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Tillåter att appen styr lampan."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Tillåter att appen meddelar systemet vilka widgetar som kan användas av vilka appar. Med den här behörigheten kan andra appar få åtkomst till personliga uppgifter. Används inte av vanliga appar."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ändra telefonstatus"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Tillåter att appen styr enhetens telefonfunktioner. En app med den här behörigheten kan byta nätverk, aktivera/inaktivera mobilens radio och liknande utan att meddela dig."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"läsa telefonstatus och identitet"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"läsa telefonens status och identitet"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Tillåter att appen kommer åt enhetens telefonfunktioner. En app som har den här behörigheten kan identifiera mobilens telefonnummer och serienummer, om ett samtal pågår, numret som samtalet är kopplat till och så vidare."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"förhindra att pekdatorn går in i viloläge"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"förhindra att telefonen sätts i viloläge"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Köra som ett testläge för tillverkaren på låg nivå. På så sätt får du fullständig åtkomst till telefonens maskinvara. Är endast tillgänglig när telefonen körs i tillverkarens testläge."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"ange bakgrund"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Tillåter att appen anger systemets bakgrund."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"ange tips för bakgrundsstorlek"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"anpassa bakgrundsstorleken"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Tillåter att appen ger tips om systemets bakgrundsstorlek."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"återställa systemets fabriksinställningar"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Tillåter att appen helt återställer systemets fabriksinställningar. Alla data, inställningar och installerade appar raderas."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Tillåter att appen ändrar mobilens tidszon."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"fungera som AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Tillåter att appen anropar AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"upptäcka kända konton"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"hitta konton på enheten"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Tillåter att appen hämtar en lista över konton som pekdatorn känner till."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Tillåter att appen hämtar en lista över konton som mobilen känner till."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"fungera som kontoautentiserare"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"skapa konton och ange lösenord"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Tillåter att appen använder AccountManagers kontoautentiseringsfunktioner, bland annat funktioner för att skapa konton samt hämta och ange lösenord för dem."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"hantera kontolistan"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"lägga till eller ta bort konton"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Tillåter att appen utför åtgärder som att lägga till och ta bort konton och ta bort lösenord."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"använda ett kontos autentiseringsuppgifter"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"använda konton på enheten"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Tillåter att appen begär autentiseringstoken."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"visa nätverksstatus"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"visa nätverksanslutningar"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Tillåter att appen ser status för alla nätverk."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"fullständig Internetåtkomst"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Tillåter att appen skapar nätverksuttag."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Tillåter att appen ändrar statusen för en delad nätverksanslutning."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"ändra inställningar för användning av bakgrundsdata"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Tillåter att appen ändrar inställningen för användning av bakgrundsdata."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"visa Wi-Fi-status"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"visa Wi-Fi-anslutningar"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Tillåter att appen visar information om Wi-Fi-status."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"byta Wi-Fi-status"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"anslut och koppla från Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Tillåter att appen ansluter till och kopplar från Wi-Fi-åtkomstpunkter samt gör ändringar i konfigurerade Wi-Fi-nätverk."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"tillåt Wi-Fi multicast-mottagning"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Tillåter att appen tar emot paket som inte är adresserade direkt till enheten. Det är användbart om du vill upptäcka tillgängliga tjänster i närheten. Det drar mer batteri än om mobilen inte är i multicast-läge."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Administrera bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"få åtkomst till Bluetooth-inställningar"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Tillåter att appen konfigurerar den lokala Bluetooth-pekdatorn samt upptäcker och parkopplar den med fjärranslutna enheter."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Tillåter att appen konfigurerar den lokala Bluetooth-mobilen samt upptäcker och parkopplar den med fjärranslutna enheter."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"visa WiMAX-status"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Visa WiMAX-anslutningar"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Tillåter att appen visar information om WiMAX-status."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"ändra WiMAX-status"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Tillåter att appen kan anslutas till och kopplas ifrån WiMAX-nätverk."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"skapa Bluetooth-anslutningar"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"koppla till Bluetooth-enheter"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Tillåter att appen ser den lokala Bluetooth-pekdatorns konfiguration och skapar och accepterar anslutningar med parkopplade enheter."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Tillåter att appen ser den lokala Bluetooth-mobilens konfiguration och skapar och accepterar anslutningar med parkopplade enheter."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontrollera närfältskommunikationen"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Tillåter att appen kommunicerar med etiketter, kort och läsare för närfältskommunikation (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"inaktivera tangentlås"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"inaktivera skärmlåset"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Tillåter att appen inaktiverar tangentlåset och tillhörande lösenordsskydd. Ett exempel på detta är att tangentlåset inaktiveras vid inkommande samtal och aktiveras igen när samtalet är avslutat."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"läsa synkroniseringsinställningar"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Tillåter att appen läser synkroniseringsinställningarna, till exempel om synkronisering har aktiverats för kontakter."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"skriva synkroniseringsinställningar"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"aktivera/inaktivera synkronisering"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Tillåter att appen ändrar synkroniseringsinställningarna, till exempel om synkronisering har aktiverats för kontakter."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"läsa synkroniseringsstatistik"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Tillåter att appen läser synkroniseringsstatistiken, till exempel historiken över synkroniseringar som har gjorts."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Tillåter att appen får information om aktuella synkroniserade flöden."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"skriva flöden som du prenumererar på"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Tillåter att appen ändrar dina aktuella synkroniserade flöden. Skadliga appar kan ändra dina synkroniserade flöden."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"läsa användardefinierad ordlista"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"läsa termer som du har lagt till i ordlistan"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Tillåter att appen läser alla privata ord, namn och fraser som användaren har sparat i ordlistan."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"lägga till i användardefinierad ordlista"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tillåter att appen anger nya ord i användarordlistan."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"läs innehållet på USB-lagringsenheten"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"läs innehållet på SD-kortet"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Appen får läsa innehåll på USB-enhet."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Tillåter appen att läsa innehållet på SD-kort."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"ändra/ta bort från USB-enhet"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ändra/ta bort innehåll på SD-kortet"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"läsa innehåll på USB-enheten"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"läsa innehållet på SD-kortet"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Tillåter att innehållet läses."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Tillåter att appen läser SD-kortets innehåll, inklusive eventuella bilder och media."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ändra eller ta bort innehållet"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"ändra eller ta bort innehållet på SD-kortet"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Gör att app skriver till USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Tillåter att appen skriver till SD-kortet."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"ändra/ta bort innehåll"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Inget SIM-kort i telefonen."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Sätt i ett SIM-kort."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kort saknas eller kan inte läsas. Sätt i ett SIM-kort."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kortet har inaktiverats permanent."\n" Beställ ett nytt SIM-kort från din operatör."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knapp för föregående spår"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knapp för nästa spår"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"tecken"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"ord"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"länk"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"rad"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Det gick fel vid fabrikstestet"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Församling"</string> <string name="autofill_area" msgid="3547409050889952423">"Område"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"läsa webbläsarhistorik och bokmärken"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"läsa dina bokmärken och din historik på webben"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Tillåter att appen läser alla webbadresser som webbläsaren har öppnat samt alla webbläsarens bokmärken."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skriva webbläsarhistorik och bokmärken"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skriva bokmärken och historik på webben"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Tillåter att appen ändrar webbläsarhistoriken och bokmärkena på pekdatorn. Skadliga appar kan använda detta för att ta bort eller ändra data i webbläsaren."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Tillåter att appen ändrar webbläsarhistoriken och bokmärkena på mobilen. Skadliga appar kan använda detta för att ta bort eller ändra data i webbläsaren."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"ställa in alarm i alarmklocka"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"ställa in ett alarm"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Tillåter att appen ställer in ett alarm i en befintlig alarmapp. Vissa alarmappar har inte den här funktionen."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"lägg till röstbrevlåda"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Gör att appen lägger till meddelanden i röstbrevlådans inkorg."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Ställ in"</string> <string name="date_time_done" msgid="2507683751759308828">"Klar"</string> <string name="default_permission_group" msgid="2690160991405646128">"Standardinställning"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NY: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NY: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Inga behörigheter krävs"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Dölj"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Visa alla"</b></string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index b9be9594852c..3ce4cd21f36e 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Kompyuta yako ndogo itazima."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Simu yako itazima."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Unataka kuzima?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Washa upya kwa hali salama"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Je, unataka kuwasha upya kwa hali salama? Hii italemaza programu zote za wahusika wengine ambazo umesakinisha. Zitarejeshwa wakati utawasha upya tena."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Za hivi karibuni"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Hakuna programu za hivi karibuni."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Chaguo za kompyuta ndogo"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Ujumbe wako"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Soma na kuandika SMS, barua pepe, na jumbe zako zingine."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Maelezo yako ya kibinafsi"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Ufikiaji wa moja kwa moja wa anwani zako na kalenda iliyohifadhiwa kwenye kompyuta ndogo."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Ufikiaji wa moja kwa moja wa anwani zako na kalenda zilizohifadhiwa kwenye simu."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Mahali pako"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Fuatilia eneo lako halisi."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Mawasiliano ya mtandao"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Fikia vipengele mbalimbali vya mtandao."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Akaunti zako"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Fikia akaunti zinazopatikana."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Vidhibiti vya maunzi"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Ufikiaji wa kiwango cha chini na udhibiti wa mfumo."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Zana za utengenezaji"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Vipengee vinahitajika tu na wasinidi wa programu."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Hifadhi"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Fikia hifadhi ya USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Fikia kadi ya SD."</string> @@ -195,45 +261,47 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Inaruhusu programu kuwa upau wa hali."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"panua/kunja mwambaa hali"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Inaruhusu programu kupanua au kukunja upau wa hali."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"ingilia simu zinazotoka"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"panga upya simu zinazotoka"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Inaruhusu programu kuchakata simu zinazotoka na kubadilisha nambari itakayopigwa. Programu hasidi zinaweza kufuatilia, kuelekeza kwingine, au kuzuia simu zinazotoka."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"pokea SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"pokea jumbe za matini (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Inaruhusu programu kupokea na kuchakata jumbe za SMS. Programu hasidi zinaweza kufuatilia jumbe zako au kuzifuta bila kukuonyesha."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"pokea MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"pokea jumbe za matini (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Inaruhusu programu kupokea na kuchakata jumbe za MMS. Programu hasidi zinaweza kufuatilia jumbe zako au kuzifuta bila kukuonyesha."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Pokea matangazo ya dharura"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Inaruhusu programu kupokea na kuchakata jumbe za dharura. Ruhusa hii inapatikana tu kwa programu za mfumo."</string> - <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"soma ujumbe wa matangazo ya simu"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Huruhusu programu kusoma ujumbe wa matangazo ya simu yaliyopokewa na kifaa chako. Taarifa za matangazo ya simu huwasilishwa katika maeneo mengine ili kukuonya juu ya hali za dharura. Huenda programu mbaya zikatatiza utendajikazi au shughuli ya kifaa chako wakati matangazo ya simu ya dharura yamepokewa."</string> + <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"soma jumbe za matangazo ya simu"</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Huruhusu programu kusoma jumbe za matangazo ya simu zilizopokewa na kifaa chako. Taarifa za matangazo ya simu huwasilishwa katika maeneo mengine ili kukuonya juu ya hali za dharura. Huenda programu hasidi zikatatiza utendajikazi au shughuli ya kifaa chako wakati matangazo ya simu ya dharura yamepokewa."</string> <string name="permlab_sendSms" msgid="5600830612147671529">"tuma ujumbe wa SMS"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"Inaruhusu programu kutuma jumbe za SMS. Programu hasidi zinaweza kukugharimu fedha kwa kutuma jumbe bila uthibitisho wako."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"Tuma ujumbe wa SMS bila ya thibitisho"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Huruhusu programu kutuma jumbe wa SMS. Programu hasidi huenda zikakugharimu pesa kwa kutuma jumbe bila uthibitisho wako."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"soma SMS au MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"soma jumbe zako za matini (SMS au MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Inaruhusu programu kusoma jumbe za SMS zilizohifadhiwa kwenye kompyuta kibao au SIM kadi yako. Programu hasidi zinaweza kusoma jumbe zako za siri."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Inaruhusu programu kusoma jumbe za SMS zilizohifadiwa kwenye simu ya au SIM kadi. Programu hasidi zinaweza kusoma jumbe zako za siri."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"hariri SMS au MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"Hariri jumbe zako za matini (SMS au MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Inaruhusu programu kuandikia jumbe za SMS zinazohifadhiwa kwenye kompyuta yako kibao au SIM kadi. Programu hasidi zinaweza kufuta jumbe zako."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Inaruhusu programu kuandika jumbe za SMS zinazohifadhiwa kwenye simu yako au SIM kadi. programu hasidi zinaweza kufuta ujumbe zako."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"pokea WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"pokea jumbe za matini (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Inaruhusu programu kupokea na kuchakata jumbe za WAP. Programu hasidi zinaweza kufuatilia jumbe zako au kuzifuta bila kukuonyesha."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"rudisha programu zinazoendeshwa"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Inaruhusu programu kupata taarifa kuhusu kazi zinazoendelea sasa na hivi karibuni. Programu hasidi zinaweza kugundua taarifa ya kibinafsi kuhusu programu zingine."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"epua maelezo ya programu zinazoendeshwa"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Huruhusu programu kuepua maelezo tondoti kuhusu kazi za sasa na zinazoendelea hivi karibuni. Programu hasidi huenda zikagundua maelezo ya kibinafsi kuhusu programu zingine."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"Agiza tena programu za kuendeshwa"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Inaruhusu programu kusongesha kazi kwenye mandhari-mbele na mandhari-nyuma. Programu hasidi zinaweza kujilazimisha mbele bila udhibiti wako."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"Komesha programu zinazoendeshwa"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Huruhusu programu kuondoa majukumu na kuua programu zao. Programu hasidi zinaweza kutatiza tabia ya programu zingine."</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"anzisha shughuli yoyote"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Huruhusu programu kuanzisha shughuli yoyote, haijalishi ulinzi wa idhini au hali iliyofichuliwa."</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Huruhusu programu kuanzisha shughuli yoyote, pasi kujali ulinzi wa idhini au hali ya nje."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"weka utangamano wa skrini"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Huruhusu programu kudhibiti hali ya utangamano wa skrini ya programu zingine. Programu hasidi zinaweza kuvunja mwenendo wa programu zingine."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"wezesha utatuaji wa programu"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Huruhusu programu kuwasha kueua cha programu nyingine. Programu hasidi huenda zikatumia hii ili kuua programu nyingine."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"badilisha mipangilio yako ya onyesho"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"badilisha mipangilio ya kuonyesha mfumo"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Huruhusu programu kubadilisha usanidi wa sasa, kama vile kieneo au ukubwa wa jumla wa fonti."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"Wezesha mtindo wa gari"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Inaruhusu programu kuwawezesha mtindo wa gari."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"fifiza shughuli za maandhari nyuma"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"funga programu zingine"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Inaruhusu programu kuua mchakato wa usuli wa programu zingine, hata kama kumbukumbu si ndogo."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"Lazimisha kukomesha programu zingine"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Inaruhusu programu kulazimisha programu zingine kuacha."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Inaruhusu programu kutangaza taarifa kwamba ujumbe wa WAP PUSH umepokewa. Programu hasidi zinaweza kutumia hii kubuni risiti ya ujumbe wa MMS au polepole kubadilisha maudhui yoyote ya ukurasa wa tovuti na vibadala vibovu."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"zuia idadi ya michakato inayoendeshwa"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Inaruhusu programu kudhibiti upeo wa idadi ya michakato ambayo itaendeshwa. Kamwe hazihitajiki kwa programu za kwaida."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"fanya programu zote za usuli zifunge"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"lazimisha programu za usuli kufunga"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Inaruhusu programu kudhibiti kama daima shughuli zinamalizwa wakati ziendapo kwa mandhari-nyuma. Kamwe hazihitajiki kwa programu za kawaida."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"rekebisha takwimu za betri"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Inaruhusu programu kurekebisha takwimu za betri zilizokusanywa. Si kwa matumizi ya programu za kawaida."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Inaruhusu programu kuzindua UI ya kuthibitisha chelezo kamili. Si ya kutumiwa na programu yoyote."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"onyesha madirisha yasiyoidhinishwa"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Huruhusu programu kuunda madirisha ambayo yananuiwa kutumiwa na kusano ya mtumiaji ya mfumo wa ndani. Sio ya matumizi na programu za kawaida."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"onyesha tahadhari za kiwango cha mfumo"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"chora juu ya programu zingine"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Inaruhusu programu kuonyesha dirisha za arifa za mfumo. Programu hasidi zaweza kutawala skrini nzima."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"rekebisha kasi ya jumla ya uhuisho"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Huruhusu programu kubadilisha kasi ya uhuishaji kijumla (uhuisho wa haraka zaidi au wa polepole zaidi) wakati wowote."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Inaruhusu programu kutoa au kukataa idhini maalum ya programu hii au zingine. Programu hasidi zinaweza kutumia hii ili kufikia vipengee ambavyo hujaziruhusu."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"kuweka programu zinazopendelewa"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Inaruhusu programu kurekebisha programu unazopendelea. Programu hasidi zinaweza, polepole, kubadilisha programu zinazoendeshwa, na kuzifanya programu ulizo nazo kukusanya data ya kibinafsi kutoka kwako."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"rekebisha mipangilio ya mfumo jumla"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"rekebisha mipangilio ya mfumo"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Inaruhusu programu kurekebisha mipangilio ya mfumo wa data. Programu hasidi zinaweza kuvuruga usanidi wa mfumo wako."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"rekebisha mipangilio ya mfumo salama"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Inaruhusu programu kurekebisha mipagilio ya mfumo wa data salama. Si ya kutumiwa na programu za kawaida."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"rekebisha ramani ya Google services"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Inaruhusu programu kurekebisha ramani ya huduma za Google. Si ya kutumiwa na programu za kawaida."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"anzisha kiotomatiki inapowashwa"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"endesha wakati wa uwashaji"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Inaruhusu programu yenyewe kujianzisha baada ya mfumo kumaliza kuuanza upya. Hii inaweza kufanya ichukue muda mrefu kuanza kompyuta kibao na kuruhusu programu kupunguza kasi ya kompyuta kibao kijumla kwa kuendeshwa siku zote."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Inaruhusu programu kujianzisha yenyewe mfumo unapo maliza kuanza upya. Hii inaweza kuchukua muda mrefu simu kuanza na kuruhusu programu kupunguza kasi ya simu kwa jumla kwa kuendeshwa polepole kila wakati."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"tuma tangazo la kulanata"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Inaruhusu programu kutuma matangazo nata, ambayo hubakia baada ya matangazo kuisha. Programu hasidi zinaweza fanya kompyuta kibao kufanya kazi polepole au kuifanya isiwe thabiti kwa kuifanya itumie kumbukumbu kubwa zaidi."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Inaruhusu programu kutuma matangazo nata, ambayo hubakia baada ya matangazo kuisha. Programu hasidi zinaweza fanya simu kufanya kazi polepole au kuifanya isiwe thabiti kwa kuifanya itumie kumbukumbu kubwa zaidi."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"soma data ya anwani"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"andika data ya anwani"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"soma anwani zako"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Huruhusu programu kusoma data yote kuhusu anwani zako zilizohifadhiwa kwenye kompyuta yako kibao, ikiwa ni pamoja na idadi ya mara ambazo ulipiga simu, kutuma barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia idhini hii ili kutuma data yako ya anwani kwa watu wengine."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Huruhusu programu kusoma data yote kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na idadi ya mara ambazo umepiga simu, kutuma barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia idhini hii ili kutuma data yako ya anwani kwa watu wengine."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"rekebisha anwani zako"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Huruhusu programu kurekebisha data kuhusu anwani zako zilizohifadhiwa kwenye kompyuta yako kibao, ikiwa ni pamoja na idadi ya mara ulizopiga simu, kutumia barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data yako ya anwani."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Huruhusu programu kurekebisha data kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na idadi ya mara ulizopiga simu, kutuma barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data yako ya anwani."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"soma rajisi ya simu"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Huruhusu programu kusoma rajisi ya simu ya kompyuta kibao yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kutuma data yako kwa watu wengine."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Huruhusu programu kusoma rajisi ya simu yako, ikiwa ni pamoja na data kuhusu simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kutuma data yako kwa watu wengine."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"andika rajisi ya simu"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Huruhusu programu kurekebisha rajisi ya kompyuta kibao yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kufuta au kurekebisha rajisi ya simu yako."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Huruhusu programu kurekebisha rajisi ya simu yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kufuta au kurekebisha rajisi ya simu yako."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"soma data ya maelezo yako mafupi"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"soma kadi yako mwenyewe ya mawasiliano"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Inaruhusu programu kusoma maelezo mafupi ya kibinafsi yaliyohifadhiwa kwenye kifaa chako, kama vile jina lako na taarifa ya kuwasiliana. Hii ina maanisha programu inaweza kukutambua na kutuma taarifa yako fupi ya kibinafsi kwa wengine."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"andika kwenye data ya maelezo yako mafupi"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"rekebisha kadi yako mwenyewe ya mawasiliano"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Inaruhusu programu kubadilisha au kuongeza taarifa fupi ya kibinafsi iliyohifadhiwa katika kifaa chako, kama vile jina lako na maelezo ya kuwasiliana. Hii ina maanisha kwamba programu zingine zinaweza kukutambua na kutuma taarifa yako fupi kwa wengine."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"soma mipasho yako wa kijamii"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Inaruhusu programu kufikia na kulandanisha sasisho za kijamii kutoka kwako na marafiki zako. Programu hasidi zinaweza kutumia hii kusoma mawasiliano ya kibinafsi kati yako na marafiki zako kwenye mitandao ya kijamii."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"lazimisha kwasha upya simu"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Inaruhusu programu kulazimisha kompyuta kibao kuwashwa upya."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Inaruhusu programu kulazimisha simu kujiwasha upya."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"weka na ondoa mifumo ya faili"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"fikia mfumo wa faili wa hifadhi ya USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"fikia mfumo wa faili wa Kadi ya SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Inaruhusu programu kupachika au kupachua mifumo ya faili ya hifadhi inayoweza kutolewa."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"fomati hifadhi ya nje"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"futa hifadhi ya USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"futa Kadi ya SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Inaruhusu programu kufomati hifadhi inayoweza kutolewa."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"pata maelezo juu ya hifadhi ya ndani"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Inaruhusu programu kupata maelezo juu ya hifadhi ya ndani."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Inaruhusu programu kupachika/kupachua hifadhi ya ndani."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"ipe hifadhi ya ndani jina jipya"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Inaruhusu programu kubadilisha jina la hifadhi ya ndani."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"dhibiti kitingishi"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"dhibiti mtetemo"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Inaruhusu programu kudhibiti kitingishi."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"dhibiti tochi"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Inaruhusu programu kudhibiti tochi."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Inaruhusu programu kuwaambia mfumo wijeti ambazo zinaweza kutumika na programu. Programu ambayo ina ruhusa hii inaweza kuruhusu ufikiaji wa data binafsi na kwa programu nyingine. Si ya kutumiwa na programu za kawaida."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"badiliisha hali ya simu"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Inaruhusu programu kudhibiti vipengee vya kifaa. Programu iliyo na ruhusa hii inaweza badilisha mtandao, kuzima na kuwasha redio ya simu bila hata kukujulisha."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"soma hali ya simu na itambue"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"soma hali ya simu na kitambulisho"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Inaruhusu programu kufikia vipengee vya simu vya kifaa. Programu inayo na ruhusa hii inaweza kuamua namba ya simu na namba tambulishi ya simu hii, kama kuna simu inapigwa, namba inayopigiwa simu hiyo na mengine kama hayo."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zuia kompyuta ndogo dhidi ya kulala"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zuia simu dhidi ya kulala"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Endesha kama jaribio la kiwango cha chini cha mtengenezaji, kwa hivyo kuruhusu ufikiaji kamili wa maunzi ya simu. Inapatikana tu wakati simu inaendeshwa katika gumzo ya jaribio ya mtengenezaji."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"weka mandhari"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Inaruhusu programu kuweka mfumo wa mandhari."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"weka vidokezo vya ukubwa wa mandhari"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"rekebisha ukubwa wa mandhari yako"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Inaruhusu programu kuweka vidokezo vya ukubwa wa mandhari ya mfumo."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"weka upya mfumo kwa chaguo-msingi za kiwanda"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Inaruhusu programu kuweka upya kabisa mfumo kwa mipangilio yake ya kiwanda, huku ikifuta data yote, usanidi, na programu zilizosanikishwa."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Inaruhusu programu kubadilisha majira ya saa ya simu."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"tenda kama Huduma ya Meneja wa Akaunti"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Huruhusu programu kupiga simu kwa Wathibitishaji Akaunti."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"tambua akaunti zinazojulikana"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"pata akaunti kwenye kifaa"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Inaruhusu programu kupata orodha ya akaunti zinazojulikana na kompyuta kibao."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Inaruhusu programu kupata orodha ya akaunti zinazojulikana na simu."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"tenda kama mhalalishaji"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"unda akaunti na weka manenosiri"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Inaruhusu programu kutumia uwezo wa uthibitishaji akaunti wa KidhibitiAkaunti, pamoja na kuunda akaunti na kupata na kuweka nywila zao."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"simamia orodha ya akaunti"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"ongeza au ondoa akaunti"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Inaruhusu programu kutekeleza shughuli kama vile kuongeza na kutoa akaunti, na kufuta manenosiri yazo."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"tumia hati-tambulishi za uhalalishaji akaunti"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"tumia akaunti kwenye kifaa"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Inaruhusu programu kuomba shuhuda za uthibitisho."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"angalia hali ya mtandao"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ona miunganisho ya mtandao"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Inaruhusu programu kuangalia hali ya mitandao yote."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"ufikiaji kamili wa mtandao"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Inaruhusu programu kuunda soketi za mtandao."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Inaruhusu programu kubadilisha hali ya muunganisho wa mtandao uliofungwa."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"badilisha mpangilio wa utumiaji data ya mandharinyuma"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Inaruhusu programu kubadilisha mpangilio wa matumizi ya data ya usuli."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"ona hali ya mtandao-hewa"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ona miunganisho ya Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Inaruhusu programu kuona taarifa kuhusu hali ya Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"badilisha hali ya Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"unganisha na utenganishe kutoka kwa Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Inaruhusu programu kuunganisha na kutenganisha kutoka kwa pointi za ufikivu za Wi-Fi, na kufanya mabadiliko kwa mitandao ya Wi-Fi iliyosanidiwa."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ruhusu upokeaji wa Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Inaruhusu programu kupata furushi amabazo hazijaelekezwa moja kwa moja kwa kifaa chako. Hii inaweza kuwa muhimu wakati wa kutambua huduma zinazotolewa karibu na eneo hilo. Inatumia nguvu zaidi kuliko mtindo wa kutupa mbali mbali.."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Usimamizi wa bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"fikia mipangilio ya Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Inaruhusu programu kusanidi kompyuta kibao ya karibu ya Bluetooth na kutambua na kuoanisha na vifaa vya kudhibiti."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Inaruhusu programu kusanidi simu ya karibu ya Bluetooth, na kutambua na kuoanisha na vifaa vya mbali."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Ona hali ya WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ona miunganisho ya WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Huruhusu programu kuona maelezo kuhusu hali ya WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Badilisha hali ya WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Huruhusu programu kuunganisha na kutenganisha kutoka kwenye mtandao wa WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"unda muunganisho wa Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"oanisha na vifaa vya Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Inaruhusu programu kuona usanidi wa kompyuta kibao ya karibu ya Bluetooth, na kuwezesha na kukubali muunganisho na vifaa vilivyo oanishwa."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Inaruhusu programu kuangalia usanidi wa simu ya karibu ya Bluetooth, na kufanya na kukubali miunganisho na vifaa vilivyolinganishwa."</string> <string name="permlab_nfc" msgid="4423351274757876953">"dhibiti Mawasiliano Karibu na Uga"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Inaruhusu programu kuwasiliana na lebo, kadi na wasomaji wa Near Field Communication (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"lemaza ufunguo wa vitufe"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"lemaza kufuli lako la skrini"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Inaruhusu programu kulemaza kifunga kitufe na usalama wowote unaohusishwa na nenosiri. Mfano halisi wa hii ni simu kulemaza kifunga kitufe wakati wa kupokea simu inayoingia, kisha kuwezesha upya kifunga kitufe simu inapomalizika."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"soma mipangilio ya usawazishaji"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Inaruhusu programu kusoma mipangilio ya ulandanishi, kama vile ikiwa ulandanishi imewezeshwa kwa programu ya Watu."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"andika mipangilio ya usawazishaji"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"washa na zima ulandanishi"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Inaruhusu programu kurekebisha mipangilio ya ulandanishi, kama vile ikiwa ulandanishi umewezeshwa kwa programu ya Watu."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"soma takwimu za usawazishaji"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Inaruhu programu kusoma takwimu zilizolandanishwa; k.v., historia ya ulandanishi ambao umetokea."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Inaruhusu programu kupata maelezo kuhusu mlisho iliyolandanishwa kwa sasa."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"andika milisho ya kujiunga"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Inaruhusu programu kurekebisha milisho yako iliyolandanishwa kwa sasa. Programu hasidi zinaweza kubadilisha milisho yako iliyolandanishwa."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"soma kamusi iliyobainishwa na mtumiaji"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"soma sheria ulizoongeza kwenye kamusi"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Inaruhusu programu kusoma maneno, majina na vifungu vyovyote vya kibinafsi, ambavyo huenda mtumiaji amehifadhi katika kamusi ya mtumiaji."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"andika kwa kamusi iliyobainishwa na mtumiaji"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Inaruhusu programu kuandika maneno mapya katika kamusi ya mtumiaji."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"soma maudhui ya hifadhi ya USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"soma maudhui ya kadi ya SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Huruhusu programu kusoma maudhui ya hifadhi ya USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Huruhusu programu kusoma maudhui ya kadi ya SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"rekebisha/futa maudhui ya hifadhi ya USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"rekebisha/futa maudhui ya kadi ya SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"soma maudhui ya hifadhi yako ya USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"soma maudhui ya kadi yako ya SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Huruhusu programu kusoma maudhui ya hifadhi ya USB, ambayo huenda ikajumuisha picha na midia."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Huruhusu programu kusoma maudhui ya kadi ya SD, ambayo huenda ikajumuisha picha na midia."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"rekebisha au futa maudhui ya hifadhi yako ya USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"rekebisha au futa maudhui ya kadi yako ya SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Inaruhusu programu kuandikia hifadhi ya USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Inaruhusu programu kuandikia kadi ya SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"badilisha/futa maudhui ya hifadhi ya media ya ndani."</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Hakuna SIM kadi kwenye simu."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Ingiza SIM kadi."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Kadi ya SIM haiko au haisomeki. Tafadhali ingiza SIM kadi."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kadi yako imelemezwa kabisa."\n" Wasiliana na mtoa huduma wako wa pasi waya ili upate SIM kadi nyingine."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Kitufe cha awali cha wimbo"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Kitufe cha wimbo unaofuata"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"kibambo"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"neno"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"kiungo"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"mstari"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Jaribio la kiwanda limeshindikana"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Mtaa"</string> <string name="autofill_area" msgid="3547409050889952423">"Eneo"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"soma historia na alamisho za Kivinjari"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"soma alamisho na historia ya Wavuti yako"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Inaruhusu programu kusoma URL zote ambazo Kivinjari kimetembelea, na alamisho zote za Kivinjari."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"andika historia ya Kivinjari na alamisho"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"andika alamisho na historia ya wavuti"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Inaruhusu programu kurekebisha historia ya Kivinjari au alamisho zilizohifadhiwa katika kompyuta yako kibao. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data ya Kivinjari chako."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Inaruhusu programu kurekebisha historia au alamisho za Kivinjari zilizohifadhiwa katika simu yako. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data ya Kivinjari chako."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"weka kengele kwenye saa ya kengele"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"weka kengele"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Inaruhusu programu kuweka kengele katika programu iliyosakinishwa ya kengele. Programu zingine za kengele zinawezakosa kutekeleza kipengee hiki."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"ongeza barua ya sauti"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Inaruhusu programu kuongeza jumbe kwenye kikasha cha ujumbe wa sauti."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Weka"</string> <string name="date_time_done" msgid="2507683751759308828">"Imekamilika"</string> <string name="default_permission_group" msgid="2690160991405646128">"Chaguo-msingi"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">" MPYA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">" MPYA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Hakuna vibali vinavyohitajika"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ficha"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Onyesha zote"</b></string> diff --git a/core/res/res/values-sw600dp/bools.xml b/core/res/res/values-sw600dp/bools.xml index e74379cc46f8..92b61715ca2e 100644 --- a/core/res/res/values-sw600dp/bools.xml +++ b/core/res/res/values-sw600dp/bools.xml @@ -16,6 +16,5 @@ <resources> <bool name="preferences_prefer_dual_pane">true</bool> - <bool name="show_ongoing_ime_switcher">false</bool> <bool name="target_honeycomb_needs_options_menu">false</bool> </resources> diff --git a/core/res/res/values-sw600dp/config.xml b/core/res/res/values-sw600dp/config.xml index 49c88931f105..7fa76589957d 100644 --- a/core/res/res/values-sw600dp/config.xml +++ b/core/res/res/values-sw600dp/config.xml @@ -21,7 +21,7 @@ for different hardware and product builds. --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- see comment in values/config.xml --> - <integer name="config_longPressOnPowerBehavior">1</integer> + <integer name="config_longPressOnPowerBehavior">2</integer> <!-- Enable lockscreen rotation --> <bool name="config_enableLockScreenRotation">true</bool> diff --git a/core/res/res/values-sw600dp/dimens.xml b/core/res/res/values-sw600dp/dimens.xml index 45147602cd57..f8f865e19f27 100644 --- a/core/res/res/values-sw600dp/dimens.xml +++ b/core/res/res/values-sw600dp/dimens.xml @@ -64,10 +64,10 @@ <!-- The platform's desired fixed width for a dialog along the major axis (the screen is in landscape). This may be either a fraction or a dimension.--> - <item type="dimen" name="dialog_fixed_width_major">50%</item> + <item type="dimen" name="dialog_fixed_width_major">60%</item> <!-- The platform's desired fixed width for a dialog along the minor axis (the screen is in portrait). This may be either a fraction or a dimension.--> - <item type="dimen" name="dialog_fixed_width_minor">70%</item> + <item type="dimen" name="dialog_fixed_width_minor">90%</item> <!-- The platform's desired fixed height for a dialog along the major axis (the screen is in portrait). This may be either a fraction or a dimension.--> <item type="dimen" name="dialog_fixed_height_major">60%</item> diff --git a/core/res/res/values-sw720dp/dimens.xml b/core/res/res/values-sw720dp/dimens.xml index cac5aab0000e..bbbfaaea4460 100644 --- a/core/res/res/values-sw720dp/dimens.xml +++ b/core/res/res/values-sw720dp/dimens.xml @@ -20,6 +20,20 @@ <!-- Height of the bottom navigation bar in portrait; on sw720dp devices this is the same as the height in landscape --> <dimen name="navigation_bar_height_portrait">@dimen/navigation_bar_height</dimen> + + <!-- The platform's desired fixed width for a dialog along the major axis + (the screen is in landscape). This may be either a fraction or a dimension.--> + <item type="dimen" name="dialog_fixed_width_major">50%</item> + <!-- The platform's desired fixed width for a dialog along the minor axis + (the screen is in portrait). This may be either a fraction or a dimension.--> + <item type="dimen" name="dialog_fixed_width_minor">70%</item> + <!-- The platform's desired fixed height for a dialog along the major axis + (the screen is in portrait). This may be either a fraction or a dimension.--> + <item type="dimen" name="dialog_fixed_height_major">60%</item> + <!-- The platform's desired fixed height for a dialog along the minor axis + (the screen is in landscape). This may be either a fraction or a dimension.--> + <item type="dimen" name="dialog_fixed_height_minor">90%</item> + </resources> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 0b6fb910540a..48b8bc5cd87c 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"แท็บเล็ตของคุณจะปิดการทำงาน"</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"โทรศัพท์ของคุณจะปิดเครื่อง"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"คุณต้องการปิดการทำงานหรือไม่"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"รีบูตเข้าสู่โหมดปลอดภัย"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"คุณต้องการรีบูตเข้าสู่โหมดปลอดภัยหรือไม่ การดำเนินการนี้จะปิดใช้งานแอปพลิเคชันของบุคคลที่สามทั้งหมดที่คุณได้ติดตั้งไว้ โดยจะคืนค่าเมื่อคุณรีบูตอีกครั้ง"</string> <string name="recent_tasks_title" msgid="3691764623638127888">"เมื่อเร็วๆ นี้"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"ไม่มีแอปพลิเคชันล่าสุด"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"ตัวเลือกของแท็บเล็ต"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"ข้อความของคุณ"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"อ่านและเขียน SMS อีเมล และข้อความอื่นๆ ของคุณ"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"ข้อมูลส่วนบุคคลของคุณ"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"การเข้าถึงสมุดโทรศัพท์และปฏิทินที่จัดเก็บอยู่บนแท็บเล็ตโดยตรง"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"เข้าถึงที่อยู่ติดต่อและปฏิทินของที่จัดเก็บบนโทรศัพท์โดยตรง"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"ตำแหน่งของคุณ"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"ตรวจดูตำแหน่งทางกายภาพของคุณ"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"การสื่อสารของเครือข่าย"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"เข้าถึงคุณลักษณะเครือข่ายต่างๆ"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"บัญชีของคุณ"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"เข้าถึงบัญชีที่ใช้งานได้"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"การควบคุมฮาร์ดแวร์"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"การเข้าถึงและควบคุมของระบบในระดับต่ำ"</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"เครื่องมือในการพัฒนา"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"คุณลักษณะที่จำเป็นสำหรับนักพัฒนาแอปพลิเคชันเท่านั้น"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"พื้นที่เก็บข้อมูล"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"เข้าถึงที่เก็บข้อมูล USB"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"เข้าถึงการ์ด SD"</string> @@ -195,30 +261,32 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"อนุญาตให้แอปพลิเคชันเป็นแถบสถานะ"</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ขยาย/ยุบแถบสถานะ"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"อนุญาตให้แอปพลิเคชันขยายหรือยุบแถบสถานะ"</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"ดักสายโทรออก"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"จัดเส้นทางการโทรออกใหม่"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"อนุญาตให้แอปพลิเคชันประมวลผลการโทรออกและเปลี่ยนแปลงหมายเลขที่จะโทรไป แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบ เปลี่ยนเส้นทาง หรือกีดขวางไม่ให้โทรออกได้"</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"ได้รับ SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"รับข้อความ (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ SMS แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบข้อความของคุณหรือลบออกโดยไม่แสดงให้คุณเห็น"</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"รับ MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"รับข้อความ (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ MMS แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบข้อความของคุณหรือลบออกโดยไม่แสดงให้คุณเห็น"</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ได้รับการกระจายข้อความฉุกเฉิน"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความที่เผยแพร่กรณีฉุกเฉิน การอนุญาตนี้ใช้ได้เฉพาะกับแอปพลิเคชันระบบเท่านั้น"</string> - <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"อ่านข้อความกระจายข้อมูลทางมือถือ"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"อนุญาตให้แอปพลิเคชันอ่านข้อความกระจายข้อมูลทางมือถือที่อุปกรณ์ได้รับ การแจ้งเตือนทางมือถือมีให้บริการในบางตำแหน่งโดยจะแจ้งเตือนคุณเกี่ยวกับสถานการณ์ฉุกเฉิน แอปพลิเคชันที่เป็นอันตรายอาจเข้าแทรกแซงการทำงานของอุปกรณ์เมื่อได้รับข้อความแจ้งเตือน"</string> + <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"อ่านข้อความที่ได้รับจากสถานีมือถือ"</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"อนุญาตให้แอปอ่านข้อความจากสถานีมือถือที่อุปกรณ์ได้รับ การแจ้งเตือนทางมือถือมีให้บริการในบางพื้นที่ โดยจะแจ้งเตือนคุณเกี่ยวกับสถานการณ์ฉุกเฉิน แอปที่เป็นอันตรายอาจเข้าแทรกแซงการทำงานของอุปกรณ์เมื่อได้รับข้อความแจ้งเตือนฉุกเฉิน"</string> <string name="permlab_sendSms" msgid="5600830612147671529">"ส่งข้อความ SMS"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"อนุญาตให้แอปพลิเคชันส่งข้อความ SMS แอปพลิเคชันที่เป็นอันตรายอาจทำให้คุณต้องเสียค่าใช้จ่ายด้วยการส่งข้อความโดยไม่มีการยืนยันจากคุณ"</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ส่งข้อความ SMS โดยไม่มีการยืนยัน"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"อนุญาตให้แอปพลิเคชันส่งข้อความ SMS แอปพลิเคชันที่เป็นอันตรายอาจทำให้คุณต้องเสียค่าใช้จ่ายด้วยการส่งข้อความโดยไม่มีการยืนยันจากคุณ"</string> - <string name="permlab_readSms" msgid="4085333708122372256">"อ่าน SMS หรือ MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"อ่านข้อความของคุณ (SMS หรือ MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"อนุญาตให้แอปพลิเคชันอ่านข้อความ SMS ที่เก็บไว้ในแท็บเล็ตหรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจอ่านข้อความที่เป็นความลับของคุณ"</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"อนุญาตให้แอปพลิเคชันอ่านข้อความ SMS ที่เก็บไว้ในโทรศัพท์หรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจอ่านข้อความที่เป็นความลับของคุณ"</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"แก้ไข SMS หรือ MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"แก้ไขข้อความของคุณ (SMS หรือ MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"อนุญาตให้แอปพลิเคชันเขียนลงในข้อความ SMS ที่เก็บไว้ในแท็บเล็ตหรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจลบข้อความของคุณทิ้ง"</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"อนุญาตให้แอปพลิเคชันเขียนลงในข้อความ SMS ที่เก็บไว้ในโทรศัพท์หรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจลบข้อความของคุณทิ้ง"</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"ได้รับ WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"รับข้อความ (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ WAP แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบข้อความของคุณหรือลบออกโดยไม่แสดงให้คุณเห็น"</string> <string name="permlab_getTasks" msgid="6466095396623933906">"เรียกแอปพลิเคชันที่ทำงานอยู่"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"อนุญาตให้แอปพลิเคชันดึงข้อมูลเกี่ยวกับงานที่กำลังเรียกใช้อยู่ในปัจจุบันและงานล่าสุด แอปพลิเคชันที่เป็นอันตรายอาจค้นพบข้อมูลเฉพาะตัวเกี่ยวกับแอปพลิเคชันอื่นๆ"</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ดึงรายละเอียดของแอปที่ทำงานอยู่"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"อนุญาตให้แอปพลิเคชันดึงข้อมูลเกี่ยวกับงานที่กำลังเรียกใช้อยู่ในปัจจุบันและงานล่าสุด แอปพลิเคชันที่เป็นอันตรายอาจค้นพบข้อมูลเฉพาะตัวเกี่ยวกับแอปพลิเคชันอื่นๆ"</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"จัดลำดับแอปพลิเคชันที่ทำงานอยู่ใหม่"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"อนุญาตให้แอปพลิเคชันย้ายงานไปยังส่วนหน้าและพื้นหลัง แอปพลิเคชันที่เป็นอันตรายอาจบังคับตัวเองให้ไปที่ส่วนหน้าโดยไม่มีการควบคุมจากคุณ"</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"หยุดแอปพลิเคชันที่ทำงานอยู่"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"อนุญาตให้แอปพลิเคชันควบคุมโหมดความเข้ากันได้ของหน้าจอของแอปพลิเคชันอื่น แอปพลิเคชันที่เป็นอันตรายอาจทำให้แอปพลิเคชันอื่นทำงานผิดพลาด"</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"เปิดใช้งานการแก้ไขบกพร่องของแอปพลิเคชัน"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"อนุญาตให้แอปพลิเคชันเปิดการแก้ไขข้อบกพร่องสำหรับแอปพลิเคชันอื่น แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ยุติการทำงานของแอปพลิเคชันอื่นๆ ได้"</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"เปลี่ยนการตั้งค่า UI ของคุณ"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"เปลี่ยนการตั้งค่าการแสดงผลของระบบ"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"อนุญาตให้แอปพลิเคชันเปลี่ยนการกำหนดค่าปัจจุบัน เช่น ภาษาหรือขนาดตัวอักษรโดยรวม"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"เปิดใช้งานโหมดใช้ในรถยนต์"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"อนุญาตให้แอปพลิเคชันเปิดใช้งานโหมดรถยนต์"</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"จบกระบวนการพื้นหลัง"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"ปิดแอปอื่นๆ"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"อนุญาตให้แอปพลิเคชันยุติกระบวนการในพื้นหลังของแอปพลิเคชันอื่นๆ แม้ว่าหน่วยความจำจะยังไม่ลดลงต่ำ"</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"บังคับให้แอปพลิเคชันอื่นๆ หยุดทำงาน"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"อนุญาตให้แอปพลิเคชันบังคับแอปพลิเคชันอื่นให้หยุดทำงาน"</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"อนุญาตให้แอปพลิเคชันกระจายข้อมูลการแจ้งเตือนว่าได้รับข้อความ WAP PUSH แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ปลอมการแจ้งรับข้อความ MMS หรือแอบเปลี่ยนเนื้อหาในหน้าเว็บโดยใช้ตัวแปรที่เป็นอันตราย"</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"จำกัดจำนวนกระบวนการที่กำลังทำงาน"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"อนุญาตให้แอปพลิเคชันควบคุมจำนวนสูงสุดของกระบวนการที่จะเรียกใช้ ไม่จำเป็นต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"ปิดแอปพลิเคชันบนพื้นหลังทั้งหมด"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"บังคับปิดแอปพลิเคชันในพื้นหลัง"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"อนุญาตให้แอปพลิเคชันควบคุมว่ากิจกรรมจะสิ้นสุดทันทีที่เข้าสู่พื้นหลังเสมอหรือไม่ ไม่จำเป็นต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"แก้ไขสถิติแบตเตอรี่"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"อนุญาตให้แอปพลิเคชันแก้ไขสถิติของแบตเตอรี่ที่เก็บรวบรวมไว้ ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"อนุญาตให้แอปพลิเคชันเปิดส่วนติดต่อผู้ใช้สำหรับยืนยันการสำรองข้อมูลเต็มรูปแบบ การอนุญาตนี้ไม่ใช้กับแอปพลิเคชันทั่วไป"</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"แสดงหน้าต่างที่ไม่ได้รับอนุญาต"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"อนุญาตให้แอปพลิเคชันสร้างหน้าต่างสำหรับให้ใช้โดยส่วนติดต่อผู้ใช้ของระบบภายใน ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"แสดงการแจ้งเตือนในระดับระบบ"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ปิดคลุมแอปอื่นๆ"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"อนุญาตให้แอปพลิเคชันแสดงหน้าต่างการแจ้งเตือนของระบบ แอปพลิเคชันที่เป็นอันตรายอาจเข้าควบคุมทั้งหน้าจอ"</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"แก้ไขความเร็วภาพเคลื่อนไหวสากล"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"อนุญาตให้แอปพลิเคชันเปลี่ยนความเร็วในการเคลื่อนไหวทั่วไป (ภาพเคลื่อนไหวได้เร็วขึ้นหรือช้าลง) ได้ตลอดเวลา"</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"อนุญาตให้แอปพลิเคชันให้หรือยกเลิกการอนุญาตบางอย่างของตัวเองหรือแอปพลิเคชันอื่น แอปพลิเคชันที่เป็นอันตรายอาจใช้การทำงานนี้ในการเข้าถึงคุณลักษณะที่คุณไม่อนุญาต"</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ตั้งค่าแอปพลิเคชันที่ต้องการ"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"อนุญาตให้แอปพลิเคชันแก้ไขแอปพลิเคชันต่างๆ ที่คุณชอบใช้ แอปพลิเคชันที่เป็นอันตรายอาจจะแอบเปลี่ยนแอปพลิเคชันที่กำลังทำงาน ปลอมแปลงเป็นแอปพลิเคชันที่มีอยู่ของคุณเพื่อรวบรวมข้อมูลส่วนบุคคลจากคุณ"</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"แก้ไขการตั้งค่าระบบสากล"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"แก้ไขการตั้งค่าระบบ"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลการตั้งค่าของระบบ แอปพลิเคชันที่เป็นอันตรายอาจทำให้การกำหนดค่าระบบของคุณเสียหาย"</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"แก้ไขการตั้งค่าระบบความปลอดภัย"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลการตั้งค่าความปลอดภัยของระบบ ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"แก้ไขแผนที่ของบริการ Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"อนุญาตให้แอปพลิเคชันแก้ไขแผนที่บริการของ Google ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"เริ่มต้นอัตโนมัติเมื่อบูต"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ทำงานเมื่อเริ่มต้น"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"อนุญาตให้แอปพลิเคชันเริ่มต้นตัวเองทันทีที่ระบบบูตเสร็จสิ้น ซึ่งจะทำให้การเริ่มต้นแท็บเล็ตใช้เวลานานกว่าปกติและแอปพลิเคชันจะทำให้การทำงานของแท็บเล็ตโดยรวมช้าลงด้วยการทำงานอยู่ตลอดเวลา"</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"อนุญาตให้แอปพลิเคชันเริ่มต้นตัวเองทันทีที่ระบบบูตเสร็จสิ้น ซึ่งจะทำให้การเริ่มต้นโทรศัพท์ใช้เวลานานกว่าปกติและแอปพลิเคชันจะทำให้การทำงานของโทรศัพท์โดยรวมช้าลงด้วยการทำงานอยู่ตลอดเวลา"</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ส่งการกระจายข้อมูลที่ติดหนึบ"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"อนุญาตให้แอปพลิเคชันส่งการกระจายข้อมูลที่ติดหนึบ ซึ่งจะยังคงอยู่หลังจากการกระจายข้อมูลจบไปแล้ว แอปพลิเคชันที่เป็นอันตรายอาจทำให้แท็บเล็ตทำงานช้าลงหรือไม่เสถียรโดยการใช้หน่วยความจำมากเกินไป"</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"อนุญาตให้แอปพลิเคชันส่งการกระจายข้อมูลที่ติดหนึบ ซึ่งจะยังคงอยู่หลังจากการกระจายข้อมูลจบไปแล้ว แอปพลิเคชันที่เป็นอันตรายอาจทำให้โทรศัพท์ทำงานช้าลงหรือไม่เสถียรโดยการใช้หน่วยความจำมากเกินไป"</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"อ่านข้อมูลที่อยู่ติดต่อแล้ว"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"เขียนข้อมูลที่อยู่ติดต่อ"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"อ่านผู้ติดต่อของคุณ"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"อนุญาตให้แอปพลิเคชันอ่านข้อมูลทั้งหมดเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในแท็บเล็ตของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้การอนุญาตนี้ในการส่งข้อมูลผู้ติดต่อของคุณไปยังบุคคลอื่น"</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"อนุญาตให้แอปพลิเคชันอ่านข้อมูลทั้งหมดเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในโทรศัพท์ของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้การอนุญาตนี้ในการส่งข้อมูลผู้ติดต่อของคุณไปยังบุคคลอื่น"</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"แก้ไขผู้ติดต่อของคุณ"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในแท็บเล็ตของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้คุณลักษณะนี้ในการลบหรือแก้ไขข้อมูลผู้ติดต่อของคุณ"</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในโทรศัพท์ของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้คุณลักษณะนี้ในการลบหรือแก้ไขข้อมูลผู้ติดต่อของคุณ"</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"อ่านประวัติการโทร"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"อนุญาตให้แอปอ่านประวัติการโทรจากแท็บเล็ตของคุณ รวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและการโทรออก แอปที่เป็นอันตรายอาจใช้สิ่งนี้เพื่อส่งข้อมูลของคุณให้กับบุคคลอื่น"</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"อนุญาตให้แอปอ่านประวัติการโทรจากโทรศัพท์ของคุณ รวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและการโทรออก แอปที่เป็นอันตรายอาจใช้สิ่งนี้เพื่อส่งข้อมูลของคุณให้กับบุคคลอื่น"</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"เขียนประวัติการโทร"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"อนุญาตให้แอปแก้ไขประวัติการโทรจากแท็บเล็ตของคุณ รวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและการโทรออก แอปที่เป็นอันตรายอาจใช้สิ่งนี้เพื่อลบหรือแก้ไขประวัติการโทรของคุณ"</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"อนุญาตให้แอปแก้ไขประวัติการโทรจากโทรศัพท์ของคุณ รวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและการโทรออก แอปที่เป็นอันตรายอาจใช้สิ่งนี้เพื่อลบหรือแก้ไขประวัติการโทรของคุณ"</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"อ่านข้อมูลโปรไฟล์ของคุณ"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"อ่านบัตรผู้ติดต่อของคุณเอง"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"อนุญาตให้แอปพลิเคชันอ่านข้อมูลโปรไฟล์ส่วนบุคคลที่เก็บไว้บนอุปกรณ์ของคุณ เช่น ชื่อและข้อมูลติดต่อ ซึ่งหมายความว่าแอปพลิเคชันจะสามารถระบุตัวตนของคุณและส่งข้อมูลโปรไฟล์ของคุณแก่ผู้อื่นได้"</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"เขียนลงในข้อมูลโปรไฟล์ของคุณ"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"แก้ไขบัตรผู้ติดต่อของคุณเอง"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงหรือเพิ่มข้อมูลโปรไฟล์ส่วนบุคคลที่เก็บไว้ในอุปกรณ์ของคุณ เช่น ชื่อและข้อมูลติดต่อ ซึ่งหมายความว่าแอปพลิเคชันอื่นๆ จะสามารถระบุตัวตนของคุณและส่งข้อมูลโปรไฟล์ของคุณแก่ผู้อื่นได้"</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"อ่านสตรีมเครือข่ายสังคม"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"อนุญาตให้แอปพลิเคชันเข้าถึงและซิงค์การอัปเดตในเครือข่ายสังคมจากคุณและเพื่อน แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้เพื่ออ่านการติดต่อส่วนตัวระหว่างคุณกับเพื่อนในเครือข่ายสังคมได้"</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"บังคับให้โทรศัพท์รีบูต"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"อนุญาตให้แอปพลิเคชันบังคับให้แท็บเล็ตรีบูต"</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"อนุญาตให้แอปพลิเคชันบังคับโทรศัพท์ให้รีบูต"</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"ต่อเชื่อมและยกเลิกการต่อเชื่อมระบบไฟล์"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"เข้าถึงระบบไฟล์ของ USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"เข้าถึงระบบไฟล์ของการ์ด SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"อนุญาตให้แอปพลิเคชันต่อเชื่อมและยกเลิกการต่อเชื่อมระบบไฟล์สำหรับที่เก็บข้อมูลแบบถอดได้"</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"ฟอร์แมตที่จัดเก็บข้อมูลภายนอก"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"ลบที่จัดเก็บข้อมูล USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"ลบการ์ด SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"อนุญาตให้แอปพลิเคชันฟอร์แมตที่เก็บข้อมูลแบบถอดได้"</string> <string name="permlab_asec_access" msgid="3411338632002193846">"รับข้อมูลบนที่เก็บข้อมูลภายใน"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"อนุญาตให้แอปพลิเคชันดึงข้อมูลจากที่จัดเก็บข้อมูลภายใน"</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"อนุญาตให้แอปพลิเคชันต่อเชื่อม/ยกเลิกการต่อเชื่อมที่จัดเก็บข้อมูลภายใน"</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"เปลี่ยนชื่อที่เก็บข้อมูลภายใน"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"อนุญาตให้แอปพลิเคชันเปลี่ยนชื่อที่จัดเก็บข้อมูลภายใน"</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"ควบคุมการสั่นเตือน"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"ควบคุมการสั่นเตือน"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"อนุญาตให้แอปพลิเคชันควบคุมการสั่นเตือน"</string> <string name="permlab_flashlight" msgid="2155920810121984215">"ควบคุมไฟฉาย"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"อนุญาตให้แอปพลิเคชันควบคุมไฟฉาย"</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"อนุญาตให้แอปพลิเคชันบอกระบบว่าวิดเจ็ตใดสามารถใช้กับแอปพลิเคชันใด แอปพลิเคชันที่ได้รับอนุญาตอาจให้สิทธิ์การเข้าถึงข้อมูลส่วนบุคคลแก่แอปพลิเคชันอื่นๆ ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"แก้ไขสถานะโทรศัพท์"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"อนุญาตให้แอปพลิชันควบคุมคุณลักษณะโทรศัพท์ของอุปกรณ์ แอปพลิเคชันที่ได้รับอนุญาตจะสามารถสลับเครือข่าย เปิดและปิดวิทยุในโทรศัพท์ และคุณลักษณะอื่นที่คล้ายกันนี้ได้โดยไม่ต้องแจ้งให้คุณทราบ"</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"อ่านสถานะและข้อมูลระบุตัวตนของโทรศัพท์"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"อ่านสถานะและข้อมูลระบุตัวตนของโทรศัพท์"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"อนุญาตให้แอปพลิเคชันเข้าถึงคุณลักษณะโทรศัพท์ของอุปกรณ์ แอปพลิเคชันที่ได้รับอนุญาตจะสามารถกำหนดหมายเลขโทรศัพท์และหมายเลขซีเรียลของโทรศัพท์นี้ มีการโทรอยู่หรือไม่ หมายเลขที่เชื่อมต่อกับการโทร และอื่นๆ ในลักษณะเดียวกัน"</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ป้องกันไม่ให้แท็บเล็ตเข้าสู่โหมดสลีป"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ป้องกันไม่ให้โทรศัพท์เข้าโหมดสลีป"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"เรียกใช้การทดสอบจากผู้ผลิตในระดับต่ำ โดยอนุญาตให้เข้าถึงฮาร์ดแวร์โทรศัพท์อย่างสมบูรณ์ ใช้ได้เฉพาะช่วงที่โทรศัพท์ทำงานในโหมดการทดสอบจากผู้ผลิตเท่านั้น"</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"ตั้งค่าวอลเปเปอร์"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"อนุญาตให้แอปพลิเคชันตั้งค่าวอลเปเปอร์ระบบ"</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"ตั้งค่าคำแนะนำเรื่องขนาดวอลเปเปอร์"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ปรับขนาดวอลเปเปอร์ของคุณ"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"อนุญาตให้แอปพลิเคชันตั้งค่าคำแนะนำขนาดวอลเปเปอร์ของระบบ"</string> <string name="permlab_masterClear" msgid="2315750423139697397">"รีเซ็ตระบบเป็นค่าเริ่มต้นจากโรงงาน"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"อนุญาตให้แอปพลิเคชันรีเซ็ตระบบทั้งหมดเป็นค่าเริ่มต้นจากโรงงาน ลบข้อมูลทั้งหมด การกำหนดค่า และแอปพลิเคชันที่ติดตั้งไว้"</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงเขตเวลาของโทรศัพท์"</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"ทำหน้าที่เป็น AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"อนุญาตให้แอปพลิเคชันโทรไปยัง AccountAuthenticators"</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"พบบัญชีที่ไม่รู้จัก"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"ค้นหาบัญชีในอุปกรณ์"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"อนุญาตให้แอปพลิเคชันเรียกรายการบัญชีที่แท็บเล็ตรู้จัก"</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"อนุญาตให้แอปพลิเคชันเรียกรายการบัญชีที่โทรศัพท์รู้จัก"</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"ทำหน้าที่เป็นตัวตรวจสอบสิทธิ์บัญชี"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"สร้างบัญชีและตั้งรหัสผ่าน"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"อนุญาตให้แอปพลิเคชันใช้ตัวตรวจสอบสิทธิ์บัญชีของ AccountManager รวมถึงการสร้างบัญชีและรับและตั้งค่ารหัสผ่าน"</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"จัดการรายการบัญชี"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"เพิ่มหรือนำบัญชีออก"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"อนุญาตให้แอปพลิเคชันดำเนินการต่างๆ เช่น การเพิ่มและนำบัญชีออก รวมถึงการลบรหัสผ่านของบัญชี"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"ใช้ข้อมูลรับรองในการตรวจสอบสิทธิ์ของบัญชี"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"ใช้งานบัญชีในอุปกรณ์"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"อนุญาตให้แอปพลิเคชันขอโทเค็นการตรวจสอบสิทธิ์"</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ดูสถานะเครือข่าย"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ดูการเชื่อมต่อเครือข่าย"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"อนุญาตให้แอปพลิเคชันดูสถานะของเครือข่ายทั้งหมด"</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"การเข้าถึงอินเทอร์เน็ตเต็มรูปแบบ"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"อนุญาตให้แอปพลิเคชันสร้างซ็อคเก็ตเครือข่าย"</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงสถานะการเชื่อมต่อของเครือข่ายการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"เปลี่ยนการตั้งค่าการใช้ข้อมูลพื้นหลัง"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"อนุญาตให้แอปพลิเคชันเปลี่ยนการตั้งค่าการใช้งานข้อมูลแบ็กกราวด์"</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"ดูสถานะ Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"ดูการเชื่อมต่อ WiFi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"อนุญาตให้แอปพลิเคชันดูข้อมูลเกี่ยวกับสถานะของ WiFi"</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"เปลี่ยนสถานะ Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"เชื่อมต่อและหยุดเชื่อมต่อ WiFi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"อนุญาตให้แอปพลิเคชันเชื่อมต่อและหยุดเชื่อมต่อจากจุดเข้าใช้งาน WiFi และเปลี่ยนแปลงเครือข่าย WiFi ที่กำหนดค่าไว้"</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"อนุญาตให้รับมัลติแคสต์ผ่าน Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"อนุญาตให้แอปพลิเคชันรับแพ็คเก็ตที่ไม่ได้ส่งถึงอุปกรณ์ของคุณโดยตรง วิธีนี้เป็นประโยชน์เมื่อพบบริการที่มีอยู่ใกล้ๆ แต่จะใช้พลังงานมากกว่าโหมดที่ไม่ใช่มัลติแคสต์"</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"การจัดการบลูทูธ"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"เข้าถึงการตั้งค่าบลูทูธ"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"อนุญาตให้แอปพลิเคชันกำหนดค่าแท็บเล็ตบลูทูธในตัวเครื่อง รวมทั้งค้นหาและจับคู่กับอุปกรณ์ที่อยู่ระยะไกล"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"อนุญาตให้แอปพลิเคชันกำหนดค่าโทรศัพท์บลูทูธในตัวเครื่อง ตลอดจนค้นหาและจับคู่กับอุปกรณ์ที่อยู่ระยะไกล"</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"ดูสถานะของ WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"ดูการเชื่อมต่อ WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"อนุญาตให้แอปพลิเคชันดูข้อมูลเกี่ยวกับสถานะของ WiMAX"</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"เปลี่ยนสถานะของ WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"อนุญาตให้แอปพลิเคชันเชื่อมต่อและยกเลิกการเชื่อมต่อกับเครือข่าย WiMAX"</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"สร้างการเชื่อมต่อบลูทูธ"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"จับคู่กับอุปกรณ์บลูทูธ"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"อนุญาตให้แอปพลิเคชันดูการกำหนดค่าของแท็บเล็ตบลูทูธในตัวเครื่อง ตลอดจนเชื่อมต่อและยอมรับการเชื่อมต่อกับอุปกรณ์ที่จับคู่ไว้"</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"อนุญาตให้แอปพลิเคชันดูการกำหนดค่าของโทรศัพท์บลูทูธในพื้นที่ ตลอดจนเชื่อมต่อและยอมรับการเชื่อมต่อด้วยอุปกรณ์ที่จับคู่ไว้"</string> <string name="permlab_nfc" msgid="4423351274757876953">"ควบคุม Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"อนุญาตให้แอปพลิเคชันสื่อสารกับแท็ก Near Field Communication (NFC) การ์ด และโปรแกรมอ่าน"</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"ปิดการใช้งานการล็อกปุ่มกด"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ปิดใช้งานการล็อกหน้าจอของคุณ"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"อนุญาตให้แอปพลิเคชันปิดใช้งานการล็อกปุ่มและการรักษาความปลอดภัยด้วยรหัสผ่านใดๆ ที่เกี่ยวข้อง ตัวอย่างการใช้งานของกรณีนี้คือ โทรศัพท์ปิดใช้งานการล็อกปุ่มกดเมื่อรับสายเรียกเข้า จากนั้นจึงเปิดใช้งานการล็อกปุ่มกดใหม่หลังจากวางสาย"</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"อ่านการตั้งค่าการซิงค์แล้ว"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"อนุญาตให้แอปพลิเคชันอ่านการตั้งค่าการซิงค์ เช่น มีการเปิดใช้งานการซิงค์สำหรับแอปพลิเคชัน People หรือไม่"</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"เขียนการตั้งค่าการซิงค์"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"สลับระหว่างเปิดและปิดการซิงค์"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"อนุญาตให้แอปพลิเคชันแก้ไขการตั้งค่าการซิงค์ เช่น จะเปิดใช้งานการซิงค์สำหรับแอปพลิเคชัน People หรือไม่"</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"อ่านสถิติการซิงค์"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"อนุญาตให้แอปพลิเคชันอ่านสถิติการซิงค์ เช่น ประวัติการซิงค์ที่เกิดขึ้น"</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"อนุญาตให้แอปพลิเคชันดูรายละเอียดเกี่ยวกับฟีดที่ซิงค์ไว้ในปัจจุบัน"</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"เขียนฟีดข้อมูลที่สมัครไว้"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"อนุญาตให้แอปพลิเคชันแก้ไขฟีดที่ซิงค์ในปัจจุบันของคุณ แอปพลิเคชันที่เป็นอันตรายอาจเปลี่ยนแปลงฟีดที่ซิงค์ของคุณ"</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"อ่านพจนานุกรมที่ผู้ใช้กำหนด"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"อ่านคำที่คุณเพิ่มลงในพจนานุกรม"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"อนุญาตให้แอปพลิเคชันอ่านคำ ชื่อ และวลีส่วนบุคคลที่ผู้ใช้อาจเก็บไว้ในพจนานุกรมของผู้ใช้"</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"เขียนลงในพจนานุกรมที่ผู้ใช้กำหนด"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"อนุญาตให้แอปพลิเคชันเขียนคำใหม่ลงในพจนานุกรมผู้ใช้"</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"อ่านเนื้อหาที่บันทึกใน USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"อ่านเนื้อหาในการ์ด SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"อนุญาตให้แอปอ่านเนื้อหาใน USB"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"อนุญาตให้แอปอ่านเนื้อหาในการ์ด SD"</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"แก้ไข/ลบเนื้อหาของที่เก็บข้อมูล USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"แก้ไข/ลบข้อมูลการ์ด SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"อ่านเนื้อหาในที่จัดเก็บ USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"อ่านเนื้อหาในการ์ด SD ของคุณ"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"อนุญาตให้แอปอ่านเนื้อหาในที่จัดเก็บข้อมูล USB ซึ่งอาจรวมไปถึงรูปภาพและสื่อ"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"อนุญาตให้แอปอ่านเนื้อหาในการ์ด SD ซึ่งอาจรวมไปถึงรูปภาพและสื่อ"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"แก้ไขหรือลบเนื้อหาใน USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"แก้ไขหรือลบเนื้อหาในการ์ด SD ของคุณ"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"อนุญาตให้แอปฯ เขียนลงใน USB"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"อนุญาตให้แอปพลิเคชันเขียนลงบนการ์ด SD"</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"แก้/ลบเนื้อหาข้อมูลสื่อภายใน"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"ไม่มีซิมการ์ดในโทรศัพท์"</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"ใส่ซิมการ์ด"</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"ไม่มีซิมการ์ดหรือไม่สามารถอ่านได้ โปรดใส่ซิมการ์ด"</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"ซิมการ์ดของคุณถูกปิดใช้งานอย่างถาวร"\n"ติดต่อผู้ให้บริการไร้สายของคุณเพื่อรับซิมการ์ดอีกอันหนึ่ง"</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"ปุ่มแทร็กก่อนหน้า"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ปุ่มแทร็กถัดไป"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"อักขระ"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"คำ"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"ลิงก์"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"บรรทัด"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"การทดสอบจากโรงงานล้มเหลว"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"เขตการปกครองท้องถิ่น"</string> <string name="autofill_area" msgid="3547409050889952423">"พื้นที่"</string> <string name="autofill_emirate" msgid="2893880978835698818">"เอมิเรต"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"อ่านประวัติและบุ๊กมาร์กของเบราว์เซอร์"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"อ่านบุ๊กมาร์กและประวัติเว็บของคุณ"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"อนุญาตให้แอปพลิเคชันอ่าน URL ทั้งหมดที่เบราว์เซอร์เคยเข้าชมและบุ๊กมาร์กของเบราว์เซอร์ทั้งหมด"</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"เขียนประวัติและบุ๊กมาร์กของเบราว์เซอร์"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"เขียนบุ๊กมาร์กและประวัติเว็บ"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"อนุญาตให้แอปพลิเคชันแก้ไขประวัติของเบราเซอร์หรือบุ๊กมาร์กที่จัดเก็บในแท็บเล็ตของคุณ แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้เพื่อลบหรือแก้ไขข้อมูลเบราว์เซอร์ของคุณ"</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"อนุญาตให้แอปพลิเคชันแก้ไขประวัติของเบราเซอร์หรือบุ๊กมาร์กที่จัดเก็บในโทรศัพท์ของคุณ แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้เพื่อลบหรือแก้ไขข้อมูลเบราว์เซอร์ของคุณ"</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"ตั้งเวลาปลุกในนาฬิกาปลุก"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"ตั้งปลุก"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"อนุญาตให้แอปพลิเคชันตั้งเวลาปลุกในแอปพลิเคชันนาฬิกาปลุกที่ติดตั้ง แอปพลิเคชันนาฬิกาปลุกบางรายการอาจไม่ใช้คุณลักษณะนี้"</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"เพิ่มข้อวามเสียง"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"อนุญาตให้แอปพลิเคชันเพิ่มข้อความลงในกล่องข้อความเสียงของคุณ"</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"ตั้งค่า"</string> <string name="date_time_done" msgid="2507683751759308828">"เสร็จสิ้น"</string> <string name="default_permission_group" msgid="2690160991405646128">"เริ่มต้น"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ใหม่: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"ใหม่: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"ไม่ต้องการการอนุญาต"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"ซ่อน"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"แสดงทั้งหมด"</b></string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 5378ed98ce64..6c67aada5320 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Mag-shut down ang iyong tablet."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Magsa-shut down ang iyong telepono."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Nais mo bang mag-shut down?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Mag-reboot sa safe mode"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Nais mo bang mag-reboot sa safe mode? Hindi nito papaganahin ang lahat ng third party na application na na-install mo. Ibabalik ang mga ito kapag muli kang nag-reboot."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Kamakailan"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Walang kamakailang apps."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Mga pagpipilian sa tablet"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Iyong mga mensahe"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Basahin at isulat ang iyong SMS, e-mail, at iba pang mga mensahe."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Iyong personal na impormasyon"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direktang access sa iyong mga contact at kalendaryong nakaimbak sa tablet."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direktang access sa iyong mga contact at kalendaryong nakaimbak sa telepono."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Iyong lokasyon"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Subaybayan ang iyong pisikal na lokasyon."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Pakikipag-ugnay sa network"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Mag-access ng iba\'t ibang mga tampok ng network."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Iyong mga account"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"I-access ang mga available na account."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Mga kontrol ng hardware"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Mas mababang antas na access at kontrol ng system."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Mga tool na pang-develop"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Kinakailangan lamang ang mga tampok para sa mga developer ng app."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Imbakan"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"I-access ang imbakan na USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"I-access ang SD card."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Pinapayagan ang app na maging status bar."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"palawakin/tiklupin ang status bar"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Pinapayagan ang app na palawakin o tiklupin ang status bar."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"sumagap ng mga papalabas na tawag"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"baguhin ang ruta ng mga papalabas na tawag"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Pinapayagan ang app na iproseso ang mga papalabas na tawag at baguhin ang numerong ida-dial. Maaaring subaybayan, i-redirect, o pigilan ng nakakahamak na apps ang mga papalabas na tawag."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"tumanggap ng SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"tumanggap ng mga text message (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng SMS. Maaaring subaybayan ng nakakahamak na apps ang iyong mga mensahe o tanggalin ang mga ito nang hindi ipinapakita ang mga ito sa iyo."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"tumanggap ng MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"tumanggap ng mga text message (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng MMS. Maaaring subaybayan ng nakakahamak na apps ang iyong mga mensahe o tanggalin ang mga ito nang hindi ipinapakita ang mga ito sa iyo."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"makatanggap ng mga emergency broadcast"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Pinapayagan ang app na tumanggap at magproseso ng mga mensahe ng broadcast na pang-emergency. Available lamang ang pahintulot na ito sa apps ng system."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Pinapayagan ang app na magpadala ng mga mensaheng SMS. Maaari kang magastusan ng nakakahamak na apps sa pamamagitan ng pagpapadala ng mga mensahe nang wala ang iyong pagkumpirma."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"magpadala ng mga SMS na mensahe nang walang pagkumpirma"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Pinapayagan ang app na magpadala ng mga mensaheng SMS. Maaari kang magastusan ng nakakahamak na apps sa pamamagitan ng pagpapadala ng mga mensahe nang wala ang iyong pagkumpirma."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"magbasa ng SMS o MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"basahin ang iyong mga text message (SMS o MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Pinapayagan ang apps na magbasa ng mga mensaheng SMS na nakaimbak sa iyong tablet o SIM card. Maaaring basahin ng nakakahamak na apps ang iyong mga kumpedensyal na mensahe."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Pinapayagan ang apps na magbasa ng mga mensaheng SMS na nakaimbak sa iyong telepono o SIM card. Maaaring basahin ng nakakahamak na apps ang iyong mga kumpedensyal na mensahe."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"i-edit ang SMS o MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"i-edit ang iyong mga text message (SMS o MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Pinapayagan ang app na magsulat sa mga mensaheng SMS na nakaimbak sa iyong tablet o SIM card. Maaaring tanggalin ng nakakahamak na apps ang iyong mga mensahe."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Pinapayagan ang app na magsulat sa mga mensaheng SMS na nakaimbak sa iyong telepono o SIM card. Maaaring tanggalin ng nakakahamak na apps ang iyong mga mensahe."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"tumanggap ng WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"tumanggap ng mga text message (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng WAP. Maaaring subaybayan ng nakakahamak na apps ang iyong mga mensahe o tanggalin ang mga ito nang hindi ipinapakita ang mga ito sa iyo."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"bawiin ang tumatakbong apps"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Pinapayagan ang app na bawiin ang impormasyon tungkol sa kasalukuyan at kamakailang tumatakbong mga gawain. Maaaring makatuklas ang nakakahamak na apps ng pribadong impormasyon tungkol sa iba pang apps."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"bawiin ang mga detalye ng gumaganang apps"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Binibigyang-daan ang app na bawiin ang detalyadong impormasyon tungkol sa mga kasalukuyan at kamakailang gumaganang gawain. Maaaring makatuklas ang nakakahamak na apps ng pribadong impormasyon tungkol sa iba pang apps."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"muling isaayos ang tumatakbong apps"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Pinapayagan ang app na ilipat ang mga gawain sa foreground at background. Maaaring puwersahin ng nakakahamak na apps ang mga sarili nito sa harapan nang wala ang iyong pagkontrol."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"ihinto ang pagpapatakbo ng apps"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Pinapayagan ang app na kontrolin ang mode ng pagkakatugma ng screen ng iba pang mga application. Maaaring sirain ng mga nakakahamak na application ang pag-uugali ng iba pang mga application."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"paganahin ang pag-debug ng app"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Pinapayagan ang app na i-on ang pag-debug para sa isa pang app. Maaari itong gamitin ng nakakahamak na apps upang i-off ang iba pang apps."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"baguhin ang iyong mga setting ng UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"baguhin ang mga setting ng display ng system"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Pinapayagan ang app na baguhin ang kasalukuyang configuration, gaya ng lokal o pangkalahatang laki ng font."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"paganahin ang car mode"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Pinapayagan ang app na paganahin ang car mode."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"isara ang mga proseso ng background"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"isara ang iba pang mga app"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Pinapayagan ang app na i-off ang mga proseso sa background ng iba pang apps, kahit na hindi mababa ang memory."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"puwersahang ihinto ang iba pang apps"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Pinapayagan ang app na puwersahang ihinto ang iba pang apps."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Pinapayagan ang app na mag-broadcast ng isang notification na natanggap ang isang mensaheng WAP PUSH. Maaari itong gamitin ng nakakahamak na apps upang dayain ang pagtanggap ng mensaheng MMS o upang tahimik na palitan ang nilalaman ng anumang webpage ng mga nakakahamak na variant."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitahan ang numero ng mga tumatakbong proseso"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Pinapayagan ang app na kontrolin ang maximum na bilang ng mga proseso na tatakbo. Hindi kailanman kinakailangan para sa normal na apps."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"isara ang lahat ng apps sa background"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"pwersahin ang mga app sa background na magsara"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Pinapayagan ang apps na kontrolin kung palaging natatapos ang mga aktibidad sa sandaling pumunta ang mga ito sa background. Hindi kailanman kinakailangan para sa normal na apps."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"baguhin ang mga istatistika ng baterya"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Pinapayagan ang app na baguhin ang nakolektang mga istatistika ng baterya. Hindi para sa paggamit ng normal na apps."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Pinapayagan ang app na ilunsad ang buong backup na UI ng pagkumpirma. Hindi gagamitin ng anumang app."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"ipakita ang mga hindi pinahintulutang window"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Pinapayagan ang app na lumikha ng mga window na nakalaan upang gamitin ng user interface ng panloob na system. Hindi para sa paggamit ng normal na apps."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"ipakita ang mga alerto sa antas ng system"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"gumuhit sa ibabaw ng ibang mga app"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Pinapayagan ang app na ipakita ang mga window ng alerto ng system. Maaaring pangasiwaan ng nakakahamak na apps ang buong screen."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"baguhin ang bilis ng global animation"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Pinapayagan ang app na baguhin ang bilis ng global animation (mas mabilis o mas mabagal na mga animation) anumang oras."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Binibigyang-daan ang isang application na ibigay o bawiin ang mga tukoy na pahintulot para dito o sa iba pang mga application. Maaari itong gamitin ng mga nakakapahamak na application upang i-access ang mga tampok na hindi mo ibinigay sa mga ito."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"itakda ang gustong apps"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Pinapayagan ang app na baguhin ang iyong gustong apps. Maaaring tahimik na baguhin ng nakakahamak na apps ang apps na tumatakbo, na dinadaya ang iyong umiiral nang apps upang mangolekta ng pribadong data mula sa iyo."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"baguhin ang mga setting ng global system"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"baguhin ang mga setting ng system"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Pinapayagan ang app na baguhin ang data ng mga setting ng system. Maaaring sirain ng nakakahamak na apps ang configuration ng iyong system."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"baguhin ang mga setting ng secure na system"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Pinapayagan ang app na baguhin ang data ng mga secure na setting ng system. Hindi para sa paggamit ng normal na apps."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"baguhin ang mapa ng mga serbisyo ng Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Pinapayagan ang app na baguhin ang mapa ng mga serbisyo ng Google. Hindi para sa paggamit ng normal na apps."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"awtomatikong magsimula sa boot"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"patakbuhin sa pagbukas"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Pinapayagan ang app na mapasimula ang sarili nito sa sandaling matapos ang system sa pag-boot. Maaari nitong gawing mas matagal upang simulan ang tablet at pinapayagan ang app na pabagalin ang buong tablet sa pamamagitan ng palaging pagtakbo."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Pinapayagan ang app na mapasimula ang sarili nito sa sandaling matapos ang system sa pag-boot. Maaari nitong gawing mas matagal upang simulan ang telepono at pinapayagan ang app na pabagalin ang buong telepono sa pamamagitan ng palaging pagtakbo."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"magpadala ng sticky na pag-broadcast"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Pinapayagan ang app na magpadala ng mga sticky broadcast, na nananatili pagkatapos ng broadcast. Maaaring gawing mabagal o hindi matatag ng nakakahamak na apps ang tablet sa pamamagitan ng pagdudulot nito na gumamit ng masyadong maraming memory."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Pinapayagan ang app na magpadala ng mga sticky broadcast, na nananatili pagkatapos ng broadcast. Maaaring gawing mabagal o hindi matatag ng nakakahamak na apps ang telepono sa pamamagitan ng pagdudulot nito na gumamit ng masyadong maraming memory."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"basahin ang data ng contact"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"sumulat ng data ng pakikipag-ugnay"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"basahin ang iyong mga contact"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Pinapayagan ang app na basahin ang lahat ng data tungkol sa iyong mga contact na naka-imbak sa iyong tablet, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaaring gamitin ng mga nakakahamak na app ang pagpapahintulot na ito upang ipadala ang iyong data sa pakikipag-ugnay sa ibang tao."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Pinapayagan ang app na basahin ang lahat ng data tungkol sa iyong mga contact na naka-imbak sa iyong telepono, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaaring gamitin ng mga nakakahamak na app ang pagpapahintulot na ito upang ipadala ang iyong data sa pakikipag-ugnay sa ibang tao."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"baguhin ang iyong mga contact"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Pinapayagan ang app na baguhin ang data tungkol sa iyong mga contact na naka-imbak sa iyong tablet, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaari itong gamitin ng mga nakakahamak na app upang burahin o baguhin ang iyong data sa pakikipag-ugnay."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Pinapayagan ang app na baguhin ang data tungkol sa iyong mga contact na naka-imbak sa iyong telepono, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaari itong gamitin ng mga nakakahamak na app upang burahin o baguhin ang iyong data sa pakikipag-ugnay."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"basahin ang log ng tawag"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Binibigyang-daan ang app na basahin ang log ng tawag ng iyong tablet, kabilang ang data tungkol sa mga paparating at papalabas na tawag. Maaari itong gamitin ng nakakahamak na apps upang ipadala ang iyong data sa ibang mga tao."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Binibigyang-daan ang app na basahin ang log ng tawag ng iyong telepono, kabilang ang data tungkol sa mga paparating at papalabas na tawag. Maaari itong gamitin ng nakakahamak na apps upang ipadala ang iyong data sa ibang mga tao."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"isulat ang log ng tawag"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Binibigyan-daan ang app na baguhin ang log ng tawag ng iyong tablet, kabilang ang data tungkol sa mga paparating at papalabas na tawag. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang iyong log ng tawag."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Binibigyan-daan ang app na baguhin ang log ng tawag ng iyong telepono, kabilang ang data tungkol sa mga paparating at papalabas na tawag. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang iyong log ng tawag."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"basahin ang iyong data ng profile"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"basahin sarili mo contact card"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Pinapayagan ang app na basahin ang personal na impormasyon ng profile na nakaimbak sa iyong device, gaya ng iyong pangalan at impormasyon ng contact. Nangangahulugan ito na makikilala ka ng app at maipapadala nito ang impormasyon ng iyong profile sa iba."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"i-write sa iyong data ng profile"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"baguhin sarili mo contact card"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Pinapayagan ang app na baguhin ang o magdagdag sa personal na impormasyon ng profile na nakaimbak sa iyong device, gaya ng iyong pangalan at impormasyon ng contact. Nangangahulugan ito na makikilala ka ng iba pang apps at maipapadala ng mga ito ang impormasyon ng iyong profile sa iba."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"basahin ang iyong social stream"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Binibigyang-daan ang app na i-access at i-sync ang mga social na update mula sa iyo at iyong mga kaibigan. Maaari itong gamitin ng nakakahamak na apps upang basahin ang mga pribadong pag-uusap sa pagitan mo at ng iyong mga kaibigan sa mga social network."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"puwersahin ang pag-reboot ng telepono"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Pinapayagan ang app na puwersahin ang tablet upang mag-reboot."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Pinapayagan ang app na puwersahing i-reboot ang telepono."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"i-mount at huwag i-mount ang mga filesystem"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"access filesystem USB storage"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"i-access ang filesystem ng SD Card"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Pinapayagan ang app na i-mount at i-unmount ang mga filesystem para sa naaalis na storage."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"i-format ang panlabas na imbakan"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"burahin ang imbakan ng USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"burahin ang SD card"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Pinapayagan ang app na i-format ang naaalis na storage."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"kumuha ng impormasyon sa panloob na imbakan"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Pinapayagan ang app na kumuha ng impormasyon sa panloob na storage."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Pinapayagan ang app na i-mount/i-unmount ang panloob na storage."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"palitan ang pangalan ng panloob na imbakan"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Pinapayagan ang app na palitan ang pangalan ng panloob na storage."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kontrolin ang vibrator"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kontrolin ang pag-vibrate"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Pinapayagan ang app na kontrolin ang vibrator."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"kontrolin ang flashlight"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Pinapayagan ang app na kontrolin ang flashlight."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Pinapayagan ang app na sabihin sa system kung aling mga widget ang magagamit ng aling app. Maaaring magbigay ng access ang isang app na may ganitong pahintulot sa personal na data sa iba pang apps. Hindi para sa paggamit ng normal na apps."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"baguhin ang katayuan ng telepono"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Pinapayagan ang app na kontrolin ang mga tampok ng telepono ng device. Maaaring lumipat ng mga network ang isang app na mayroong ganitong pahintulot, i-on o i-off ang radyo ng telepono at mga kaparehong bagay nang hindi ka nano-notify."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"basahin ang katayuan ng telepono at pagkakakilanlan"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"basahin ang katayuan at pagkakakilanlan ng telepono"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Pinapayagan ang app na i-access ang mga tampok ng telepono ng device. Maaaring tukuyin ng isang app na may ganitong pahintulot ang numero ng telepono at serial number ng teleponong ito, kung aktibo man ang isang tawag, ang numero kung saan nakakonekta ang tawag na iyon at kaparehong mga bagay."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"pigilan ang tablet mula sa pag-sleep"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"pigilan ang telepono mula sa paghinto"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Patakbuhin bilang mababang antas na pagsubok ng gumawa, na nagpapahintulot ng kumpletong access sa hardware ng telepono. Available lang kapag tumatakbo ang telepono sa test mode ng gumawa."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"itakda ang wallpaper"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Pinapayagan ang app na itakda ang wallpaper ng system."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"itakda ang mga pahiwatig ng laki ng wallpaper"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"isaayos ang laki ng iyong wallpaper"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Pinapayagan ang app na itakda ang mga pahiwatig sa laki ng wallpaper ng system."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"i-reset ang system sa mga factory default"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Pinapayagan ang app na ganap na i-reset ang system sa mga setting ng factory nito, na binubura ang lahat ng data, configuration, at naka-install na apps."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Pinapayagan ang app na baguhin ang time zone ng telepono."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"gumanap bilang AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Pinapayagan ang app na tumawag sa AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"tuklasin ang mga kilalang account"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"maghanap ng mga account sa device"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Pinapayagan ang app na makuha ang listahan ng mga account na kilala ng tablet."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Pinapayagan ang app na makuha ang listahan ng mga account na kilala ng telepono."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"gumaganap bilang tagapagpatotoo ng account"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"lumikha ng mga account at magtakda ng mga password"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Pinapayagan ang app na gamitin ang mga kakayahan ng tagapagpatunay ng account ng AccountManager, kabilang ang paglikha ng mga account at pagkuha at pagtatakda ng mga password ng mga ito."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"pamahalaan ang listahan ng mga account"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"magdagdag o mag-alis ng mga account"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Pinapayagan ang app na magsagawa ng mga pagpapatakbo katulad ng pagdaragdag at pag-aalis ng mga account, at pagtanggal ng password ng mga ito."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"gamitin ang mga kredensyal sa pagpapatotoo ng account"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"gamitin ang mga account sa device"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Pinapayagan ang app na humiling ng mga token sa pagpapatotoo."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"tingnan ang katayuan ng network"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"tingnan ang mga koneksyon sa network"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Pinapayagan ang app na tingnan ang katayuan ng lahat ng network."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"ganap na access sa Internet"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Pinapayagan ang app na lumikha ng mga network socket."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Pinapayagan ang app na baguhin ang katayuan ng naka-tether na pagkakakonekta ng network."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"baguhin ang setting ng paggamit ng data ng background"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Pinapayagan ang app na baguhin ang setting ng paggamit ng data sa background."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"tingnan ang katayuan ng Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"tingnan ang mga koneksyon sa Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Pinapayagan ang app na tingnan ang impormasyon tungkol sa katayuan ng Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"baguhin ang katayuan ng Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"kumonekta at magdiskonekta mula sa Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Pinapayagan ang app na kumonekta at umalis sa pagkakakonekta mula sa mga access point ng Wi-Fi, at gumawa ng mga pagbabago sa mga na-configure na network ng Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"payagan ang pagtanggap ng Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Pinapayagan ang app na tumanggap ng mga packet na hindi direktang nakatuon sa iyong device. Maaari itong maging kapaki-pakinabang kapag tumutuklas ng mga serbisyong inaalok sa malapit. Gumagamit ito ng higit pang lakas kaysa sa hindi pangmaramihang mode."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Pangangasiwa sa Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"I-access ang mga setting ng Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Pinapayagan ang app na i-configure ang lokal na Bluetooth tablet, at tumuklas ng at ipares sa mga malayuang device."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Pinapayagan ang app na i-configure ang lokal na Bluetooth na telepono, at tumuklas ng at ipares sa mga malayuang device."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Tingnan ang katayuan ng WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Tingnan ang mga WiMAX na koneksyon"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Pinapayagan ang app na tingnan ang impormasyon tungkol sa katayuan ng WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Baguhin ang katayuan ng WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Pinapayagan ang app na kumonekta at magdiskonekta sa network ng WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"lumikha ng mga koneksyon ng Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"ipares sa mga Bluetooth device"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Pinapayagan ang app na tingnan ang configuration ng lokal na Bluetooth tablet, at upang gumawa at tumanggap ng mga koneksyon sa mga nakapares na device."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Pinapayagan ang app na tingnan ang configuration ng lokal na Bluetooth na telepono, at upang gumawa at tumanggap ng mga koneksyon sa mga nakapares na device."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kontrolin ang Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Pinapayagan ang app na makipag-ugnay sa Near Field Communication (NFC) na mga tag, card, at reader."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"huwag paganahin ang keylock"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"huwag paganahin ang iyong lock ng screen"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Pinapayagan ang app na huwag paganahin ang keylock at anumang nauugnay na seguridad ng password. Ang lehitimong halimbawa nito ay ang hindi pagpapagana ng telepono sa keylock kapag tumatanggap ng papasok na tawag sa telepono, pagkatapos ay muling pagpapagana sa keylock kapag tapos na ang tawag."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"basahin ang mga setting ng sync"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Pinapayagan ang app na basahin ang mga setting ng pag-sync, gaya ng kung pinagana ang pag-sync para sa app ng Mga Tao."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"isulat ang mga setting ng sync"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"I-toggle on at off ang pag-sync"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Pinapayagan ang app na baguhin ang mga setting ng pag-sync, gaya ng kung pinagana ang pag-sync para sa app ng Mga Tao."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"basahin ang mga istatistika ng sync"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Pinapayagan ang app na basahin ang mga istatistika ng pag-sync; hal., ang kasaysayan ng mga pag-sync na naganap."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Pinapayagan ang app na kumuha ng mga detalye tungkol sa kasalukuyang naka-sync na mga feed."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"sumulat ng mga naka-subscribe na feed"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Pinapayagan ang app na baguhin ang iyong kasalukuyang na-sync na mga feed. Maaaring baguhin ng nakakahamak na apps ang iyong na-sync na mga feed."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"basahin ang diksyunaryong tinukoy ng user"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"basahin ang mga terminong idinagdag mo sa diksyunaryo"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Pinapayagan ang app na magbasa ng anumang pribadong mga salita, pangalan at parirala na maaaring inimbak ng user sa diksyunaryo ng user."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"magsulat sa diksyunaryong tinukoy ng user"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Pinapayagan ang app na magsulat ng mga bagong salita sa diksyunaryo ng user."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"basahin nilalaman USB storage"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"basahin ang mga nilalaman ng SD card"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Payag app basa laman USB strg."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Binibigyang-daan ang app na basahin ang mga nilalaman ng SD card."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"baguhin/tanggalin laman ng USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"baguhin/tanggalin ang mga nilalaman ng SD card"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"basa nilalaman USB storage mo"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"basahin ang mga nilalaman ng iyong SD card"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Bigay-daan app basahin nilalaman ng USB storage, maaaring may mga larawan at media."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Binibigyang-daan aang app na basahin ang mga nilalaman ng SD card, na maaaring may mga larawan at media."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"bago tanggal laman USB storage"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"baguhin o tanggalin ang mga nilalaman ng iyong SD card"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Pinapayagan ang app na magsulat sa USB storage."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Pinapayagan ang app na magsulat sa SD card."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"baguhin/tanggalin ang mga nilalaman ng panloob na imbakan ng media"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Walang SIM card sa telepono."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Maglagay ng isang SIM card."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Nawawala o hindi nababasa ang SIM card. Maglagay ng isang SIM card."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ang iyong SIM card ay permanenteng hindi pinagana."\n" Makipag-ugnay sa iyong wireless service provider para sa isa pang SIM card."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Button na nakaraang track"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Button na Susunod na track"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"character"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"salita"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"link"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"linya"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Nabigo ang factory na pagsubok"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Parokya"</string> <string name="autofill_area" msgid="3547409050889952423">"Lugar"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"basahin ang kasaysayan at mga bookmark ng Browser"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"basahin ang iyong mga bookmark at kasaysayan sa Web"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Pinapayagan ang app na basahin ang lahat ng URL na binisita ng Browser, at lahat ng bookmark ng Browser."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"isulat ang kasaysayan ng Browser at mga bookmark"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"magsulat ng mga bookmark at kasaysayan sa web"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Pinapayagan ang app na baguhin ang kasaysayan ng Browser o mga bookmark na nakaimbak sa iyong tablet. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang data ng iyong Browser."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Pinapayagan ang app na baguhin ang kasaysayan ng Browser o mga bookmark na nakaimbak sa iyong telepono. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang data ng iyong Browser."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"itakda ang alarm sa alarm clock"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"magtakda ng alarm"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Pinapayagan ang app na magtakda ng alarm sa isang naka-install na app ng alarm clock. Maaaring hindi ipatupad ng ilang apps ng alarm clock ang tampok na ito."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"magdagdag ng voicemail"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Pinapayagan ang app na magdagdag ng mga mensahe sa iyong inbox ng voicemail."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Itakda"</string> <string name="date_time_done" msgid="2507683751759308828">"Tapos na"</string> <string name="default_permission_group" msgid="2690160991405646128">"Default"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BAGO: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"BAGO: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Walang mga kinakailangang pahintulot"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Itago"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Ipakita lahat"</b></string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index b65534669bb5..833c143190f1 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Tabletiniz kapanacak."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefonunuz kapanacak."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Kapatmak istiyor musunuz?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Güvenli modda yeniden aç"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Cihazı kapatıp güvenli modda tekrar açmak ister misiniz? Bu işlem, yüklediğiniz tüm üçüncü taraf uygulamaları devre dışı bırakacaktır. Daha sonra tekrar açtığınızda bu uygulamalar geri yüklenecektir."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"En Son Görevler"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Son uygulama yok"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Tablet seçenekleri"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Mesajlarınız"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS mesajlarınızı, e-posta iletilerinizi ve diğer mesajlarınızı okuyup yazma."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Kişisel bilgileriniz"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Tabletinizde depolanan kişilere ve takvime doğrudan erişim."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Telefonunuzda depolanan kişilere ve takvime doğrudan erişim."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Konumunuz"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Fiziksel konumunuzu izleme."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Ağ iletişimi"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Çeşitli ağ özelliklerine erişme."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Hesaplarınız"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Kullanılabilir hesaplara erişin."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Donanım denetimleri"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Sisteme alt düzey erişim ve denetimi."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Geliştirme araçları"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Yalnızca uygulama geliştiriciler için gerekli özellikler."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Depolama"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Payl depolama birimine erişin."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD karta erişin."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Uygulamaya, durum çubuğu olma izni verir."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"durum çubuğunu genişlet/daralt"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Uygulamaya, durum çubuğunu genişletip daraltma izni verir."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"giden aramalarda araya gir"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"giden çağrıları yeniden yönlendir"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Uygulamaya, giden aramaları işleme ve aranacak numarayı değiştirme izni verir. Kötü amaçlı uygulamalar giden aramaları izleyebilir, yönlendirebilir ya da önleyebilir."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"SMS al"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"kısa mesajları al (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Uygulamaya, SMS mesajları alma ve işleme izni verir. Kötü amaçlı uygulamalar mesajlarınızı izleyebilir veya onları size göstermeden silebilir."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"MMS al"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"kısa mesajları (MMS) al"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Uygulamaya, MMS mesajlarını alma ve işleme izni verir. Kötü amaçlı uygulamalar mesajlarınızı izleyebilir veya onları size göstermeden silebilir."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"acil durum yayınlarını al"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Uygulamaya, acil yayın mesajları alma ve işleme izni verir. Bu izin, sadece sistem uygulamaları için kullanılabilir."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Uygulamaya, SMS mesajları gönderme izni verir. Kötü amaçlı uygulamalar onayınızı almadan mesaj göndererek size masraf çıkarabilir."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS mesajlarını onaysız gönder"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Uygulamaya, SMS mesajları gönderme izni verir. Kötü amaçlı uygulamalar onayınızı almadan mesaj göndererek size masraf çıkarabilir."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"SMS veya MMS oku"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"kısa mesajlarımı (SMS veya MMS) oku"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Uygulamaya, tabletinizde veya SIM kartta depolanan SMS mesajlarını okuma izni verir. Kötü amaçlı uygulamalar gizli mesajlarınızı okuyabilir."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Uygulamaya, telefonunuzda veya SIM kartınızda depolanan SMS mesajlarını okuma izni verir. Kötü amaçlı uygulamalar gizli mesajlarınızı okuyabilir."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"SMS veya MMS düzenle"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"kısa mesajlarımı (SMS veya MMS) düzenle"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Uygulamaya, tabletinizde veya SIM kartınızda depolanan SMS mesajlarına yazma izni verir. Kötü amaçlı uygulamalar mesajlarınızı silebilir."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Uygulamaya, telefonunuzdaki veya SIM kartınızdaki SMS mesajlarına yazma izni verir. Kötü amaçlı uygulamalar mesajlarınızı silebilir."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"WAP al"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"kısa mesajları (WAP) al"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Uygulamaya, WAP mesajlarını alma ve işleme izni verir. Kötü amaçlı uygulamalar mesajlarınızı izleyebilir veya onları size göstermeden silebilir."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"çalışan uygulamaları al"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Uygulamaya, şu anda çalışmakta olan ve son çalışan işlemler hakkında bilgi alma izni verir. Kötü amaçlı uygulamalar diğer uygulamalar hakkında özel bilgileri ele geçirebilir."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"çalışan uygulamaların ayrıntılarını al"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Uygulamaya, şu anda çalışmakta olan ve son çalışan işlemler hakkında ayrıntılı bilgi alma izni verir. Kötü amaçlı uygulamalar diğer uygulamalar hakkında gizli bilgileri ele geçirebilir."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"çalışan uygulamaları yeniden sırala"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Uygulamaya, görevleri ön plana ve arka plana taşıma izni verir. Kötü amaçlı uygulamalar kendilerini sizin denetiminiz dışında ön plana taşıyabilir."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"çalışan uygulamaları durdur"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Uygulamaya diğer uygulamaların ekran uyumluluk modunu denetleme izni verir. Kötü amaçlı uygulamalar diğer uygulamaların çalışma şeklini bozabilir."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"uygulama hata ayıklamayı etkinleştir"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Uygulamaya, başka bir uygulama için hata ayıklamayı açma izni verir. Kötü amaçlı uygulamalar diğer uygulamaları kaldırmak için bunu kullanabilir."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"kullanıcı arayüzü ayarlarınızı değiştirin"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"sistem görüntüleme ayarlarını değiştir"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Uygulamaya, yerel ayar veya genel yazı tipi boyutu gibi mevcut yapılandırmayı değiştirme izni verir."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"araç modunu etkinleştir"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Uygulamaya, araç modunu etkinleştirme izni verir."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"arka plan işlemleri son erdir"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"diğer uygulamaları kapat"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Uygulamaya, bellek düşük olmasa bile diğer uygulamaların arka plan işlemlerini kapatma izni verir."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"diğer uygulamaları durmaya zorla"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Uygulamaya, diğer uygulamaları zorla durdurma izni verir."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Uygulamaya, WAP PUSH mesajı alındığına dair bildirim yayınlama izni verir. Kötü amaçlı uygulamalar sahte MMS bildirimleri oluşturmak veya bir web sayfasının içeriğini sessiz şekilde zararlı öğelerle değiştirmek için bunu kullanabilir."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"çalışan işlem sayısını sınırla"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Uygulamaya, çalışacak süreçlerin azami sayısını denetleme izni verir. Normal uygulamalar için gerekli değildir."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"tüm arka plan uygulamaları kapat"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"arka plan uygulamaları kapanmaya zorla"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Uygulamaya, etkinliklerin arka plana geçer geçmez her zaman tamamlanıp tamamlanmadıklarını denetleme izni verir. Normal uygulamalar için gerekli değildir."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"pil istatistiklerini değiştir"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Uygulamaya, toplanan pil kullanım istatistiklerini değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Uygulamaya, tam yedekleme onay arabirimini başlatma izni verir. Herhangi bir uygulamanın kullanımına yönelik değildir."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"yetkisiz pencereleri görüntüle"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Uygulamaya, dahili sistem kullanıcı arayüzü tarafından kullanılacak pencereler oluşturma izni verir. Normal uygulamaların kullanımına yönelik değildir."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"sistem düzeyi uyarıları görüntüle"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"diğer uygulamaları sürükle"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Uygulamaya sistem uyarı pencerelerini gösterme izni verir. Kötü amaçlı uygulamalar tüm ekranı ele geçirebilir."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"genel animasyon hızını değiştir"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Uygulamaya, istediği zaman genel animasyon hızını değiştirme (animasyonları hızlandırma veya yavaşlatma) izni verir."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Uygulamaya, kendisi veya başka uygulamalar için belirli izinleri verme ya da kaldırma izni verir. Zararlı uygulamalar bunu, kendilerine izin vermediğiniz özelliklere erişmek için kullanabilir."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tercih edilen uygulamaları ayarla"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Uygulamaya, tercih edilen uygulamalarınızı değiştirme izni verir. Kötü amaçlı uygulamalar çalışmakta olan uygulamaları sessizce değiştirip gizli verilerinizi toplamak için mevcut uygulamalarınızı yanlış yönlendirebilir."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"genel sistem ayarlarını değiştir"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"sistem ayarlarını değiştir"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Uygulamaya, sistem ayarı verilerini değiştirme izni verir. Kötü amaçlı uygulamalar sistem yapılandırmanızı bozabilir."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"güvenli sistem ayarlarını değiştir"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Uygulamaya, sisteme ait güvenlik ayarı verilerini değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"Google hizmetler haritasını değiştir"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Uygulamaya, Google hizmetleri haritasını değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"açılışta otomatik başlat"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"başlangıçta çalıştır"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Uygulamaya, kendisini sistem açılışı bittikten hemen sonra başlatma izni verir. Bu izin, tabletin başlaması için daha uzun süre geçmesine ve uygulamanın her zaman çalışarak tableti yavaşlatmasına neden olabilir."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Uygulamaya, kendisini sistem açılışı bittikten hemen sonra başlatma izni verir. Bu izin, telefonun başlatılması için daha uzun bir süre geçmesine ve uygulamanın her zaman çalışarak telefonu yavaşlatmasına neden olur."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"sabit yayın gönder"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Uygulamaya, yayın bittikten sonra da kalan sabit yayınlar gönderme izni verir. Kötü amaçlı uygulamalar tabletin çok fazla bellek kullanmasına neden olarak onu yavaşlatabilir veya kararsız hale getirebilirler."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Uygulamaya, yayın bittikten sonra da kalan sabit yayınlar gönderme izni verir. Kötü amaçlı uygulamalar telefonun çok fazla bellek kullanmasına neden olarak onu yavaşlatabilir veya dengesiz hale getirebilir."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"kişi verilerini oku"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"kişi verileri yaz"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"kişilerimi oku"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere tabletinizde kayıtlı kişilerle ilgili tüm verileri okuma izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi başkalarına gönderebilir."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere telefonunuzda kayıtlı kişilerle ilgili tüm verileri okuma izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi başkalarına gönderebilir."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"kişilerimi değiştir"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere tabletinizde kayıtlı kişilerle ilgili tüm verileri değiştirme izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi silebilir veya değiştirebilir."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere telefonunuzda kayıtlı kişilerle ilgili tüm verileri değiştirme izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi silebilir veya değiştirebilir."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"çağrı günlüğünü oku"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Uygulamaya tabletinizin çağrı günlüğünü (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) okuma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak verilerinizi başka kişilere gönderebilir."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Uygulamaya telefonunuzun çağrı günlüğünü (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) okuma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak verilerinizi başka kişilere gönderebilir."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"çağrı günlüğüne yaz"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Uygulamaya tabletinizin çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Uygulamaya telefonunuzun çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"profil verilerimi oku"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"kendi kişi kartımı oku"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Uygulamaya, adınız ve iletişim bilgileriniz gibi cihazınızda saklanan kişisel profil bilgilerini okuma izni verir. Bu izin, uygulamanın sizi tanımlayabileceği ve profil bilgilerinizi başkalarına gönderebileceği anlamına gelir."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"profil verilerime yaz"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"kendi kişi kartımı değiştir"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Uygulamaya, adınız ve iletişim bilgileriniz gibi cihazınızda saklanan kişisel profil bilgilerini değiştirme veya bunlara ekleme yapma izni verir. Bu, diğer uygulamaların sizi tanımlaması ve profil bilgilerinizi başkalarına göndermesi anlamına gelir."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"sosyal akışımı oku"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Uygulamaya, sizden ve arkadaşlarınızdan gelen sosyal güncellemelere erişme ve bunları senkronize etme izni verir. Kötü amaçlı uygulamalar sosyal ağlar üzerinde sizinle arkadaşlarınız arasındaki kişisel iletişimi okumak için bunu kullanabilir."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefonu yeniden başlamaya zorla"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Uygulamaya, tableti yeniden açılmaya zorlama izni verir."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Uygulamaya, telefonu yeniden başlatmaya zorlama izni verir."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"dosya sistemlerini bağla ve bağlantısını kes"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB deplm dosya sistemine eriş"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD Kartın dosya sistemine eriş"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Uygulamaya, çıkarılabilir depolama için dosya sistemlerini ekleme veya bağlantısını kesme izni verir."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"harici depolama birimini biçimlendir"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB depolamayı sil"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD Kartı sil"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Uygulamaya, çıkarılabilir depolama birimini biçimlendirme izni verir."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"dahili depolama birimi hakkında bilgi al"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Uygulamaya, dahili depolama birimi hakkında bilgi alma izni verir."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Uygulamaya, dahili depolama birimini ekleme/bağlantısını kesme izni verir."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"dahili dep br adını dğş"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Uygulamaya, dahili depolama biriminin adını değiştirme izni verir."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"titreşimi denetle"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"titreşimi denetle"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Uygulamaya, titreşimi denetleme izni verir."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"flaşı denetle"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Uygulamaya, flaş ışığını denetleme izni verir."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Uygulamaya, hangi uygulamaların hangi widget\'ları kullanacağını sisteme bildirme izni verir. Bu izne sahip bir uygulama, başka uygulamalara kişisel veriler için erişim hakkı verebilir. Normal uygulamaların kullanımına yönelik değildir."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon durumunu değiştir"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Uygulamaya, cihazın telefon özelliklerini kontrol etme izni verir. Bu izne sahip bir uygulama sizi hiç uyarmadan ağlar arasında geçiş, telefonun radyosunu açıp kapatma ve benzeri işlemler yapabilir."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"telefon durumunu ve kimliğini oku"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefonun durumunu ve kimliğini oku"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Uygulamaya cihazın telefon özelliklerine erişme izni verir. Bu izne sahip bir uygulama; telefon numarasını ve bu telefonun seri numarasını, bir çağrının etkin olup olmadığını, çağrının bağlandığı numarayı vb. belirleyebilir."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"tabletin uykuya geçmesini önle"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefonunun uykuya geçmesini önle"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Telefon donanımına tam erişim veren alt düzey bir üretici testi olarak çalıştırılır. Yalnızca telefon üretici test modunda çalışırken kullanılabilir."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"duvar kağıdını ayarla"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Uygulamaya, sistem duvar kağıdını ayarlama izni verir."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"duvar kağıdı boyutu ipuçlarını ayarla"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"duvar kâğıdımın boyutunu ayarla"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Uygulamaya, sistem duvar kağıdı için boyut ipuçlarını ayarlama izni verir."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"sistemi fabrika değerlerine sıfırla"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Uygulamaya, tüm verileri, yapılandırmayı ve yüklü uygulamaları silerek sistemi tamamen fabrika ayarlarına sıfırlama izni verir."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Uygulamaya, telefonun saat dilimini değiştirme izni verir."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"Hesap Yönetici Hizmeti gibi davran"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Uygulamaya, Hesap Kimlik Doğrulayıcılarına çağrı yapma izni verir."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"bilinen hesapları keşfet"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"cihazdaki hesapları bul"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Uygulamaya, tablet tarafından bilinen hesapların listesini alma izni verir."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Uygulamaya, telefonda bilinen hesapların listesini alma izni verir."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"hesap denetleyicisi gibi davran"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"hesap oluştur ve şifre ayarla"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Uygulamaya, hesaplar oluşturma ve bunların şifrelerini alma ve ayarlama da dahil olmak üzere Hesap Yöneticisi\'nin hesap doğrulama yetkilerini kullanma izni verir."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"hesaplar listesini yönet"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"hesap ekle veya kaldır"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Uygulamaya, hesap ekleme, kaldırma ve hesapların şifrelerini silme gibi işlemleri yapma izni verir."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"bir hesabın kimlik doğrulama bilgilerini kullan"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"bu cihazdaki hesapları kullan"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Uygulamaya kimlik doğrulama jetonları isteme izni verir."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"ağ durumunu görüntüle"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ağ bağlantılarını görüntüle"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Uygulamaya, tüm ağların durumunu görme izni verir."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"tam İnternet erişimi"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Uygulamaya, ağ yuvaları oluşturma izni verir."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Uygulamaya, tethering kullanan ağ bağlantısının durumunu değiştirme izni verir."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"arka plan veri kullanımı ayarını değiştir"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Uygulamaya, arka plan veri kullanımı ayarını değiştirme izni verir."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"Kablosuz durumunu görüntüle"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"Kablosuz bağlantıları görüntüle"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Uygulamaya, kablosuz bağlantının durumu ile ilgili bilgileri görüntüleme izni verir."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"Kablosuz durumunu değiştir"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"Kablosuza bağlan veya Kablosuz bağlantısını kes"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Uygulamaya, kablosuz erişim noktalarına bağlanıp bunlarla bağlantısını kesme ve yapılandırılmış kablosuz ağlarda değişiklikler yapma izni verir."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Kablosuz Çoklu Yayın alımına izin ver"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Uygulamaya, doğrudan cihazınıza yönlendirilmemiş paketleri alma izni verir. Yakın yerlerde sunulan hizmetlerin keşfedilmesi sırasında faydalı olabilir. Birden fazla noktaya yayın yapmayan moda göre daha fazla güç harcar."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Bluetooth yönetimi"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth ayarlara eriş"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Uygulamaya, yerel Bluetooth tabletini yapılandırma ve uzak cihazları keşfedip bunlarla eşleşme izni verir."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Uygulamaya, yerel Bluetooth telefonunu yapılandırma ve uzak cihazları keşfedip bunlarla eşleşme izni verir."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"WiMAX durumunu görüntüle"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX bağlantılarını görüntüle"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Uygulamanın, WiMAX\'in durumuyla ilgili bilgileri görüntülemesine izin verir."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX durumunu değiştir"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Uygulamaya, WiMAX ağına bağlanma veya bağlantıyı kesme izni verir."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth bağlantıları oluştur"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth cihazlarla eşle"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Uygulamaya, yerel Bluetooth tabletinin yapılandırmasını görüntüleme, eşleştirilmiş cihazlarla bağlantı yapma ve bu tür bağlantıları kabul etme izni verir."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Uygulamaya, yerel Bluetooth telefonunun yapılandırmasını görüntüleme, eşleştirilmiş cihazlarla bağlantı yapma ve bu tür bağlantıları kabul etme izni verir."</string> <string name="permlab_nfc" msgid="4423351274757876953">"Yakın Alan İletişimini denetle"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Uygulamaya, Near Field Communication (NFC) etiketleri, kartlar ve okuyucular ile iletişim kurma izni verir."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"tuş kilidini devre dışı bırak"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ekran kilidimi devre dışı bırak"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Uygulamaya, tuş kilidini ve ilgili tüm şifreli güvenlik önlemlerini devre dışı bırakma izni verir. Bunun bir örneği çağrı alındığında tuş kilidinin devre dışı bırakılması, görüşme bittiğinde kilidin yeniden devreye sokulmasıdır."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"senk. ayarlarını oku"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Uygulamaya, senkronizasyonun Kişiler uygulaması için etkin olup olmadığı gibi senkronizasyonla ilgili ayarları okuma izni verir."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"senk. ayarlarını yaz"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"senkronizasyonu aç/kapat"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Uygulamaya, senkronizasyonun Kişiler uygulaması için etkin olup olmadığı gibi senkronizasyonla ilgili ayarları değiştirme izni verir."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"senk. istatistiklerini oku"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Uygulamaya, senkronizasyon istatistiklerini (ör. geçmişte yapılmış senkronizasyonlar) okuma izni verir."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Uygulamaya, o anda senkronize olan özet akışları ile ilgili bilgi alma izni verir."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abone olunan yayınları yaz"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Uygulamaya, o anda senkronize edilmiş özet akışlarını değiştirme izni verir. Kötü amaçlı uygulamalar senkronize edilmiş özet akışlarını değiştirebilir."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"kullanıcı tanımlı sözlüğü oku"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"sözlüğe eklediğim terimleri oku"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Uygulamaya, kullanıcının kullanıcı sözlüğünde depolamış olabileceği kişisel kelimeleri, adları ve kelime öbeklerini okuma izni verir."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"kullanıcı tanımlı sözlüğe yaz"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Uygulamaya, kullanıcı sözlüğüne yeni kelimeler yazma izni verir."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"USB depolama içeriklerini oku"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"SD kart içeriklerini oku"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Uygulamaya USB depolama içeriğini okuma izni verir."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Uygulamaya SD kart içeriğini okuma izni verir."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB dep birm içeriğini dğş/sil"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD kart içeriklerini değiştir/sil"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB depolamamın içeriğini oku"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD kartımın içeriğini oku"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Uygulamaya USB depolamanın içeriğini okuma izni verir. Bu izin fotoğrafları ve medyayı da içerebilir."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Uygulamaya SD kartın içeriğini okuma izni verir. Bu izin fotoğrafları ve medyayı da içerebilir."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB depolamamın içeriğini değiştir veya sil"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"SD kartımın içeriğini değiştir veya sil"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Uygulamaya USB depolama birimine yazma izni verir."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Uygulamaya, SD karta yazma izni verir."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"dahili medya depolama birimi içeriğini değiştir/sil"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonda SIM kart yok."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM kartı takın."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM kart yok veya okunamıyor. Bir SIM kart takın."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kartınız kalıcı olarak devre dışı bırakıldı."\n" Başka bir SIM kart için kablosuz servis sağlayıcınıza başvurun."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Önceki parça düğmesi"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Sonraki parça düğmesi"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"karakter"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"kelime"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"bağlantı"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"satır"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Fabrika testi yapılamadı"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Mahalle"</string> <string name="autofill_area" msgid="3547409050889952423">"Alan"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirlik"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Tarayıcı geçmişini ve favorileri oku"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Web yer işaretlerimi ve geçmişimi oku"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Uygulamaya, Tarayıcı\'nın ziyaret etmiş olduğu tüm URL\'leri ve Tarayıcı\'nın tüm yer işaretlerini okuma izni verir."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Tarayıcı geçmişini ve favorileri yaz"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"web yer işaretlerine ve geçmişe yaz"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Uygulamaya, Tarayıcı geçmişini veya tabletinizde depolanmış yer işaretlerini değiştirme izni verir. Kötü amaçlı uygulamalar Tarayıcı verilerinizi silmek veya değiştirmek için bunu kullanabilir."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Uygulamaya, Tarayıcı geçmişini veya telefonunuzda depolanmış yer işaretlerini değiştirme izni verir. Kötü amaçlı uygulamalar Tarayıcı verilerinizi silmek veya değiştirmek için bunu kullanabilir."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"çalar saatte alarm ayarla"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"alarm ayarla"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Uygulamaya, çalar saat uygulamasının alarmını ayarlama izni verir. Bazı çalar saat uygulamaları bu özelliği uygulayamayabilir."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"sesli mesaj ekle"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Uygulamaya, sesli mesaj gelen kutunuza mesaj ekleme izni verir."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Ayarla"</string> <string name="date_time_done" msgid="2507683751759308828">"Tamamlandı"</string> <string name="default_permission_group" msgid="2690160991405646128">"Varsayılan"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"YENİ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"YENİ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"İzin gerektirmez"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Gizle"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Tümünü göster"</b></string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 32d2727ba308..76aa65a23e12 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Ваш пристрій буде вимкнено."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Ваш телефон буде вимкнено."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Вимкнути?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Перейти в безпечний режим"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Дійсно перейти в безпечний режим? Усі встановлені програми третіх сторін буде вимкнено. Вони відновляться після повторного перезавантаження."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Останні"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Жодних останніх програм"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Парам. пристрою"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Ваші повідомл."</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Читати та писати в SMS, електронні листи й інші повідомлення."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ваша особиста інформація"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Прямий доступ до контактів і календаря, збережених у пристрої."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Прямий доступ до ваших контактів і календаря, збереж. у телефоні."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Ваше місцезнаходження"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Відстежувати ваше фізичне місцезнаходження."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Підключення до мережі"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Отримувати доступ до різних функцій мережі."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ваші облікові записи"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ до доступних обл. записів."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Керув. апар. забезп."</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Контроль і доступ до системи на нижчому рівні."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Інструм. розробника"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функції, потрібні лише для розробників програм."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Зберігання"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Отрим. доступу до носія USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ до карти SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Дозволяє програмі бути рядком стану."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"розгорнути/згорн. рядок стану"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Дозволяє програмі розгортати чи згортати рядок стану."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"перехопл. вихідні дзвінки"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"переадресовувати вихідні виклики"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Дозволяє програмі обробляти вихідні дзвінки та змінювати номер для виклику. Шкідливі програми можуть відстежувати, переадресовувати чи блокувати вихідні дзвінки."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"отримувати SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"отримувати текстові повідомлення (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Дозволяє програмі отримувати й обробляти SMS повідомлення. Шкідливі програми можуть відстежувати ваші повідомлення чи видаляти їх, навіть не показуючи вам."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"отримув. MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"отримувати текстові повідомлення (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Дозволяє програмі отримувати й обробляти MMS повідомлення. Шкідливі програми можуть відстежувати ваші повідомлення чи видаляти їх, навіть не показуючи вам."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"отримувати повідомлення екстрених служб"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Дозволяє програмі отримувати й обробляти повідомлення екстрених служб. Цей дозвіл доступний лише для системних програм."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Дозволяє програмі надсилати SMS повідомлення. Шкідливі програми можуть надсилати повідомлення без вашого підтвердження, заставляючи вас платити."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"надсилати SMS-повідомлення без підтвердження"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Дозволяє програмі надсилати SMS повідомлення. Шкідливі програми можуть надсилати повідомлення без вашого підтвердження, змушуючи вас платити."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"читати SMS або MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"читати текстові повідомлення (SMS або MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Дозволяє програмі читати SMS повідомлення, збережені в планшетному ПК чи на SIM-карті. Шкідливі програми можуть читати ваші конфіденційні повідомлення."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Дозволяє програмі читати SMS повідомлення, збережені в телефоні чи на SIM-карті. Шкідливі програми можуть читати ваші конфіденційні повідомлення."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"редаг. SMS або MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"редагувати текстові повідомлення (SMS або MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Дозволяє програмі писати в SMS повідомлення, збережені в планшетному ПК чи на SIM-карті. Шкідливі програми можуть видаляти ваші повідомлення."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Дозволяє програмі писати в SMS повідомлення, збережені в телефоні чи на SIM-карті. Шкідливі програми можуть видаляти ваші повідомлення."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"отримувати WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"отримувати текстові повідомлення (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Дозволяє програмі отримувати й обробляти WAP повідомлення. Шкідливі програми можуть відстежувати ваші повідомлення чи видаляти їх, навіть не показуючи вам."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"отримувати запущені програми"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Дозволяє програмі отримувати інформацію про поточні й останні запущені завдання. Шкідливі програми можуть виявляти особисту інформацію про інші програми."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"отримувати дані про запущені програми"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Дозволяє програмі отримувати інформацію про поточні й останні запущені завдання. Шкідливі програми можуть виявляти особисту інформацію про інші програми."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"змінювати порядок запущених програм"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Дозволяє програмі переміщувати завдання в активні чи фонові вікна. Шкідливі програми можуть примусово ставати активними без вашого відома."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"зупиняти запущені програми"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Дозволяє програмі контролювати режим сумісності екрана інших програм. Шкідливі програми можуть переривати роботу інших програм."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"вмикати налагодження програми"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Дозволяє програмі вмикати налагодження для іншої програми. Шкідливі програми можуть використовувати це для примусового припинення роботи інших програм."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"змін. налашт. інтерф. кор."</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"змінювати системні налаштування екрана"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Дозволяє програмі змінювати поточну конфігурацію, як-от мовний код чи розмір шрифту загалом."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"увімк. режим авто"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Дозволяє програмі вмикати режим автомобіля."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"заверш. роботу фон. процесів"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"закривати інші програми"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Дозволяє програмі примусово припиняти фонові процеси інших програм, навіть якщо пам’яті достатньо."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"примусово припиняти роботу інших програм"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Дозволяє програмі примусово припиняти роботу інших програм."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Дозволяє програмі передавати сповіщення про отримання повідомлення WAP PUSH. Шкідливі програми можуть використовувати це для підробки отримання MMS повідомлень або для непомітної заміни вмісту будь-якої веб-сторінки шкідливими варіантами."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"обмежувати кількість запущ. процесів"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Дозволяє програмі контролювати максимальну кількість процесів, які буде запущено. Ніколи не вимагається для звичайних програм."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"примушувати всі фонові програми закриватися"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"примусово закривати фонові програми"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Дозволяє програмі контролювати обов’язкове завершення всіх дій, які переходять у фоновий режим. Ніколи не вимагається для звичайних програм."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"змінювати статистику батареї"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Дозволяє програмі змінювати зібрану статистику акумулятора. Не для використання звичайними програмами."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Дозволяє програмі запускати користувацький інтерфейс підтвердження повного резервного копіювання. Не для використання жодною програмою."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"відображати несанкціон. вікна"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Дозволяє програмі створювати вікна, які мають використовуватися інтерфейсом користувача внутрішньої системи. Не для використання звичайними програмами."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"відобр. сповіщ. на рівні сист."</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"відображатися над іншими програмами"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Дозволяє програмі відображати вікна сповіщень системи. Шкідливі програми можуть контролювати весь екран."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"змінюв. заг. швидкість анімації"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Дозволяє програмі будь-коли змінювати загальну швидкість анімації (пришвидшувати чи сповільнювати анімації)."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Дозволяє програмі надавати або скасовувати певні дозволи для себе чи інших програм. Шкідливі програми можуть використовувати це для доступу до функцій, якого ви їм не надавали."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"установлювати потрібні програми"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Дозволяє програмі змінювати ваші вибрані програми. Шкідливі програми можуть непомітно змінювати запущені програми, примушуючи існуючі програми оманливим шляхом збирати ваші особисті дані."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"змін. загальні налашт-ня сист."</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"змінювати налаштування системи"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Дозволяє програмі змінювати дані налаштувань системи. Шкідливі програми можуть пошкодити конфігурацію вашої системи."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"змін. налашт-ня безпеки системи"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Дозволяє програмі змінювати дані налаштувань безпеки системи. Не для використання звичайними програмами."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"змінювати карту служб Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Дозволяє програмі змінювати карту служб Google. Не для використання звичайними програмами."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"автоматично запускати при завантаження"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"виконуватися під час запуску"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Дозволяє програмі запускатися, щойно завантаження системи закінчиться. Це може затримувати запуск планшетного ПК та дозволяє програмі сповільнювати загальну роботу планшетного ПК своїм постійним функціонуванням."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Дозволяє програмі запускатися, щойно завантаження системи закінчиться. Це може затримувати запуск телефону та дозволяє програмі сповільнювати загальну роботу телефону своїм постійним функціонуванням."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"надсилати закріпл. запис"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Дозволяє програмі надсилати закріплені широкомовні повідомлення, які залишаються після відтворення широкомовного повідомлення. Шкідливі програми можуть сповільнювати роботу планшетного ПК або порушувати її стабільність, спричиняючи завелике використання пам’яті."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Дозволяє програмі надсилати закріплені широкомовні повідомлення, які залишаються після відтворення широкомовного повідомлення. Шкідливі програми можуть сповільнювати роботу телефону або порушувати її стабільність, спричиняючи завелике використання пам’яті."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"читати контакт. дані"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"запис. контактні дані"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"читати контакти"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Дозволяє програмі читати всі дані про контакти, які зберігаються на вашому планшетному ПК, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати цей дозвіл для надсилання ваших контактних даних іншим людям."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Дозволяє програмі читати всі дані про контакти, які зберігаються на вашому телефоні, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати цей дозвіл для надсилання ваших контактних даних іншим людям."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"змінювати контакти"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Дозволяє програмі змінювати всі дані про контакти, які зберігаються на вашому планшетному ПК, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати це для стирання чи зміни ваших контактних даних."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Дозволяє програмі змінювати всі дані про контакти, які зберігаються на вашому телефоні, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати це для стирання чи зміни ваших контактних даних."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"читати журнал викликів"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Дозволяє програмі читати журнал викликів вашого планшетного ПК, включно з даними про вхідні та вихідні дзвінки. Шкідливі програми можуть використовувати це для надсилання ваших даних іншим людям."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Дозволяє програмі читати журнал викликів вашого телефону, включно з даними про вхідні та вихідні дзвінки. Шкідливі програми можуть використовувати це для надсилання ваших даних іншим людям."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"записувати в журнал викликів"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Дозволяє програмі змінювати журнал викликів вашого планшетного ПК, включно з даними про вхідні та вихідні дзвінки. Шкідливі програми можуть використовувати це для стирання або зміни вашого журналу викликів."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Дозволяє програмі змінювати журнал викликів вашого телефону, включно з даними про вхідні та вихідні дзвінки. Шкідливі програми можуть використовувати це для стирання або зміни вашого журналу викликів."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"читати дані вашого профілю"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"читати картки контактів"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Дозволяє програмі читати особисту інформацію профілю, збережену на вашому пристрої, як-от ваше ім’я та контактну інформацію. Це означає, що інші програми можуть ідентифікувати вашу особу та надсилати дані вашого профілю іншим."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"записувати в дані профілю"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"змінювати картки контактів"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Дозволяє програмі змінювати чи додавати особисту інформацію профілю, збережену на вашому пристрої, як-от ваше ім’я та контактну інформацію. Це означає, що інші програми можуть ідентифікувати вашу особу та надсилати дані вашого профілю іншим."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"читати ваш соціальний потік"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Дозволяє програмі отримувати доступ до оновлень із соціальних мереж від вас і ваших друзів та синхронізувати їх. Шкідливі програми можуть використовувати це для читання приватної кореспонденції між вами та вашими друзями в соціальних мережах."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"примус. перезав. тел."</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Дозволяє програмі примусово перезавантажувати планшетний ПК."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Дозволяє програмі примусово перезавантажувати телефон."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"підкл. і відкл. файлові сист."</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"отрим.доступ до файл.сист. USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"отримувати доступ до файлової системи карти SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Дозволяє програмі підключати та відключати файлові системи для пам’яті на знімних носіях."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"форматувати зовн. пам\'ять"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"очищати носій USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"очищати карту SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Дозволяє програмі форматувати пам’ять на знімних носіях."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"переносити інф-ю у внутрішню пам\'ять"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Дозволяє програмі отримувати інформацію про внутрішню пам’ять."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Дозволяє програмі підключати чи відключати внутрішню пам’ять."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"переймен. внутр. пам\'ять"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Дозволяє програмі перейменовувати внутрішню пам’ять."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"контрол. вібросигн."</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"контролювати вібросигнал"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Дозволяє програмі контролювати вібросигнал."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"контр. блим. світло"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Дозволяє програмі контролювати світловий сигнал."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Дозволяє програмі повідомляти системі, які віджети можуть використовуватися певною програмою. Програма з цим дозволом може надавати іншим програмам доступ до особистих даних. Не для використання звичайними програмами."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"змінювати стан тел."</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Дозволяє програмі контролювати телефонні функції пристрою. Програма з цим дозволом може переключати мережі, вмикати та вимикати радіо в телефоні тощо без вашого відома."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"читати стан телефону та ідентиф."</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"читати статус та ідентифікаційну інформацію телефону"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Дозволяє програмі отримувати доступ до телефонних функцій пристрою. Програма з цим дозволом може визначати номер телефону та серійний номер цього телефону, активність виклику, номер, на який робиться виклик, тощо."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"не доп.перехід пристр.в реж.сну"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"недоп. перехід тел. в реж. сну"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Запускає тест виробника на низькому рівні, дозволяючи повний доступ до апарат. забезп. тел. Доступно лише коли тел. запущено в режимі тестув. виробником."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"установити фоновий малюнок"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Дозволяє програмі встановлювати фоновий малюнок системи."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"установити підказки щодо розміру фонового малюнка"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"налаштовувати розмір фонового малюнка"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дозволяє програмі встановлювати підказки щодо розміру фонового малюнка системи."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"віднов. завод. парам. за умовч."</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Дозволяє програмі повністю відновлювати заводські налаштування системи, видаляючи всі дані, конфігурацію та встановлені програми."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Дозволяє програмі змінювати часовий пояс телефону."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"діяти як AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Дозволяє програмі здійснювати виклики AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"виявляти невідомі облікові записи"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"знаходити облікові записи на пристрої"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Дозволяє програмі отримувати список облікових записів, відомих планшетному ПК."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Дозволяє програмі отримувати список облікових записів, відомих телефону."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"діяти як автентиф-тор обл. запису"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"створювати облікові записи й установлювати паролі"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Дозволяє програмі використовувати можливості автентифікатора облікового запису AccountManager, зокрема створювати облікові записи, а також отримувати та встановлювати паролі до них."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"керувати списком облікових записів"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"додавати або видаляти облікові записи"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Дозволяє програмі виконувати такі операції, як додавання та видалення облікових записів і видалення паролів до них."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"використ. автентифікаційні облік. дані обл. запису"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"використовувати облікові записи на пристрої"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Дозволяє програмі подавати запити на маркери автентифікації."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"перегляд. стан мережі"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"переглядати мережеві з’єднання"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Дозволяє програмі переглядати стани всіх мереж."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"повний доступ до Інтернету"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Дозволяє програмі створювати сокети мережі."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Дозволяє програмі змінювати стан під’єднання до мережі в режимі модема."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"змінювати параметр викор. фонових даних"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Дозволяє програмі змінювати параметр використання фонових даних."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"перегл. стан Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"переглядати з’єднання Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Дозволяє програмі переглядати інформацію про стан Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"змінити стан Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"під’єднуватися й від’єднуватися від Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Дозволяє програмі підключатися та відключатися від точок доступу Wi-Fi, а також вносити зміни в налаштовані мережі Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"дозвол. отримання багатоадр. Wi-Fi"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Дозволяє програмі отримувати пакети, не адресовані безпосередньо вашому пристрою. Це може буди корисним для виявлення служб, які надаються поблизу. Використовує більше заряду, ніж режим не-багатоадресних пакетів."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"адміністрування Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"отримувати доступ до налаштувань Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Дозволяє програмі налаштовувати планшетний ПК із локальним Bluetooth, а також знаходити віддалені пристрої та створювати з ними пару."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Дозволяє програмі налаштовувати телефон із локальним Bluetooth, а також знаходити віддалені пристрої та створювати з ними пару."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Переглянути стан WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Переглядати з’єднання WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Дозволяє програмі переглядати інформацію про стан WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Змінити стан WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Дозволяє програмі підключатися та відключатися від мережі WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"створюв. підключення Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"створювати пару з пристроями Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Дозволяє програмі переглядати конфігурацію планшетного ПК із локальним Bluetooth, а також створювати та приймати з’єднання зі спареними пристроями."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Дозволяє програмі переглядати конфігурацію локального телефону з Bluetooth, а також створювати та приймати з’єднання зі спареними пристроями."</string> <string name="permlab_nfc" msgid="4423351274757876953">"контрол. Near Field Communication"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Дозволяє програмі обмінюватися даними з тегами, картками та читачами екрана Near Field Communication (NFC)."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"вимик. блок. клав."</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"вимикати блокування екрана"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Дозволяє програмі вимикати блокування клавіатури та будь-який пов’язаний паролем захист. Допустимий приклад: телефон вимикає блокування клавіатури під час отримання вхідного дзвінка, після закінчення якого блокування клавіатури відновлюється."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"читати налаштування синхронізації"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Дозволяє програмі читати налаштування синхронізації, наприклад, чи ввімкнено синхронізацію для програми \"Люди\"."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"записувати налаштування синхронізації"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"вмикати й вимикати синхронізацію"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Дозволяє програмі змінювати налаштування синхронізації, наприклад, чи ввімкнено синхронізацію для програми \"Люди\"."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"читати стат-ку синхрон."</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Дозволяє програмі читати статистику синхронізації, напр., історію здійснених синхронізацій."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Дозволяє програмі отримувати відомості про поточно синхронізовані канали."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"запис. підписані канали"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Дозволяє програмі змінювати поточно синхронізовані канали. Шкідливі програми можуть змінювати ваші синхронізовані канали."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"читати вказаний користувачем словник"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"читати додані в словник терміни"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Дозволяє програмі читати будь-які особисті вислови, назви та фрази, які користувач міг зберегти у своєму словнику."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"писати у вказаний користувачем словник"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дозволяє програмі писати нові слова в словник користувача."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"читати вміст носія USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"читати вміст карти SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Дозволяє програмі читати вміст носія USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Дозволяє програмі читати вміст карти SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"змінювати/видаляти вміст носія USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"змінювати/видал. вміст карти SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"читати вміст носія USB"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"читати вміст карти SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Дозволяє програмі читати вміст носія USB, що може включати фотографії й медіа-файли."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Дозволяє програмі читати вміст карти SD, що може включати фотографії й медіа-файли."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"змінювати чи видаляти вміст USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"змінювати чи видаляти зміст карти SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дозволяє програмі писати на носій USB"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Дозволяє програмі записувати на карту SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"змінювати/видаляти вміст внутр. сховища даних"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"У тел. немає SIM-карти."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Вставте SIM-карту."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-карта відсутня або недоступна для читання. Вставте SIM-карту."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Вашу SIM-карту вимкнено назавжди."\n" Зверніться до свого постачальника послуг бездротового зв’язку, щоб отримати іншу SIM-карту."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Кнопка \"Попередня доріжка\""</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Кнопка \"Наступна доріжка\""</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"символ"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"слово"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"посилання"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"рядок"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g> <xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Помилка завод. тесту"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Община"</string> <string name="autofill_area" msgid="3547409050889952423">"Область"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Емірат"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"читати історію й закладки переглядача"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"читати веб-закладки й історію"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Дозволяє програмі читати всі URL-адреси, які відкривалися в цьому веб-переглядачі, і всі закладки веб-переглядача."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"записувати історію й закладки переглядача"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"писати у веб-закладки й історію"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Дозволяє програмі змінювати історію чи закладки веб-переглядача, збережені у вашому планшетному ПК. Шкідливі програми можуть використовувати це для видалення чи зміни даних веб-переглядача."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Дозволяє програмі змінювати історію чи закладки веб-переглядача, збережені у вашому телефоні. Шкідливі програми можуть використовувати це для видалення чи зміни даних веб-переглядача."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"налашт. сигнал у будильн."</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"установлювати будильник"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Дозволяє програмі налаштовувати сигнал у встановленій програмі будильника. У деяких програмах будильника ця функція може не застосовуватися."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"додавати голосову пошту"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Дозволяє програмі додавати повідомлення в папку \"Вхідні\" голосової пошти."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Застосувати"</string> <string name="date_time_done" msgid="2507683751759308828">"Готово"</string> <string name="default_permission_group" msgid="2690160991405646128">"За умовч."</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВИЙ: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВИЙ: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Дозвіл не потрібний"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Сховати"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Показ. всі"</b></string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 9e714ca0e30b..feb15438b59d 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Máy tính bảng của bạn sẽ tắt."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Điện thoại của bạn sẽ tắt."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Bạn có muốn tắt không?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Khởi động lại ở chế độ an toàn"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Bạn có muốn khởi động lại ở chế độ an toàn không? Thao tác này sẽ tắt tất cả ứng dụng của bên thứ ba mà bạn đã cài đặt. Những ứng dụng này sẽ được khôi phục khi bạn khởi động lại một lần nữa."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Gần đây"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Không có ứng dụng nào gần đây."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Tùy chọn máy tính bảng"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Tin nhắn của bạn"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Đọc và soạn SMS, email và các tin nhắn khác của bạn."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Thông tin cá nhân của bạn"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Quyền truy cập trực tiếp vào danh bạ và lịch của bạn được lưu trữ trên máy tính bảng."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Quyền truy cập trực tiếp vào danh bạ và lịch của bạn được lưu trữ trên điện thoại."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Vị trí của bạn"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Giám sát vị trí thực của bạn."</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Kết nối mạng"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Truy cập các tính năng mạng khác nhau."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Tài khoản của bạn"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Truy cập các tài khoản khả dụng."</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kiểm soát phần cứng"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Quyền truy cập và quyền kiểm soát hệ thống cấp thấp hơn."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Công cụ phát triển"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Các tính năng chỉ cần cho nhà phát triển ứng dụng."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Dung lượng"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Truy cập bộ nhớ USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Truy cập thẻ SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Cho phép ứng dụng trở thành thanh trạng thái."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"mở rộng/thu gọn thanh trạng thái"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Cho phép ứng dụng mở rộng hoặc thu gọn thanh trạng thái."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"chặn các cuộc gọi đi"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"định tuyến lại cuộc gọi đi"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Cho phép ứng dụng xử lý cuộc gọi đi và thay đổi số được gọi. Ứng dụng độc hại có thể theo dõi, chuyển hướng hoặc chặn cuộc gọi đi."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"nhận SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"nhận tin nhắn văn bản (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Cho phép ứng dụng nhận và xử lý tin nhắn SMS. Ứng dụng độc hại có thể giám sát tin nhắn của bạn hoặc xóa tin nhắn mà không hiển thị chúng cho bạn."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"nhận MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"nhận tin nhắn văn bản (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Cho phép ứng dụng nhận và xử lý tin nhắn MMS. Ứng dụng độc hại có thể theo dõi tin nhắn của bạn hoặc xóa tin nhắn mà không hiển thị chúng cho bạn."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"nhận các truyền phát khẩn cấp"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Cho phép ứng dụng nhận và xử lý tin nhắn truyền phát khẩn cấp. Quyền này chỉ sẵn có cho các ứng dụng hệ thống."</string> @@ -209,31 +275,33 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Cho phép ứng dụng gửi tin nhắn SMS. Ứng dụng độc hại có thể khiến bạn tốn tiền bằng cách gửi tin nhắn mà không cần xác nhận của bạn."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"gửi tin nhắn SMS mà không cần xác nhận"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Cho phép ứng dụng gửi tin nhắn SMS. Ứng dụng độc hại có thể khiến bạn bị mất tiền khi gửi tin nhắn mà không có xác nhận của bạn."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"đọc SMS hoặc MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"đọc tin nhắn văn bản của bạn (SMS hoặc MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Cho phép ứng dụng đọc tin nhắn SMS được lưu trữ trên máy tính bảng hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể đọc các tin nhắn bí mật của bạn."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Cho phép ứng dụng đọc tin nhắn SMS được lưu trữ trên điện thoại hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể đọc các tin nhắn bí mật của bạn."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"chỉnh sửa SMS hoặc MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"chỉnh sửa tin nhắn văn bản của bạn (SMS hoặc MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Cho phép ứng dụng ghi vào tin nhắn SMS được lưu trữ trên máy tính bảng hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể xóa tin nhắn của bạn."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Cho phép ứng dụng ghi vào tin nhắn SMS được lưu trữ trên điện thoại hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể xóa tin nhắn của bạn."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"nhận WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"nhận tin nhắn văn bản (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Cho phép ứng dụng nhận và xử lý tin nhắn WAP. Ứng dụng độc hại có thể giám sát tin nhắn của bạn hoặc xóa tin nhắn mà không hiển thị chúng cho bạn."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"truy xuất các ứng dụng đang chạy"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Cho phép ứng dụng truy xuất thông tin về các công việc đã và đang chạy gần đây. Ứng dụng độc hại có thể phát hiện thông tin riêng tư về các ứng dụng khác."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"truy xuất chi tiết về các ứng dụng đang chạy"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Cho phép ứng dụng truy xuất thông tin chi tiết về các tác vụ đã và đang chạy gần đây. Ứng dụng độc hại có thể phát hiện thông tin riêng tư về các ứng dụng khác."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"sắp xếp lại những ứng dụng đang chạy"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Cho phép ứng dụng di chuyển công việc sang nền trước và nền sau. Ứng dụng độc hại có thể tự hiển thị ở nền trước mà không chịu sự kiểm soát của bạn."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"dừng các ứng dụng đang chạy"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"Cho phép ứng dụng xóa công việc và loại bỏ các ứng dụng của chúng. Ứng dụng độc hại có thể làm gián đoạn hoạt động của các ứng dụng khác."</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"bắt đầu mọi hoạt động"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Cho phép ứng dụng bắt đầu mọi hoạt động, bất kể là bảo vệ quyền hay trạng thái xuất."</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Cho phép ứng dụng bắt đầu mọi hoạt động, bất kể tình trạng bảo vệ quyền hay trạng thái xuất."</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"đặt độ tương thích màn hình"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Cho phép ứng dụng kiểm soát chế độ tương thích màn hình của ứng dụng khác. Các ứng dụng độc hại có thể phá vỡ hoạt động của các ứng dụng khác."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"bật gỡ lỗi ứng dụng"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Cho phép ứng dụng bật gỡ lỗi cho một ứng dụng khác. Ứng dụng độc hại có thể sử dụng quyền này để loại bỏ những ứng dụng khác."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"thay đổi cài đặt giao diện người dùng của bạn"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"thay đổi cài đặt hiển thị hệ thống"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Cho phép ứng dụng thay đổi cấu hình hiện tại, chẳng hạn như ngôn ngữ hoặc kích thước phông chữ chung."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"bật chế độ trên ô tô"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Cho phép ứng dụng bật chế độ trên ô tô."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"loại bỏ các quá trình nền"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"đóng ứng dụng khác"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Cho phép ứng dụng loại bỏ các quá trình ở nền sau của ứng dụng khác, ngay cả khi không thiếu dung lượng bộ nhớ."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"buộc dừng ứng dụng khác"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Cho phép ứng dụng buộc dừng ứng dụng khác."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Cho phép ứng dụng truyền phát thông báo cho biết rằng đã nhận được tin nhắn WAP PUSH. Ứng dụng độc hại có thể sử dụng quyền này để giả mạo xác nhận đã nhận được tin nhắn MMS hoặc ngầm thay thế nội dung của bất kỳ trang web nào bằng các biến thể độc hại."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"giới hạn số quá trình đang chạy"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Cho phép ứng dụng kiểm soát số quy trình tối đa sẽ chạy. Không cần thiết cho các ứng dụng thông thường."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"đóng tất cả các ứng dụng nền"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"buộc ứng dụng nền đóng"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Cho phép ứng dụng kiểm soát xem các hoạt động có luôn hoàn tất ngay khi chúng chuyển sang nền sau hay không. Không cần thiết cho các ứng dụng thông thường."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"sửa đổi thống kê về pin"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Cho phép ứng dụng sửa đổi các số liệu thống kê về pin đã được thu thập. Không dành cho các ứng dụng thông thường."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Cho phép ứng dụng khởi chạy UI xác nhận sao lưu toàn bộ. Không dành cho bất kỳ ứng dụng nào."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"hiển thị các cửa sổ trái phép"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Cho phép ứng dụng tạo các cửa sổ dùng cho giao diện người dùng hệ thống nội bộ. Không dành cho các ứng dụng thông thường."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"hiển thị thông báo cấp hệ thống"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"vẽ trên ứng dụng khác"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Cho phép ứng dụng hiển thị các cửa sổ thông báo hệ thống. Ứng dụng độc hại có thể kiểm soát toàn bộ màn hình."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"sửa đổi tốc độ hoạt ảnh chung"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Cho phép ứng dụng thay đổi tốc độ hoạt ảnh nói chung (hoạt ảnh nhanh hơn hoặc chậm hơn) bất cứ lúc nào."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Cho phép ứng dụng cấp hoặc thu hồi quyền cụ thể đối với ứng dụng đó hoặc các ứng dụng khác. Các ứng dụng độc hại có thể lợi dụng điều này để truy cập các tính năng mà bạn không cấp."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"đặt ứng dụng ưa thích"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Cho phép ứng dụng sửa đổi ứng dụng ưa thích của bạn. Ứng dụng độc hại có thể ngầm thay đổi các ứng dụng đã được chạy, giả mạo các ứng dụng hiện có để thu thập dữ liệu cá nhân của bạn."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"sửa đổi cài đặt hệ thống chung"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"sửa đổi cài đặt hệ thống"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Cho phép ứng dụng sửa đổi dữ liệu cài đặt của hệ thống. Ứng dụng độc hại có thể làm hỏng cấu hình hệ thống của bạn."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"sửa đổi cài đặt hệ thống bảo mật"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Cho phép ứng dụng sửa đổi dữ liệu cài đặt bảo mật của hệ thống. Không dành cho các ứng dụng thông thường."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"sửa đổi bản đồ dịch vụ của Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Cho phép ứng dụng sửa đổi bản đồ dịch vụ của Google. Không dành cho ứng dụng thông thường."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"tự động bắt đầu khởi động"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"chạy khi khởi động"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Cho phép ứng dụng tự khởi chạy ngay khi hệ thống khởi động xong. Quyền này có thể khiến máy tính bảng mất nhiều thời gian khởi động hơn và cho phép ứng dụng làm chậm toàn bộ máy tính bảng do ứng dụng luôn chạy."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Cho phép ứng dụng tự khởi chạy ngay khi hệ thống khởi động xong. Quyền này có thể khiến điện thoại mất nhiều thời gian khởi động hơn và cho phép ứng dụng làm chậm toàn bộ điện thoại do ứng dụng luôn chạy."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"gửi truyền phát hấp dẫn người xem"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Cho phép ứng dụng gửi nội dung truyền phát hấp dẫn người xem. Nội dung này sẽ vẫn còn sau khi quá trình truyền phát kết thúc. Ứng dụng độc hại có thể làm cho máy tính bảng bị chậm hoặc không ổn định bằng cách khiến máy tính bảng sử dụng quá nhiều bộ nhớ."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Cho phép ứng dụng gửi nội dung truyền phát hấp dẫn người xem. Nội dung này sẽ vẫn còn sau khi quá trình truyền phát kết thúc. Ứng dụng độc hại có thể làm cho điện thoại bị chậm hoặc không ổn định bằng cách khiến điện thoại sử dụng quá nhiều bộ nhớ."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"đọc dữ liệu liên hệ"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"ghi dữ liệu liên hệ"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"đọc danh sách liên hệ của bạn"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Cho phép ứng dụng đọc tất cả dữ liệu về các liên hệ được lưu trữ trên máy tính bảng của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để gửi dữ liệu liên hệ của bạn cho những người khác."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Cho phép ứng dụng đọc tất cả dữ liệu về các liên hệ được lưu trữ trên điện thoại của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để gửi dữ liệu liên hệ của bạn cho những người khác."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"sửa đổi danh sách liên hệ của bạn"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Cho phép ứng dụng sửa đổi dữ liệu về các liên hệ được lưu trữ trên máy tính bảng của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu liên hệ của bạn."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Cho phép ứng dụng sửa đổi dữ liệu về các liên hệ được lưu trữ trên điện thoại của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu liên hệ của bạn."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"đọc nhật ký cuộc gọi"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Cho phép ứng dụng đọc nhật ký cuộc gọi trên máy tính bảng của bạn, bao gồm dữ liệu về các cuộc gọi đến và gọi đi. Các ứng dụng độc hại có thể sử dụng quyền này để gửi dữ liệu của bạn cho những người khác."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Cho phép ứng dụng đọc nhật ký cuộc gọi trên điện thoại của bạn, bao gồm dữ liệu về các cuộc gọi đến và gọi đi. Các ứng dụng độc hại có thể sử dụng quyền này để gửi dữ liệu của bạn cho những người khác."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"ghi nhật ký cuộc gọi"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Cho phép ứng dụng sửa đổi nhật ký cuộc gọi trên máy tính bảng của bạn, bao gồm dữ liệu về các cuộc gọi đến và gọi đi. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi nhật ký cuộc gọi của bạn."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Cho phép ứng dụng sửa đổi nhật ký cuộc gọi trên điện thoại của bạn, bao gồm dữ liệu về các cuộc gọi đến và gọi đi. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi nhật ký cuộc gọi của bạn."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"đọc d.liệu t.sử của bạn"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"đọc thẻ liên hệ của riêng bạn"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Cho phép ứng dụng đọc thông tin tiểu sử cá nhân được lưu trữ trên thiết bị, chẳng hạn như tên và thông tin liên hệ của bạn. Điều này có nghĩa là ứng dụng có thể xác định danh tính của bạn và gửi thông tin tiểu sử của bạn cho người khác."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"ghi dữ liệu t.sử của bạn"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"sửa đổi thẻ liên hệ của riêng bạn"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Cho phép ứng dụng thay đổi hoặc thêm vào thông tin tiểu sử cá nhân được lưu trữ trên thiết bị, chẳng hạn như tên và thông tin liên hệ của bạn. Điều này có nghĩa là các ứng dụng khác có thể xác định danh tính của bạn và gửi thông tin tiểu sử của bạn cho người khác."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"đọc luồng xã hội của bạn"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Cho phép ứng dụng truy cập và đồng bộ hóa các cập nhật xã hội của bạn và bạn bè bạn. Ứng dụng độc hại có thể sử dụng quyền này để đọc thông tin liên lạc cá nhân giữa bạn và bạn bè bạn trên các mạng xã hội."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"buộc khởi động lại điện thoại"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Cho phép ứng dụng buộc máy tính bảng khởi động lại."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Cho phép ứng dụng buộc điện thoại khởi động lại."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"lắp và tháo các tệp hệ thống"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"truy cập hệ thống tệp của bộ lưu trữ USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"truy cập hệ thống tệp Thẻ SD"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Cho phép ứng dụng cài và gỡ các hệ thống tệp của bộ nhớ di động."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"định dạng bộ nhớ bên ngoài"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"xóa bộ lưu trữ USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"xóa Thẻ SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Cho phép ứng dụng định dạng bộ nhớ di động."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"nhận thông tin trên bộ nhớ trong"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Cho phép ứng dụng lấy thông tin trên bộ nhớ trong."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Cho phép ứng dụng kết nối/ngắt kết nối bộ nhớ trong."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"đổi tên bộ nhớ trong"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Cho phép ứng dụng đổi tên bộ nhớ trong."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"kiểm soát bộ rung"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"kiểm soát rung"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Cho phép ứng dụng kiểm soát bộ rung."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"kiểm soát đèn nháy"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Cho phép ứng dụng kiểm soát đèn nháy."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Cho phép ứng dụng thông báo cho hệ thống biết tiện ích con nào có thể được sử dụng bởi ứng dụng nào. Với quyền này, ứng dụng có thể cấp quyền truy cập vào dữ liệu cá nhân cho các ứng dụng khác. Không dành cho các ứng dụng thông thường."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"sửa đổi trạng thái điện thoại"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Cho phép ứng dụng kiểm soát các tính năng điện thoại của thiết bị. Ứng dụng có quyền này có thể chuyển đổi mạng, bật và tắt radio điện thoại cũng như thực hiện các tác vụ tương tự mà không cần thông báo cho bạn."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"đọc trạng thái và nhận dạng của điện thoại"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"đọc trạng thái và nhận dạng của điện thoại"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Cho phép ứng dụng truy cập vào các tính năng điện thoại của thiết bị. Ứng dụng có quyền này có thể xác định số điện thoại và số sêri của điện thoại này, cho dù cuộc gọi có hiện hoạt hay không, số mà cuộc gọi đó được kết nối và các thông tin tương tự."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ngăn máy tính bảng chuyển sang chế độ ngủ"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ngăn điện thoại chuyển sang chế độ ngủ"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Chạy dưới dạng thử nghiệm nhà máy cấp thấp, cho phép quyền truy cập hoàn toàn vào phần cứng điện thoại. Chỉ khả dụng khi điện thoại chạy ở chế độ thử nghiệm trong nhà máy."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"đặt hình nền"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Cho phép ứng dụng đặt hình nền hệ thống."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Đặt gợi ý kích thước hình nền"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"điều chỉnh kích thước hình nền của bạn"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Cho phép ứng dụng đặt gợi ý kích thước hình nền của hệ thống."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"đặt lại hệ thống về mặc định ban đầu"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Cho phép ứng dụng đặt lại toàn bộ hệ thống về cài đặt ban đầu, xóa tất cả dữ liệu, cấu hình và ứng dụng đã cài đặt."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Cho phép ứng dụng thay đổi múi giờ của điện thoại."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"hoạt động như AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Cho phép ứng dụng thực hiện cuộc gọi đến AccountAuthenticators."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"phát hiện tài khoản đã biết"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"tìm tài khoản trên thiết bị"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Cho phép ứng dụng nhận danh sách các tài khoản mà máy tính bảng biết."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Cho phép ứng dụng nhận danh sách các tài khoản mà điện thoại biết."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"hoạt động như trình xác thực tài khoản"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"tạo tài khoản và đặt mật khẩu"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Cho phép ứng dụng sử dụng các tính năng của trình xác thực tài khoản của AccountManager, bao gồm tạo tài khoản, nhận và đặt mật khẩu cho các tài khoản đó."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"quản lý danh sách tài khoản"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"thêm hoặc xóa tài khoản"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Cho phép ứng dụng thực hiện các thao tác như thêm và xóa tài khoản cũng như xóa mật khẩu của các tài khoản đó."</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"sử dụng thông tin xác thực tài khoản"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"sử dụng tài khoản trên thiết bị"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Cho phép ứng dụng yêu cầu mã thông báo xác thực."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"xem trạng thái mạng"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"xem kết nối mạng"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Cho phép ứng dụng xem trạng thái của tất cả các mạng."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"quyền truy cập Internet đầy đủ"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Cho phép ứng dụng tạo các cổng mạng."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Cho phép ứng dụng thay đổi trạng thái của kết nối mạng được dùng làm điểm truy cập Internet."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"thay đổi cài đặt sử dụng dữ liệu nền"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Cho phép ứng dụng thay đổi cài đặt sử dụng dữ liệu nền."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"xem trạng thái Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"xem kết nối Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Cho phép ứng dụng xem thông tin về trạng thái Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"thay đổi trạng thái Wi-Fi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"kết nối và ngắt kết nối Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Cho phép ứng dụng kết nối và ngắt kết nối khỏi điểm truy cập Wi-Fi cũng như thực hiện các thay đổi đối với mạng Wi-Fi đã được định cấu hình."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"cho phép thu tín hiệu Wi-Fi Đa hướng"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Cho phép ứng dụng nhận các gói không được gửi trực tiếp đến thiết bị của bạn. Quyền này có thể hữu ích khi phát hiện các dịch vụ được cung cấp gần đó. Chế độ này sử dụng nhiều năng lượng hơn chế độ không phát đa hướng."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"Quản trị Bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"truy cập cài đặt Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Cho phép ứng dụng định cấu hình máy tính bảng Bluetooth cục bộ cũng như phát hiện và ghép nối với các thiết bị từ xa."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Cho phép ứng dụng định cấu hình điện thoại Bluetooth cục bộ cũng như phát hiện và ghép nối với các thiết bị từ xa."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Xem trạng thái WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Xem kết nối WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Cho phép ứng dụng xem thông tin về trạng thái của WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Thay đổi trạng thái WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Cho phép ứng dụng kết nối và ngắt kết nối mạng WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"tạo kết nối Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"ghép nối với thiết bị Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Cho phép ứng dụng xem cấu hình của máy tính bảng Bluetooth cục bộ cũng như tạo và chấp nhận các kết nối với thiết bị được ghép nối."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Cho phép ứng dụng xem cấu hình của điện thoại Bluetooth cục bộ cũng như tạo và chấp nhận các kết nối với thiết bị được ghép nối."</string> <string name="permlab_nfc" msgid="4423351274757876953">"kiểm soát Liên lạc trường gần"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Cho phép ứng dụng giao tiếp với thẻ Giao tiếp trường gần (NFC), thẻ và trình đọc."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"vô hiệu hóa khóa phím"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"vô hiệu hóa khóa màn hình của bạn"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Cho phép ứng dụng tắt khóa phím và bất kỳ bảo mật mật khẩu được liên kết nào. Ví dụ thích hợp của việc này là điện thoại tắt khóa phím khi nhận được cuộc gọi đến, sau đó bật lại khóa phím khi cuộc gọi kết thúc."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"đọc cài đặt đồng bộ hóa"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Cho phép ứng dụng đọc cài đặt đồng bộ hóa, chẳng hạn như liệu đồng bộ hóa đã được bật cho ứng dụng Liên hệ hay chưa."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"ghi cài đặt đồng bộ hóa"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"chuyển đổi bật và tắt đồng bộ hóa"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Cho phép ứng dụng sửa đổi cài đặt đồng bộ hóa, chẳng hạn như có bật đồng bộ hóa cho ứng dụng Liên hệ hay không."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"đọc thống kê đồng bộ hóa"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Cho phép ứng dụng đọc các số liệu thống kê về đồng bộ hóa; ví dụ: lịch sử đồng bộ hóa đã diễn ra."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Cho phép ứng dụng lấy thông tin chi tiết về nguồn cấp dữ liệu hiện được đồng bộ hóa."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"ghi nguồn cấp dữ liệu đã đăng ký"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Cho phép ứng dụng sửa đổi nguồn cấp dữ liệu hiện đã được đồng bộ hóa của bạn. Ứng dụng độc hại có thể thay đổi nguồn cấp dữ liệu đã đồng bộ hóa của bạn."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"đọc từ điển do người dùng xác định"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"đọc cụm từ bạn đã thêm vào từ điển"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Cho phép ứng dụng đọc bất kỳ từ, tên và cụm từ riêng nào mà người dùng có thể đã lưu trữ trong từ điển của người dùng."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"ghi vào từ điển do người dùng xác định"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Cho phép ứng dụng ghi từ mới vào từ điển của người dùng."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"đọc nội dung của bộ nhớ USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"đọc nội dung của thẻ SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Cho phép ứng dụng đọc nội dung của bộ lưu trữ USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Cho phép ứng dụng đọc nội dung của thẻ SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"sửa đổi/xóa nội dung bộ nhớ USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"sửa đổi/xóa nội dung thẻ SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"đọc nội dung của bộ lưu trữ USB của bạn"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"đọc nội dung của thẻ SD của bạn"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Cho phép ứng dụng đọc nội dung của bộ lưu trữ USB, bộ lưu trữ này có thể bao gồm ảnh và đa phương tiện."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Cho phép ứng dụng đọc nội dung của thẻ SD, thẻ này có thể bao gồm ảnh và đa phương tiện."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"sửa đổi hoặc xóa nội dung của bộ lưu trữ USB của bạn"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"sửa đổi hoặc xóa nội dung của thẻ SD của bạn"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Cho phép ứng dụng ghi vào bộ lưu trữ USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Cho phép ứng dụng ghi vào thẻ SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"sửa đổi/xóa nội dung trên bộ nhớ phương tiện cục bộ"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Không có thẻ SIM nào trong điện thoại."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Hãy lắp thẻ SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Thẻ SIM bị thiếu hoặc không thể đọc được. Vui lòng lắp thẻ SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Thẻ SIM của bạn đã bị vô hiệu hóa vĩnh viễn ."\n" Hãy liên hệ với nhà cung cấp dịch vụ không dây của bạn để lấy thẻ SIM khác."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Nút bài hát trước"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Nút bài hát tiếp theo"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"ký tự"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"từ"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"liên kết"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"dòng"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Thử nghiệm ban đầu không thành công"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Giáo xứ"</string> <string name="autofill_area" msgid="3547409050889952423">"Khu vực"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Tiểu vương quốc Ả rập"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"đọc lịch sử và dấu trang của Trình duyệt"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"đọc lịch sử và dấu trang Web của bạn"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Cho phép ứng dụng đọc tất cả các URL mà Trình duyệt đã truy cập cũng như tất cả các dấu trang của Trình duyệt."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"xem lịch sử và dấu trang của Trình duyệt"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"viết lịch sử và dấu trang web của bạn"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên máy tính bảng của bạn. Ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu của Trình duyệt."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên điện thoại của bạn. Ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu Trình duyệt của bạn."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"đặt báo thức trong đồng hồ báo thức"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"đặt báo thức"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Cho phép ứng dụng đặt báo thức trong ứng dụng đồng hồ báo thức được cài đặt. Một số ứng dụng đồng hồ báo thức có thể không thực thi tính năng này."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"thêm thư thoại"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Cho phép ứng dụng thêm thông báo vào hộp thư thoại đến của bạn."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Đặt"</string> <string name="date_time_done" msgid="2507683751759308828">"Xong"</string> <string name="default_permission_group" msgid="2690160991405646128">"Mặc định"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"MỚI: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"MỚI: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Không yêu cầu quyền"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Ẩn"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Hiển thị tất cả"</b></string> diff --git a/core/res/res/values-w720dp/bools.xml b/core/res/res/values-w720dp/bools.xml index 352c3198c303..c87f689306d7 100644 --- a/core/res/res/values-w720dp/bools.xml +++ b/core/res/res/values-w720dp/bools.xml @@ -16,4 +16,5 @@ <resources> <bool name="action_bar_expanded_action_views_exclusive">false</bool> + <bool name="show_ongoing_ime_switcher">false</bool> </resources> diff --git a/core/res/res/values-w720dp/dimens.xml b/core/res/res/values-w720dp/dimens.xml index c62c3f583562..a37f58851020 100644 --- a/core/res/res/values-w720dp/dimens.xml +++ b/core/res/res/values-w720dp/dimens.xml @@ -33,5 +33,5 @@ <dimen name="preference_screen_header_padding_side">0dip</dimen> <integer name="preference_screen_header_scrollbarStyle">0x0</integer> <!-- insideOverlay --> - <integer name="preference_fragment_scrollbarStyle">0x0</integer> <!-- insideOverlay --> + <integer name="preference_fragment_scrollbarStyle">0x02000000</integer> <!-- outsideOverlay --> </resources> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 244455d841dd..09fab1f5ac12 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"您的平板电脑会关闭。"</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"您的手机会关机。"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"您要关机吗?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"重新启动并进入安全模式"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"您要重新启动并进入安全模式吗?这样会停用您已安装的所有第三方应用。再次重新启动将恢复这些应用。"</string> <string name="recent_tasks_title" msgid="3691764623638127888">"近期任务"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"最近没有运行任何应用"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"平板电脑选项"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"您的信息"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"读写短信、电子邮件和其他消息。"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"您的个人信息"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"直接访问平板电脑上存储的联系人和日历。"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"直接访问手机上存储的联系人和日历。"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"您的位置"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"监视您的实际位置。"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"网络通信"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"使用各种网络功能。"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"您的帐户"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"访问可用的帐户。"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"硬件控件"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"对系统进行低级访问和控制。"</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"开发工具"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"只有应用开发人员才需要的功能。"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"存储"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"访问 USB 存储设备。"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"访问 SD 卡。"</string> @@ -195,45 +261,47 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"允许以状态栏形式显示应用。"</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"展开/收拢状态栏"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"允许应用展开或折叠状态栏。"</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"拦截外拨电话"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"重新部署外拨电话"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"允许应用处理外拨通话并更改要拨打的号码。恶意应用可能会监视、重定向或阻止外拨通话。"</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"接收短信"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"接收文字讯息(短信)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"允许应用接收和处理短信。恶意应用可能会监视您的短信,或删除短信而不向您显示。"</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"接收彩信"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"接收文字讯息(彩信)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"允许应用接收和处理彩信。恶意应用可能会监视您的短信,或删除短信而不向您显示。"</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"接收紧急广播"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"允许应用接收和处理紧急广播消息。此权限仅适用于系统应用。"</string> <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"读取小区广播消息"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允许应用读取您的设备收到的小区广播消息。小区广播提醒是在某些地区发送的,用于发布紧急情况警告。恶意应用可能会在您收到小区紧急广播时干扰您设备的性能或操作。"</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允许应用读取您的设备收到的小区广播消息。小区广播消息是在某些地区发送的、用于发布紧急情况警告的提醒信息。恶意应用可能会在您收到小区紧急广播时干扰您设备的性能或操作。"</string> <string name="permlab_sendSms" msgid="5600830612147671529">"发送短信"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"允许应用发送短信。恶意应用可能会未经您的确认而发送短信,由此产生相关费用。"</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"不经确认直接发送短信"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"允许应用发送短信。恶意应用可能会未经您的确认而发送短信,由此产生相关费用。"</string> - <string name="permlab_readSms" msgid="4085333708122372256">"读取短信或彩信"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"读取您的文字讯息(短信或彩信)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"允许应用读取您的平板电脑或 SIM 卡上存储的短信。恶意应用可能会读取您的机密短信。"</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"允许应用读取您的手机或 SIM 卡上存储的短信。恶意应用可能借此读取您的机密短信。"</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"编辑短信或彩信"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"编辑您的文字讯息(短信或彩信)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"允许应用对平板电脑或 SIM 卡上存储的短信执行写入操作。恶意应用可能会删除您的短信。"</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"允许应用对手机或 SIM 卡上存储的短信执行写入操作。恶意应用可能会删除您的短信。"</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"接收 WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"接收文字讯息 (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"允许应用接收和处理 WAP 短信。恶意应用可能会监视您的短信,或删除短信而不向您显示。"</string> <string name="permlab_getTasks" msgid="6466095396623933906">"检索正在运行的应用"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"允许应用针对近期运行的和当前正在运行的任务检索相关信息。恶意应用可能会发现有关其他应用的私密信息。"</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"检索正在运行的应用的详细信息"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"允许该应用检索当前正在运行和近期运行的任务的详细信息。恶意应用可能会发现有关其他应用的私密信息。"</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"对正在运行的应用重新排序"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"允许应用将任务移动到前台和后台。恶意应用可能会不受您的控制,强行让自己处于前台。"</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"停止正在运行的应用"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"允许该应用删除任务并终止这些任务的应用。恶意应用可以籍此影响其他应用的行为。"</string> - <string name="permlab_startAnyActivity" msgid="2918768238045206456">"开始任何活动"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"允许该应用开始任何活动(不考虑权限保护或导出状态)。"</string> + <string name="permlab_startAnyActivity" msgid="2918768238045206456">"启动任何活动"</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"允许该应用启动任何活动(不考虑权限保护或导出状态)。"</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"设置屏幕兼容性"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"允许该应用控制其他应用的屏幕兼容模式。恶意应用可以籍此影响其他应用的行为。"</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"启用应用调试"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"允许该应用对其他应用启用调试。恶意应用可以籍此终止其他的应用。"</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"更改用户界面设置"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"更改系统显示设置"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"允许该应用更改当前配置,例如语言区域或整体的字体大小。"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"启用车载模式"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"允许应用启用车载模式。"</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"结束后台进程"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"关闭其他应用"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"允许应用在内存空间充足的情况下终止其他应用的后台进程。"</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"强行停止其他应用"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"允许应用强行停止其他应用。"</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"允许应用广播一条有关已收到 WAP PUSH 短信的通知。恶意应用可能借此伪造短信接收,或在后台将任意网页的内容替换为恶意内容。"</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"限制运行的进程个数"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"允许应用控制将运行的进程数上限。普通应用绝不需要此权限。"</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"关闭所有后台应用"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"强制关闭后台应用"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"允许应用控制活动在转入后台后是否立即结束。普通应用绝不需要此权限。"</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"修改电池统计信息"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"允许应用修改收集到的电池统计信息。普通应用不能使用此权限。"</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"允许应用启动完整备份确认用户界面。不用于任何应用。"</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"显示未授权的窗口"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"允许该应用创建供内部系统用户界面使用的窗口。普通应用不应使用此权限。"</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"显示系统级警报"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"覆盖其他应用"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"允许应用显示系统警告窗口。恶意应用可能会控制整个屏幕。"</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"修改全局动画速度"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"允许该应用随时更改全局动画速度(加快或减慢)。"</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"允许应用针对自身或其他应用授予或撤消特定权限。恶意应用可能会借此访问您未授权它们访问的功能。"</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"设置首选应用"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"允许应用修改您的首选应用。恶意应用可能会在后台更改运行的应用,欺骗您现有的应用,以收集您的私人数据。"</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"修改全局系统设置"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"修改系统设置"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"允许应用修改系统的设置数据。恶意应用可能会破坏您的系统配置。"</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"修改安全系统设置"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"允许应用修改系统的安全设置数据。普通应用不能使用此权限。"</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"修改 Google 服务地图"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"允许应用修改 Google 服务地图。普通应用不能使用此权限。"</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"开机时自动启动"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"开机启动"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"允许应用在系统完成引导后立即自动启动。这样可能会延长平板电脑的启动时间,并允许应用始终运行,从而导致平板电脑总体运行速度减慢。"</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"允许应用在系统完成引导后立即自动启动。这样可能会延长手机的启动时间,并允许应用始终运行,从而导致手机总体运行速度减慢。"</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"发送持久广播"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"允许应用发送持久广播,此类广播在结束后仍会保留。恶意应用可能会导致平板电脑使用过多内存,从而使速度变慢或变得不稳定。"</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"允许应用发送持久广播,此类广播在结束后仍会保留。恶意应用可能会导致手机使用过多内存,从而使速度变慢或变得不稳定。"</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"读取联系人数据"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"写入联系数据"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"读取您的通讯录"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"允许该应用读取与您平板电脑上存储的联系人相关的所有数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此将您的联系人数据发送给他人。"</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"允许该应用读取与您手机上存储的联系人相关的所有数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此将您的联系人数据发送给他人。"</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"修改您的通讯录"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"允许该应用修改与您平板电脑上存储的联系人相关的数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此删除或修改您的联系人数据。"</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"允许该应用修改与您手机上存储的联系人相关的数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此删除或修改您的联系人数据。"</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"读取通话记录"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"允许该应用读取平板电脑的通话记录,包括有关来电和外拨电话的数据。恶意应用可能会借此将您的数据发送给他人。"</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"允许该应用读取手机的通话记录,包括有关来电和外拨电话的数据。恶意应用可能会借此将您的数据发送给他人。"</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"写入通话记录"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"允许该应用修改平板电脑的通话记录,包括有关来电和外拨电话的数据。恶意应用可能会借此清除或修改您的通话记录。"</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"允许该应用修改手机的通话记录,包括有关来电和外拨电话的数据。恶意应用可能会借此清除或修改您的通话记录。"</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"读取您的个人资料数据"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"读取您自己的名片"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"允许应用读取您设备上存储的个人资料信息,例如您的姓名和联系信息。这意味着应用可以识别您的身份,并将您的个人资料信息发送给他人。"</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"写入到您的个人资料数据"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"修改您自己的名片"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"允许应用更改或添加您设备上存储的个人资料信息,例如您的姓名和联系信息。这意味着其他应用可以识别您的身份,并将您的个人资料信息发送给他人。"</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"读取您的社交视频流"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"允许应用访问并同步您和好友的社交最新动态。恶意应用可能借此读取您与社交网络上的好友之间的私人交流信息。"</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"强行重新启动手机"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"允许应用强行重新启动平板电脑。"</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"允许应用强行重新启动手机。"</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"装载和卸载文件系统"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"访问 USB 存储设备的文件系统"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"访问 SD 卡文件系统"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"允许应用装载和卸载可移动存储设备的文件系统。"</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"格式化外部存储设备"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"清除 USB 存储设备内容"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"清除 SD 卡内容"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"允许应用格式化可移动存储设备。"</string> <string name="permlab_asec_access" msgid="3411338632002193846">"获取有关内部存储设备的信息"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"允许应用获取有关内存设备的信息。"</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"允许应用装载/卸载内存设备。"</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"重命名内部存储设备"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"允许应用重命名内存设备。"</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"控制振动器"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"控制振动"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"允许应用控制振动器。"</string> <string name="permlab_flashlight" msgid="2155920810121984215">"控制闪光灯"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"允许应用控制闪光灯。"</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"允许应用告知系统哪些窗口小部件可供哪个应用使用。拥有此权限的应用可向其他应用授予对个人资料的访问权限。普通应用不能使用此权限。"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手机状态"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"允许应用控制设备的电话功能。拥有此权限的应用可在不通知您的情况下执行切换网络、开关手机无线装置等此类操作。"</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"读取手机状态和身份"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"读取手机状态和身份"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"允许应用访问设备的电话功能。拥有此权限的应用可以确定本机的电话号码和序列号、通话是否有效、呼叫的号码等。"</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"阻止平板电脑进入休眠状态"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"防止手机休眠"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"作为一项低级制造商测试来运行,从而允许对手机硬件进行完全访问。此权限仅当手机在制造商测试模式下运行时才可用。。"</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"设置壁纸"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"允许应用设置系统壁纸。"</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"设置有关壁纸大小的提示"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"调整您的壁纸大小"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"允许应用设置有关系统壁纸大小的提示。"</string> <string name="permlab_masterClear" msgid="2315750423139697397">"将系统恢复为出厂设置"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"允许应用将系统完全重置为其出厂设置,这会清除所有数据、配置和已安装的应用。"</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"允许应用更改手机的时区。"</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"作为 AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"允许该应用调用 AccountAuthenticators。"</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"发现已知帐户"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"查找设备上的帐户"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"允许应用获取平板电脑已知的帐户列表。"</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"允许应用获取手机已知的帐户列表。"</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"作为帐户身份验证程序"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"创建帐户并设置密码"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"允许应用使用 AccountManager 的帐户身份验证程序功能,包括创建帐户以及获取和设置其密码。"</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"管理帐户列表"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"添加或删除帐户"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"允许应用执行添加帐户、删除帐户、删除帐户密码等操作。"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"使用帐户的身份验证凭据"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"使用设备上的帐户"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"允许应用请求身份验证令牌。"</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"查看网络状态"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"查看网络连接"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"允许应用查看所有网络的状态。"</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"完全的互联网访问权限"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"允许应用创建网络套接字。"</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"允许应用更改绑定网络连接的状态。"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"更改后台数据使用设置"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"允许应用更改后台数据使用设置。"</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"查看 Wi-Fi 状态"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"查看 Wi-Fi 连接"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"允许应用查看有关 Wi-Fi 状态的信息。"</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"更改 Wi-Fi 状态"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"连接 Wi-Fi 和断开连接"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"允许应用与 Wi-Fi 接入点建立和断开连接,并对配置的 Wi-Fi 网络进行更改。"</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允许接收 Wi-Fi 多播"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"允许应用接收并非直接发送至您设备的数据包。在查找附近提供的服务时,此权限很有用。这种操作所耗电量大于非多播模式。"</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"蓝牙管理"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"访问蓝牙设置"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"允许应用配置本地蓝牙平板电脑,以及发现远程设备并进行配对。"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"允许应用配置本地蓝牙手机,以及发现远程设备并进行配对。"</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"查看 WiMAX 状态"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"查看 WiMAX 连接"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"允许该应用查看有关 WiMAX 状态的信息。"</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"更改 WiMAX 状态"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"允许该应用连接到 WiMAX 网络以及从 WiMAX 网络断开连接。"</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"创建蓝牙连接"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"与蓝牙设备配对"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"允许应用查看本地蓝牙平板电脑的配置,以及建立和接受与配对设备的连接。"</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"允许应用查看本地蓝牙手机的配置,以及建立和接受与配对设备的连接。"</string> <string name="permlab_nfc" msgid="4423351274757876953">"控制近距离通信"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"允许应用与近距离无线通信 (NFC) 标记、卡和阅读器进行通信。"</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"停用键锁"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"停用屏幕锁定"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"允许应用停用键锁和任何关联的密码安全设置。例如,在手机上接听电话时停用键锁,在通话结束后重新启用键锁。"</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"读取同步设置"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"允许应用读取同步设置,例如是否对“联系人”应用启用同步功能。"</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"写入同步设置"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"启用/停用同步"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"允许应用修改同步设置,例如是否对“联系人”应用启用同步功能。"</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"读取同步统计信息"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"允许应用读取同步统计信息;例如,已发生的同步历史记录。"</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"允许应用获取有关当前同步的 Feed 的详情。"</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"写入订阅的供稿"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"允许应用修改您当前同步的 Feed。恶意应用可能会更改您的同步 Feed。"</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"读取用户定义的词典"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"读取您已添加到该字典的字词"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"允许应用读取用户可能在用户词典中已存储的任意私有字词、名称和短语。"</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"写入用户定义的词典"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"允许应用向用户词典中写入新词。"</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"读取 USB 存储设备的内容"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"读取 SD 卡的内容"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"允许应用读取 USB 存储设备的内容。"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"允许应用读取 SD 卡的内容。"</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"修改/删除 USB 存储设备内容"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"修改/删除 SD 卡中的内容"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"读取您的 USB 存储设备中的内容"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"读取您的 SD 卡中的内容"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"允许该应用读取 USB 存储设备中的内容,其中可能包括照片和媒体。"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"允许该应用读取 SD 卡中的内容,其中可能包括照片和媒体。"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"修改或删除您的 USB 存储设备中的内容"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"修改或删除您的 SD 卡中的内容"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"允许应用写入 USB 存储设备。"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"允许应用写入 SD 卡。"</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"修改/删除内部媒体存储设备的内容"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"手机中无 SIM 卡"</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"请插入 SIM 卡"</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM 卡缺失或无法读取。请插入 SIM 卡。"</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"您的 SIM 卡已永久停用。"\n"请与您的无线服务提供商联系,以便重新获取一张 SIM 卡。"</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"“上一曲目”按钮"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"“下一曲目”按钮"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"字符"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"字"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"链接"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"行"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="AMPM">%P</xliff:g> <xliff:g id="HOUR">%-l</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="AMPM">%p</xliff:g> <xliff:g id="HOUR">%-l</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"出厂测试失败"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"行政区"</string> <string name="autofill_area" msgid="3547409050889952423">"区域"</string> <string name="autofill_emirate" msgid="2893880978835698818">"酋长国"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"读取浏览器的历史记录和书签"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"读取您的网络书签和历史记录"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"允许应用读取“浏览器”访问过的所有网址,以及“浏览器”的所有书签。"</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"写入浏览器的历史记录和书签"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"写入网络书签和历史记录"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"允许应用修改“浏览器”存储在平板电脑上的历史记录或书签。恶意应用可能借此删除或修改“浏览器”的数据。"</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"允许应用修改“浏览器”存储在手机上的历史记录或书签。恶意应用可能借此删除或修改“浏览器”的数据。"</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"在闹钟中设置警报"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"设置闹钟"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"允许应用在已安装的闹钟应用中设置闹钟。有些闹钟应用可能无法实现此功能。"</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"添加语音邮件"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"允许应用向您的语音信箱收件箱添加邮件。"</string> @@ -969,7 +1033,7 @@ <string name="smv_application" msgid="3307209192155442829">"“<xliff:g id="APPLICATION">%1$s</xliff:g>”应用(<xliff:g id="PROCESS">%2$s</xliff:g> 进程)违反了自我强制执行的严格模式 (StrictMode) 政策。"</string> <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_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_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_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"即将完成启动。"</string> <string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>正在运行"</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"设置"</string> <string name="date_time_done" msgid="2507683751759308828">"完成"</string> <string name="default_permission_group" msgid="2690160991405646128">"默认"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"新增:"</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"新增:"</font></string> <string name="no_permissions" msgid="7283357728219338112">"不需要任何权限"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"隐藏"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"全部显示"</b></string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index d57a6508a6bb..322b8bfe3f68 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"您的平板電腦將會關機。"</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"手機即將關機。"</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"您要關機嗎?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"重新啟動進入安全模式"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"您要重新啟動進入安全模式嗎?這會將您安裝的所有第三方應用程式全部停用。如要還原這些應用程式,只要再次重新啟動即可。"</string> <string name="recent_tasks_title" msgid="3691764623638127888">"最新的"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"沒有最近用過的應用程式。"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"平板電腦選項"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"您的簡訊"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"讀取及寫入您的簡訊、電子郵件和其他訊息。"</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"您的個人資訊"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"直接存取平板電腦上儲存的聯絡人和日曆。"</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"直接存取手機上的聯絡人與日曆。"</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"您的位置"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"監控您的實際位置。"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"網路通訊"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"存取各種網路功能。"</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"您的帳戶"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"存取可用帳戶。"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"硬體控制"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"系統低階存取與控制。"</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"開發工具"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"只有應用程式開發人員需要使用的功能。"</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"儲存"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"存取 USB 儲存裝置。"</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"存取 SD 卡。"</string> @@ -195,45 +261,47 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"允許應用程式以狀態列顯示。"</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"展開/收攏狀態列"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"允許應用程式展開或收合狀態列。"</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"攔截撥出電話"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"重設撥號路徑"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"允許應用程式處理撥出電話及更改撥打的號碼。請注意,惡意應用程式可能利用此功能監控、轉接或阻止撥出的電話。"</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"接收 SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"接收簡訊 (SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"允許應用程式接收及處理 SMS 簡訊。請注意,惡意應用程式可能利用此功能監視訊息,或在您讀取訊息前擅自將其刪除。"</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"接收 MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"接收簡訊 (MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"允許應用程式接收及處理 MMS 簡訊。請注意,惡意應用程式可能利用此功能監視您的訊息,或在您讀取訊息前擅自將其刪除。"</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"接收緊急廣播"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"允許應用程式接收及處理緊急廣播訊息,只有系統應用程式可以具備這項權限。"</string> <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"讀取區域廣播訊息"</string> - <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允許應用程式讀取您裝置接收的區域廣播訊息。某些地點會發出區域廣播警告,警告您發生緊急狀況。惡意應用程式可能會在裝置收到緊急區域廣播時,干擾裝置的效能或運作。"</string> + <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允許應用程式讀取您裝置收到的區域廣播訊息。某些地點會發出區域廣播警示,警告您有緊急狀況發生。請注意,惡意應用程式可能會在裝置收到緊急區域廣播時,干擾裝置的效能或運作。"</string> <string name="permlab_sendSms" msgid="5600830612147671529">"傳送 SMS 簡訊"</string> <string name="permdesc_sendSms" msgid="906546667507626156">"允許應用程式傳送 SMS 簡訊。請注意,惡意應用程式可能利用此功能擅自傳送簡訊,導致您必須支付大筆費用。"</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"不需經過確認即傳送 SMS 簡訊"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"允許應用程式傳送 SMS 簡訊。請注意,惡意應用程式可能利用此功能擅自傳送簡訊,導致您必須支付大筆費用。"</string> - <string name="permlab_readSms" msgid="4085333708122372256">"讀取 SMS 或 MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"讀取您的簡訊 (SMS 或 MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"允許應用程式讀取平板電腦或 SIM 卡上儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能讀取您的機密訊息。"</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"允許應用程式讀取手機或 SIM 卡上儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能讀取您的機密訊息。"</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"編輯 SMS 或 MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"編輯簡訊 (SMS 或 MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"允許應用程式編寫平板電腦或 SIM 卡中儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能刪除您的簡訊。"</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"允許應用程式寫入手機或 SIM 卡中儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能刪除您的簡訊。"</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"接收 WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"接收簡訊 (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"允許應用程式接收及處理 WAP 訊息。請注意,惡意應用程式可能利用此功能監視訊息,或在您讀取訊息前擅自將其刪除。"</string> <string name="permlab_getTasks" msgid="6466095396623933906">"擷取執行中的應用程式"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"允許應用程式取得最近執行任務的資訊。請注意,惡意應用程式可能利用此功能找出其他應用程式的隱私資訊。"</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"擷取執行中應用程式的詳細資訊"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"允許應用程式擷取目前及最近所執行任務的詳細資訊。請注意,惡意應用程式可能會找出其他應用程式的不公開資訊。"</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"重新排序正在執行的應用程式"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"允許應用程式將工作移至前景或背景。請注意,惡意應用程式可能利用此功能自行移動至前景。"</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"停止執行中的應用程式"</string> <string name="permdesc_removeTasks" msgid="1394714352062635493">"允許應用程式移除工作並終止執行工作的應用程式。請注意,惡意應用程式可能利用此功能干擾其他應用程式的行為。"</string> <string name="permlab_startAnyActivity" msgid="2918768238045206456">"啟動任何活動"</string> - <string name="permdesc_startAnyActivity" msgid="997823695343584001">"允許應用程式忽視權限保護或匯出狀態,啟動任何活動。"</string> + <string name="permdesc_startAnyActivity" msgid="997823695343584001">"不論權限保護或匯出狀態為何,一律允許應用程式啟動任何活動。"</string> <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"設定螢幕相容性"</string> <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"允許應用程式控制其他應用程式的螢幕相容性模式。惡意應用程式可能藉此破壞其他應用程式的正常運作。"</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"啟用應用程式偵錯"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"允許應用程式為其他程式開啟偵錯功能。提醒您,惡意應用程式可能會利用這個功能終止其他應用程式。"</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"變更介面設定"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"變更系統顯示設定"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"允許應用程式變更目前設定,例如地區設定或字型大小。"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"啟用行車模式"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"允許應用程式啟用車用模式。"</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"關閉背景程序"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"關閉其他應用程式"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"允許應用程式終止其他應用程式背景程序 (即使記憶體足夠)。"</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"強制停止其他應用程式"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"允許應用程式強制停止其他應用程式。"</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"允許應用程式在收到 WAP PUSH 訊息時發送通知。請注意,惡意應用程式可能利用此功能偽造 MMS 簡訊回條,或私自將網頁內容更換為惡意陷阱。"</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"執行程序限制數"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"允許應用程式控制可執行程序的數量上限 (一般應用程式不需使用)。"</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"關閉所有背景應用程式"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"強制關閉背景應用程式"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"允許應用程式控制活動是否隨時可於完成後立刻進入背景 (一般應用程式不需使用)。"</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"編輯電池狀態"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"允許應用程式修改收集到的電池使用統計資料 (不建議一般應用程式使用)。"</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"允許應用程式啟動完整備份確認使用者介面 (不建議任何應用程式使用)。"</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"顯示未授權視窗"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"允許應用程式為內部系統使用者介面建立視窗 (不建議一般應用程式使用)。"</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"顯示系統警示"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"描繪其他應用程式"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"允許應用程式顯示系統警告視窗。請注意,惡意應用程式可能利用此功能操控整個螢幕。"</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"編輯全域動畫速度"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"允許應用程式隨時變更全域的動畫速度 (更快或更慢)。"</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"允許應用程式授予或撤銷本身或其他應用程式的特定權限。注意,惡意應用程式可能藉此存取您未授予權限的功能。"</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"設定偏好的應用程式"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"允許應用程式修改您偏好的應用程式。請注意,惡意應用程式可能利用此功能擅自竄改執行的應用程式,並冒充現有的程式收集您的私人資料。"</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"編輯全域系統設定"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"修改系統設定"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"允許應用程式修改系統設定資料。請注意,惡意應用程式可能利用此功能破壞系統設定。"</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"編輯安全系統設定"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"允許應用程式修改系統安全設定資料 (不建議一般應用程式使用)。"</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"修改 Google 服務地圖"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"允許應用程式修改 Google 服務地圖 (不建議一般應用程式使用)。"</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"開機時自動啟用"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"啟動時執行"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"允許應用程式在系統完成開機程序後立即自行啟動。這會增加平板電腦的開機時間,而且會因為系統一直執行該應用程式導致平板電腦的整體運作速度變慢。"</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"允許應用程式在系統完成開機程序後立即自行啟動。這會增加手機的開機時間,而且會因為系統一直執行該應用程式導致手機的整體運作速度變慢。"</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"傳送附屬廣播"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"允許應用程式傳送記憶廣播,這類廣播在廣播動作結束後仍繼續存在。請注意,惡意應用程式可能利用此功能讓平板電腦使用過多的記憶體,導致平板電腦的執行速度變慢或不穩定。"</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"允許應用程式傳送記憶廣播,這類廣播在廣播動作結束後仍繼續存在。請注意,惡意應用程式可能利用此功能讓手機使用過多的記憶體,導致手機的執行速度變慢或不穩定。"</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"讀取聯絡人資料"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"輸入聯絡人資料"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"讀取您的聯絡人"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"允許應用程式讀取儲存在平板電腦中的所有聯絡人資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此將您的聯絡人資料傳送給其他人。"</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"允許應用程式讀取儲存在手機中的所有聯絡人資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此將您的聯絡人資料傳送給其他人。"</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"修改您的聯絡人"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"允許應用程式修改儲存在平板電腦中的資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此清除或修改您的聯絡人資料。"</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"允許應用程式修改儲存在手機中的資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此清除或修改您的聯絡人資料。"</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"讀取通話紀錄"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"允許應用程式讀取平板電腦的通話紀錄,包括來電和已撥電話相關資料。請注意,惡意應用程式可能濫用此功能將您的資料傳送給他人。"</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"允許應用程式讀取手機的通話紀錄,包括來電和已撥電話相關資料。請注意,惡意應用程式可能濫用此功能將您的資料傳送給他人。"</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"寫入通話紀錄"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"允許應用程式修改平板電腦的通話紀錄,包括來電和已撥電話相關資料。請注意,惡意應用程式可能濫用此功能刪除或修改您的通話紀錄。"</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"允許應用程式修改手機的通話紀錄,包括來電和已撥電話相關資料。請注意,惡意應用程式可能濫用此功能刪除或修改您的通話紀錄。"</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"讀取您的個人資料"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"讀取自己的聯絡資訊"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"允許應用程式讀取裝置上儲存的個人資料,例如您的姓名和聯絡資訊。這表示應用程式可以識別您的身分,並將您的個人資料傳送給他人。"</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"寫入您的個人資料"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"修改自己的聯絡資訊"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"允許應用程式新增或變更裝置上儲存的個人資料,例如您的姓名和聯絡資訊。這表示其他應用程式可以識別您的身分,並將您的個人資料傳送給他人。"</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"讀取您的社交串流"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"允許應用程式存取並同步處理您和好友的最新動態。請注意,惡意應用程式可能利用此功能讀取您和好友在社交網路上的私人通訊。"</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"強制重開機"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"允許應用程式強制重新啟動平板電腦。"</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"允許應用程式強制重新啟動手機。"</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"掛載/卸載檔案系統"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"存取 USB 儲存裝置檔案系統"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"存取 SD 卡檔案系統"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"允許應用程式掛接及卸載移除式儲存裝置的檔案系統。"</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"將外接式儲存裝置格式化"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"清除 USB 儲存裝置"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"清除 SD 卡"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"允許應用程式將卸除式儲存裝置格式化。"</string> <string name="permlab_asec_access" msgid="3411338632002193846">"取得內部儲存空間的資訊"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"允許應用程式取得內部儲存空間的資訊。"</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"允許應用程式掛接/卸載內部儲存空間。"</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"重新命名內部儲存空間"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"允許應用程式重新命名內部儲存空間。"</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"控制震動"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"控制震動"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"允許應用程式控制震動。"</string> <string name="permlab_flashlight" msgid="2155920810121984215">"控制閃光燈"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"允許應用程式控制閃光燈。"</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"允許應用程式告知系統哪個應用程式可以使用哪些小工具。啟用這項權限後,應用程式即會讓其他應用程式使用個人資料 (不建議一般應用程式使用)。"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手機狀態"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"允許應用程式控制裝置的電話功能。擁有這項權限的應用程式可在未通知您的情況下,任意切換網路、開啟或關閉手機無線電等。"</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"讀取手機狀態和識別碼"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"讀取手機狀態和識別碼"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"允許應用程式存取裝置的電話功能資料。擁有這項權限的應用程式可取得手機的號碼和序號、是否在通話中,以及通話另一方的電話號碼等資料。"</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"防止平板電腦進入休眠狀態"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"防止手機進入待命狀態"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"執行低階製造商測試,允許完全存取手機硬體。此功能只能在手機是製造商測試模式下才可執行。"</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"設定桌布"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"允許應用程式設定系統桌布。"</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"設定桌布大小提示"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"調整桌布大小"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"允許應用程式設定系統桌布大小的提示。"</string> <string name="permlab_masterClear" msgid="2315750423139697397">"將系統還原至出廠預設值"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"允許應用程式將系統設定全部重設回原廠設定,這表示所有資料、設定及安裝的應用程式都會遭到刪除。"</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"允許應用程式變更手機的時區。"</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"作為 AccountManagerService"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"允許應用程式呼叫 AccountAuthenticators。"</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"發現已知帳戶。"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"尋找裝置上的帳戶"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"允許應用程式取得平板電腦已知的帳戶清單。"</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"允許應用程式取得手機已知的帳戶清單。"</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"作為帳戶驗證器"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"建立帳戶及設定密碼"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"允許應用程式使用 AccountManager 的帳戶驗證器功能,包括建立帳戶、取得及設定帳戶密碼。"</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"管理帳戶清單"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"新增或移除帳戶"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"允許應用程式執行新增、移除帳戶和刪除帳戶密碼等作業。"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"使用帳戶的驗證認證"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"使用裝置上的帳戶"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"允許應用程式要求驗證憑證。"</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"查看網路狀態"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"查看網路連線"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"允許應用程式查看所有網路狀態。"</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"網際網路完整存取"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"允許應用程式建立網路通訊端。"</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"允許應用程式變更共用網路的連線狀態。"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"變更背景資料使用設定"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"允許應用程式變更背景資料使用設定。"</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"檢視 Wi-Fi 狀態"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"查看 WiFi 連線"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"允許應用程式查看 WiFi 狀態相關資訊。"</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"變更 Wi-Fi 狀態"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"建立及中斷 WiFi 連線"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"允許應用程式與 WiFi 存取點連線或中斷連線,並可變更 WiFi 網路設定。"</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允許接收 Wi-Fi 多點傳播封包"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"允許應用程式接收非指定傳送給您裝置的封包,這在您偵測到附近有服務可使用時相當實用,但消耗的電力比非多點傳播模式多。"</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"藍牙管理"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"存取藍牙設定"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"允許應用程式設定本機藍牙平板電腦,以及搜尋遠端裝置並配對連線。"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"允許應用程式設定本機藍牙手機,以及搜尋遠端裝置並配對連線。"</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"查看 WiMAX 狀態"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"查看 WiMAX 連線"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"允許應用程式查看 WiMax 狀態相關資訊。"</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"變更 WiMAX 狀態"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"允許應用程式建立或中斷 WiMAX 網路連線。"</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"建立藍牙連線"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"與藍牙裝置配對"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"允許應用程式查看本機藍牙平板電腦設定,並可建立及接受與其他配對裝置的連線。"</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"允許應用程式查看本機藍牙手機設定,並可建立及接受與其他配對裝置的連線。"</string> <string name="permlab_nfc" msgid="4423351274757876953">"控制近距離無線通訊"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"允許應用程式與近距離無線通訊 (NFC) 電子感應標籤、卡片及感應器進行通訊。"</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"停用按鍵鎖定"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"停用螢幕鎖定"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"允許應用程式停用按鍵鎖定以及其他相關的密碼安全性功能。例如:手機收到來電時停用按鍵鎖定,通話結束後重新啟用按鍵鎖定。"</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"讀取同步處理設定"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"允許應用程式讀取同步處理設定,例如:是否要同步處理「使用者」應用程式。"</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"編輯同步處理設定"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"開啟及關閉同步功能"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"允許應用程式修改同步處理設定,例如:是否要同步處理「使用者」應用程式。"</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"讀取同步處理狀態"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"允許應用程式讀取同步處理統計資料,例如已完成的同步處理記錄。"</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"允許應用程式取得目前已同步處理的資訊提供詳細資料。"</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"寫入訂閱資訊提供"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"允許應用程式修改目前已同步處理的資訊提供。請注意,惡意應用程式可能利用此功能變更已同步處理的資訊提供。"</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"讀取使用者定義的字典"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"讀取您加入字典的字詞"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"允許應用程式讀取使用者儲存在使用者字典內的任何私人字詞、名稱和詞組。"</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"寫入使用者定義的字典"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"允許應用程式將新字詞寫入使用者的字典。"</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"讀取 USB 儲存裝置的內容"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"讀取 SD 卡的內容"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"允許應用程式讀取 USB 儲存裝置的內容。"</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"允許應用程式讀取 SD 卡的內容。"</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"修改/刪除 USB 儲存裝置內容"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"修改/刪除 SD 卡的內容"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"讀取 USB 儲存裝置的內容"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"讀取 SD 卡的內容"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"允許應用程式讀取 USB 儲存裝置的內容 (可能含有相片和媒體)。"</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"允許應用程式讀取 SD 卡的內容 (可能含有相片和媒體)。"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"修改或刪除 USB 儲存裝置的內容"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"修改或刪除 SD 卡的內容"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"允許應用程式寫入 USB 儲存裝置。"</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"允許應用程式寫入 SD 卡。"</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"修改/刪除內部媒體儲存裝置內容"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"手機未插入 SIM 卡。"</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"插入 SIM 卡。"</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"找不到或無法讀取 SIM 卡。請插入 SIM 卡。"</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"您的 SIM 卡已遭永久停用。"\n"請與您的無線網路服務供應商聯絡,以取得其他 SIM 卡。"</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"[上一首曲目] 按鈕"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"[下一首曲目] 按鈕"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"字元"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"字詞"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"連結"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"行"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"出廠測試失敗"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"教區"</string> <string name="autofill_area" msgid="3547409050889952423">"區"</string> <string name="autofill_emirate" msgid="2893880978835698818">"大公國"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"讀取瀏覽器的記錄與書籤"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"讀取您的網路書籤和紀錄"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"允許應用程式讀取瀏覽器造訪過的所有網址,以及瀏覽器的所有書籤。"</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"寫入瀏覽器的記錄與書籤"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"寫入網路書籤和紀錄"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"允許應用程式修改平板電腦上儲存的瀏覽記錄或書籤。請注意,惡意應用程式可能利用此功能清除或修改您的瀏覽器資料。"</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"允許應用程式修改手機上儲存的瀏覽記錄或書籤。請注意,惡意應用程式可能利用此功能清除或修改您的瀏覽器資料。"</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"在鬧鐘應用程式中設定鬧鈴"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"設定鬧鐘"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"允許應用程式在安裝的鬧鐘應用程式中設定鬧鐘,某些鬧鐘應用程式可能無法執行這項功能。"</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"新增語音留言"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"允許應用程式將訊息新增至您的語音信箱收件匣。"</string> @@ -1033,8 +1097,8 @@ <string name="sms_control_no" msgid="625438561395534982">"拒絕"</string> <string name="sms_short_code_confirm_title" msgid="1666863092640877318">"傳送簡訊給短碼?"</string> <string name="sms_premium_short_code_confirm_title" msgid="3811263856304367838">"傳送付費簡訊?"</string> - <string name="sms_short_code_confirm_message" msgid="5616409294907295407">"<b></b>「<xliff:g id="APP_NAME">%1$s</xliff:g>」想要傳送簡訊給簡訊短碼 <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>。<p>傳送簡訊給簡訊短碼之後,系統即會從您的行動帳戶扣除付費服務的費用。<p>您要允許這個應用程式傳送簡訊嗎?"</string> - <string name="sms_premium_short_code_confirm_message" msgid="6214083016284738667">"<b></b>「<xliff:g id="APP_NAME">%1$s</xliff:g>」想要傳送簡訊給付費簡訊短碼 <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>。<p><b>傳送簡訊給這個對象之後,系統即會從您的行動帳戶扣除付費服務的費用。</b><p>您要允許這個應用程式傳送簡訊嗎?"</string> + <string name="sms_short_code_confirm_message" msgid="5616409294907295407">"<b></b>「<xliff:g id="APP_NAME">%1$s</xliff:g>」想要傳送簡訊給簡訊短碼 <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>。<p>將簡訊傳送給對方之後,系統即會從您的行動帳戶收取付費服務的費用。<p>您要允許這個應用程式傳送簡訊嗎?"</string> + <string name="sms_premium_short_code_confirm_message" msgid="6214083016284738667">"<b></b>「<xliff:g id="APP_NAME">%1$s</xliff:g>」想要傳送簡訊給付費簡訊短碼 <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>。<p><b>將簡訊傳送給對方之後,系統即會從您的行動帳戶收取付費服務的費用。</b><p>您要允許這個應用程式傳送簡訊嗎?"</string> <string name="sms_short_code_confirm_allow" msgid="8957573662645722940">"傳送簡訊"</string> <string name="sms_short_code_confirm_deny" msgid="6374609298084435887">"不要傳送"</string> <string name="sms_short_code_confirm_report" msgid="2588793956061677070">"檢舉惡意應用程式"</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"設定"</string> <string name="date_time_done" msgid="2507683751759308828">"完成"</string> <string name="default_permission_group" msgid="2690160991405646128">"預設值"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"新增:"</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"新增:"</font></string> <string name="no_permissions" msgid="7283357728219338112">"無須許可"</string> <string name="perms_hide" msgid="7283915391320676226"><b>" 隱藏"</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"顯示全部"</b></string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 0536fbeadbfc..63a95ead1412 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -146,10 +146,8 @@ <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Ithebhulethi yakho izocima."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Ifoni yakho izocima."</string> <string name="shutdown_confirm_question" msgid="2906544768881136183">"Ingabe ufuna ukucisha?"</string> - <!-- no translation found for reboot_safemode_title (7054509914500140361) --> - <skip /> - <!-- no translation found for reboot_safemode_confirm (55293944502784668) --> - <skip /> + <string name="reboot_safemode_title" msgid="7054509914500140361">"Qala kabusha emodini ephephile"</string> + <string name="reboot_safemode_confirm" msgid="55293944502784668">"Ingabe ufuna ukuqala kabusha kumodi ephephile? Lokhu kuzokhubaza zonke izinhlelo zokusebenza ezivela eceleni ozifakile. Zizobuyiswa uma uqala kabusha futhi."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"Okwakamuva"</string> <string name="no_recent_tasks" msgid="8794906658732193473">"Azikho izinhlelo zokusebenza zakamuva"</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"Okukhethwa konke kwethebhulethi"</string> @@ -170,12 +168,76 @@ <string name="permgrouplab_messages" msgid="7521249148445456662">"Imiyalezo yakho"</string> <string name="permgroupdesc_messages" msgid="7821999071003699236">"Funda futhi ubhale i-SMS yakho, i-imeyili, kanye neminye imiyalezo."</string> <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ukwaziswa kwakho komuntu siqu"</string> - <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Ukufinyelela okuqondile othintana nabo nekhalenda egcinwe kwithebhulethi yakho."</string> - <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Ukufinyelela okuqondile othintana nabo nekhalenda egcinwe efonini yakho."</string> + <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) --> + <skip /> + <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) --> + <skip /> + <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) --> + <skip /> <string name="permgrouplab_location" msgid="635149742436692049">"Indawo yakho"</string> <string name="permgroupdesc_location" msgid="5704679763124170100">"Gada indawo yakho yokuhlala"</string> <string name="permgrouplab_network" msgid="5808983377727109831">"Uxhumano lwenethiwekhi"</string> <string name="permgroupdesc_network" msgid="4478299413241861987">"Finyelela kokuqukethwe inethiwekhi okuhlukahlukee."</string> + <!-- no translation found for permgrouplab_shortRangeNetwork (4504840216096355984) --> + <skip /> + <!-- no translation found for permgroupdesc_shortRangeNetwork (8821013030346680806) --> + <skip /> + <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) --> + <skip /> + <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) --> + <skip /> + <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) --> + <skip /> + <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) --> + <skip /> + <!-- no translation found for permgrouplab_calendar (5863508437783683902) --> + <skip /> + <!-- no translation found for permgroupdesc_calendar (5777534316982184416) --> + <skip /> + <!-- no translation found for permgrouplab_dictionary (8114410334955871144) --> + <skip /> + <!-- no translation found for permgroupdesc_dictionary (40926483968949978) --> + <skip /> + <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) --> + <skip /> + <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) --> + <skip /> + <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) --> + <skip /> + <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) --> + <skip /> + <!-- no translation found for permgrouplab_voicemail (4162237145027592133) --> + <skip /> + <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) --> + <skip /> + <!-- no translation found for permgrouplab_microphone (171539900250043464) --> + <skip /> + <!-- no translation found for permgroupdesc_microphone (7106618286905738408) --> + <skip /> + <!-- no translation found for permgrouplab_camera (4820372495894586615) --> + <skip /> + <!-- no translation found for permgroupdesc_camera (2933667372289567714) --> + <skip /> + <!-- no translation found for permgrouplab_appInfo (8028789762634147725) --> + <skip /> + <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) --> + <skip /> + <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) --> + <skip /> + <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) --> + <skip /> + <!-- no translation found for permgrouplab_systemClock (406535759236612992) --> + <skip /> + <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) --> + <skip /> + <!-- no translation found for permgrouplab_statusBar (2095862568113945398) --> + <skip /> + <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) --> + <skip /> + <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) --> + <skip /> + <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) --> + <skip /> <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ama-akhawunti akho"</string> <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Finyelela kuma-akhawunti atholakalayo"</string> <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Izilawuli zezingxenyekazi zekhompyutha"</string> @@ -186,6 +248,10 @@ <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Ukufinyelela kwezinga eliphansi nokulawula uhlelo."</string> <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Amathuluzi okuthuthukisa"</string> <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Okuqukethwe okudingakela abasunguli bensiza kuphela."</string> + <!-- no translation found for permgrouplab_display (4279909676036402636) --> + <skip /> + <!-- no translation found for permgroupdesc_display (6051002031933013714) --> + <skip /> <string name="permgrouplab_storage" msgid="1971118770546336966">"Isitoreji"</string> <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Finyelela kwisitoreji se-USB."</string> <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Finyelela ikhadi le-SD."</string> @@ -195,11 +261,11 @@ <string name="permdesc_statusBarService" msgid="716113660795976060">"Ivumela uhlelo lokusebenza ukuthi lube umudwa ochaza ngesimo."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"khulisa/nciphisa ibha yomumo"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ivumela insiza ukuthi ikhulise noma inciphise umudwa ochza ngesimo."</string> - <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"Vimbela izincingo eziphumayo"</string> + <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"thumela amakholi aphumayo kabusha"</string> <string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Ivumela ukuth insiza isebenze izingcingo ezphumayo iphinde futhi iguqule inombolo eshayelwayo. Izinsiza ezinobungozi zingabheka, zithumele kabusha noma zivimbe izingcingo eziphumayo."</string> - <string name="permlab_receiveSms" msgid="2697628268086208535">"thola i-SMS"</string> + <string name="permlab_receiveSms" msgid="8673471768947895082">"thola imiyalezo ebhaliwe (i-SMS)"</string> <string name="permdesc_receiveSms" msgid="8107887121893611793">"Ivumela ukuthi insiza yamukele iphinde isebenze imiyalezo ye-SMS. Izinsiza ezinobungozi zingabheka imiyalezo yakho noma ziyisuse ngaphandle kokuthi zikukhombise."</string> - <string name="permlab_receiveMms" msgid="8894700916188083287">"thola i-MMS"</string> + <string name="permlab_receiveMms" msgid="1821317344668257098">"thola imiyalezo ebhaliwe (i-MMS)"</string> <string name="permdesc_receiveMms" msgid="1424805308566612086">"Ivumela ukuthi insiza yamukele iphinde isebenze imiyalezo ye-MMS. Izinsiza ezinobungozi zingabheka imiyalezo yakho noma ziyisuse ziyikhombisa wena."</string> <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"yamukela ukusakazwa okuphuthumayo"</string> <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Ivumela insiza ukuthi yamukele iphinde isebenze ukusakakwa kwemiyalezo yezokuphuthumayo. Imvume itholakla ezinsizeni zesistimu kuphela."</string> @@ -209,16 +275,18 @@ <string name="permdesc_sendSms" msgid="906546667507626156">"Ivumela insiza ukuthi ithumele imiyalezo ye-SMS. Izinsiza ezinobungozi zingakudla ephaketheni ngokuthi zithuele imiyalezo ngaphandle kokuqinisekisa kwakho."</string> <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"thumela i-SMS engenakuqinisekiswa"</string> <string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Ivumela insiza ukuthi ithuele iiyalezo ye-SMS. Izinsiza ezinobungozi zingakudla ephaketheni ngokuthi zithuele imiyalezo ngaphandle kwemvume yakho."</string> - <string name="permlab_readSms" msgid="4085333708122372256">"funda i-SMS noma i-MMS"</string> + <string name="permlab_readSms" msgid="8745086572213270480">"funda imilayezo yakho ebhaliwe (i-SMS noma i-MMS)"</string> <string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Ivumela insiza ukuthi ifunde imiyalezo ye-SMS elondolozwe ekhompyutheni yakho yepeni noma kwi-SI khadi. Izinsiza ezinobungozi kungenzeka zifunde imiyalezo yakho eyimfihlo."</string> <string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Ivumela insiza ukuthi ifunde imiyalezo ye-SMS elondolozwe ocingweni lwakho noma kwi-SIM khadi. Izinsiza ezinobungozi kungenzeka zifunde imiyalezo yakho eyimfihlo."</string> - <string name="permlab_writeSms" msgid="6881122575154940744">"hlela i-SMS noma i-MMS"</string> + <string name="permlab_writeSms" msgid="3216950472636214774">"hlela imiyalezo yakho yombhalo (i-SMS noma i-MMS)"</string> <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Ivumela insiza ukuthi ibhale imiylezo ye-SMS egcinwe ekhompyutheni yakho yepeni noma kwikhadi lakho le-SIM. Izinsiza ezinobungozi zingayisusa imiyalezo yakho."</string> <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Ivumela insiza ukuthi ibhale imiylezo ye-SMS egcinwe ocingweni lwakh noma kwikhadi lakho le-SIM. Izinsiza ezinobungozi zingayisusa imiyalezo yakho."</string> - <string name="permlab_receiveWapPush" msgid="8258226427716551388">"thola i-WAP"</string> + <string name="permlab_receiveWapPush" msgid="5991398711936590410">"thola imiyalezo ebhaliwe (i-WAP)"</string> <string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Ivumela ukuthi insiza yamukele iphinde isebenze imiyalezo ye-WAP. Izinsiza ezinobungozi zingabheka imiyalezo yakho noma ziyisuse ngaphandle kokuthi zikukhombise."</string> <string name="permlab_getTasks" msgid="6466095396623933906">"thola izinsiza ezisebenzayo"</string> <string name="permdesc_getTasks" msgid="6608159250520381359">"Ivumela insiza uuthi ithole kabusha ulwazi mayelana nezinto ezenzeka manje nezisanda kwenzeka. Izinsiza ezinobungozi zingathola imininingwane eyimfihlo mayelana nezinye izinsiza."</string> + <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"thola kabusha imininingwane yezinhlelo zokusebenza ezisebenzayo"</string> + <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Ivumela uhlelo lokusebenza ukuthola kabusha ulwazi mayelana nezinto ezenzeka manje nezisanda kwenzeka. Izinhlelo zokusebenza ezingalungile zingathola imininingwane eyimfihlo mayelana nezinye izinhlelo zokusebenza."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"misa kabusha izinsiza ezisebenzayo"</string> <string name="permdesc_reorderTasks" msgid="4175137612205663399">"Ivumela insiza ukuthi ihambise izenzo ziye ngaphambili kanye nasemumva. Izinsiza ezinobungozi zingaziphoqelela ukuth iziye phambili ngaphandle kokulawula kwakho."</string> <string name="permlab_removeTasks" msgid="6821513401870377403">"misa izinsiza ezisebenzayo"</string> @@ -229,11 +297,11 @@ <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Ivumela uhlelo lokusebenza ukulawula imodi yokuhambelana kwesikrini kwezinye izinhlelo zokusebenza. Izinhlelo zokusebenza ezinonya zingase zephule ukuziphatha kwezinye izinhlelo zokusebenza."</string> <string name="permlab_setDebugApp" msgid="3022107198686584052">"vumela insiza ilungise inkinga"</string> <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Ivumela insiza ukuthi ivule uhlelo lokulungisa lwenye insiza. Izinsiza ezinobungozi zingasebenzisa lokhu ukubulala ezinye izinsiza."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"shintsha izilungiselelo zakho ze-UI"</string> + <string name="permlab_changeConfiguration" msgid="4162092185124234480">"guqula izilungiselo zohlelo zokubonisa"</string> <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Ivumela uhlelo lokusebenza ukushintsha ukumisa kwamanje, njengezici zakhona noma usayizi wefonti."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"vumela imodi yemoto"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ivumela insiza ukuthi yenze isimo semoto sisebenze."</string> - <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"bulala izinqubo zasemuva"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"vala ezinye izinhlelo zokusebenza"</string> <string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Ivumela insiza ukuthi ibulale okuqhubekw ngemumva kwezinye izinsiza ngisho ngabe imemori ayikho phansi."</string> <string name="permlab_forceStopPackages" msgid="2329627428832067700">"phoqelela ezinye izinsiza ukuthi zime"</string> <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Ivumela insiza ukuthi iphoze ezinye izinsiza ukuthi zime."</string> @@ -257,7 +325,7 @@ <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Ivumela insiza ukuthi isakaze isaziso sokuthi umyalezo we-WAP PUSH utholakele. Izinsiza ezinobungozi zingasebenzisa lokhu ukufoja ukutholakala kwemiyalezo ye-S noa zisuse okuqukethwe kwanoma iliphi ikhasi lewebhu eliqukethe okunobungozi."</string> <string name="permlab_setProcessLimit" msgid="2451873664363662666">"khawula inani lezinqubo ezisebenzayo"</string> <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Ivumela insiza ukuthi ilawule isibalo esikhulu sezinto eziqhubekayo eziyosebenza. Ayidingakeli izinsiza ezijwayelekile."</string> - <string name="permlab_setAlwaysFinish" msgid="238828158465736054">"sondeza zonke izinsiza zangemumva"</string> + <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"phoqa izinhlelo zokusebenza ezingemuva ukuthi zivaleke"</string> <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Ivumela izinsiza ukuthi zilawule ukuthi izehlakalo ziyaphela yini emumva kokuba ziye ngemumva. Akudingakeli izinsiza ezijwayelekile."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"guqula izibalo zebhetri"</string> <string name="permdesc_batteryStats" msgid="6835186932305744068">"Ivumela insiza ukuthi iguqule imininingwane yebhethri eqoqiwe. Akwenzelwe ukuthi kusetshenziswe izinsiza ezijwayelekile."</string> @@ -267,7 +335,7 @@ <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Ivumela insiza ukuthi iqalise ukuqinisekiswa okuphelele kwesipele kwe-UI. Akumelwe kusetshenziswe noma iyiphi insiza."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"bonisa amawindi angavunyelwe"</string> <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ivumela insiza ukuthi yakhe amawindi enzelwe ukuthi asetshenziswe inkundla yokusetshenziswa kwangaphakathi kwesistimu. Ayisethsnziswa izinsiza ezijwayelekile."</string> - <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"bonisa izaziso zezinga lesistimu"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"dweba phezulu kwezinye izinhlelo zokusebenza"</string> <string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Ivumela insiza ukuthi ibonise iwindi lokwaziseka kwesistimu. Izinsiza ezinobungozi zingathatha ukulawulwa kwaso sonke iskrini."</string> <string name="permlab_setAnimationScale" msgid="2805103241153907174">"guqula isivinini sokugqwayiza jikelele"</string> <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ivumela uhlelo lokusebenza ukushintsha isivinini sokugqwayiza jikelele (ukugqwayiza okusheshayo noma okulengayo) nganoma isiphi isikhathi."</string> @@ -329,37 +397,33 @@ <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Ivumela izinhlelo zokusebenza ukunika noma ukubuyisa izimvume ezithile zayo noma ezinye izinhlelo zokusebenza. Izinhlelo zokusebenza ezingalungile zingasebenzisa lokhu ukufinyelela izici ongazinikanga zona."</string> <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"setha izinsiza ezincamelwayo"</string> <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Ivuela insiza ukuthi iguqule izinsiza ezincanyelwayo. Izinsiza ezinobungozi zingashintsha izinsiz buthule ezisebenzyo okwenza ukuthi izinsiza zakho ezikhona zingasebenzi ukuthola ze zithole imininingwane yakho eyimfihlo."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"guqula izilungiselelo zohlelo jikelele"</string> + <string name="permlab_writeSettings" msgid="2226195290955224730">"guqula izilungiselelo zohlelo"</string> <string name="permdesc_writeSettings" msgid="7775723441558907181">"Ivumela insiza ukuthi iguqule i-data yezisetho zesistimu. Izinsiza ezinobungozi zingona ukusebenz kwesistimu yakho."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"guqula izilungiselelo zohlelo oluphephile"</string> <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Ivumela insiza ukuthi iguqule imioniningwane yezisetho zokuphepha kwesistimu. Ayisetshenziswa izinsiza ezijwayelekile."</string> <string name="permlab_writeGservices" msgid="2149426664226152185">"guqula ibalazwe lesevisi ye-Google"</string> <string name="permdesc_writeGservices" msgid="1287309437638380229">"Ivumela insiza ukuthi iguqule imephu yezinsizakalo ze-Google. Ayisetshenziswa izinsiza ezijwayelekile."</string> - <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"Ngokuzenzakalelayo qalisa"</string> + <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"qalisa esiqalisweni sezinhlelo"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Ivumela uhlelo lokusebenza ukuthi luziqalise ngokushesha emuva kokuba isistimu isiqedile ukubhutha. Lokhu kwenza ukuthi ithathe isikhathi esithe ukuba side ukuqalise ithebhulethi nokuvumela izinhlelo zokusebenza ukuthi inciphise yonke ithebhulethi ngokuthi isebenze njalo."</string> <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Ivumela insiza ukuthi iziqalise ngokushesha uma isistiu isiqedile ukubhutha. Lokhu kungenz ukuthi kuthathe isikhathi esithe ukuba side ukuqalisa ucingo nokuvuela insiz ukuthi inciphise ucingo lonke ngokuthi luhlale lusebenza."</string> <string name="permlab_broadcastSticky" msgid="7919126372606881614">"thumela ukusakaza okunamathelayo"</string> <string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Ivumela ukuthi insiza ithumele ukusakaza okunamathelayo, okusalayo emva kokuba ukusakazwa sekuphelile. Izinsiza ezinobungozi zingenzaa amakhompyutha epeni ukuthi ahambe kancane noma angasebenzi kahle ngokuthi asebenzise imemori enkulu kakhulu."</string> <string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Ivumela ukuthi insiza ithumele ukusakaza okunamathelayo, okusalayo emva kokuba ukusakazwa sekuphelile. Izinsiza ezinobungozi zingenzaa amakhompyutha epeni ukuthi ahambe kancane noma angasebenzi kahle ngokuthi asebenzise imemori enkulu kakhulu."</string> - <string name="permlab_readContacts" msgid="6219652189510218240">"funda idatha yothintana naye"</string> - <!-- no translation found for permdesc_readContacts (6370069055638209432) --> - <skip /> - <!-- no translation found for permdesc_readContacts (4093353182535351501) --> - <skip /> - <string name="permlab_writeContacts" msgid="644616215860933284">"bhala idatha yothintana naye"</string> - <!-- no translation found for permdesc_writeContacts (5495863352173533286) --> - <skip /> - <!-- no translation found for permdesc_writeContacts (6108469962248865715) --> - <skip /> + <string name="permlab_readContacts" msgid="8348481131899886131">"funda oxhumana nabo"</string> + <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Ivumela uhlelo lokusebenza ukufunda othintana nabo abagcinwe kwithebhulethi yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukuthumela idatha yakho yoxhumana nabo kwabanye abantu."</string> + <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Ivumela uhlelo lokusebenza ukufunda yonke idatha emayelana noxhumana nabo abagcinwe efonini yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukuthumela idatha yakho yoxhumana nabo kwabanye abantu."</string> + <string name="permlab_writeContacts" msgid="5107492086416793544">"shintsha oxhumana nabo"</string> + <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Ivumela uhlelo lokusebenza ukugugula idatha emayelana nabathintwayo bakho abagcinwe kwithebhulethi yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukusula noma ukuguqula idatha yakho yoxhunama nabo."</string> + <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Ivumela uhlelo lokusebenza ukugugula idatha emayelana nabathintwayo bakho abagcinwe efonini yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukusula noma ukuguqula idatha yakho yoxhumana nabo."</string> <string name="permlab_readCallLog" msgid="3478133184624102739">"funda irekhodi lamakholi"</string> <string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Ivumela uhlelo lokusebenza ukufunda irekhodi lamakholi lethubhulethi yakho, kufaka phakathi idatha mayelana namakholi angenayo naphumayo. Izinhlelo zikusebenza ezingalungile zingasebenzisa lokhu ukuthumela idatha kwabanye abantu."</string> <string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Ivumela uhlelo lokusebenza ukufunda irekhodi lamakholi akho, kufaka phakathi idatha mayelana namakholi aphumayo nangenayo. Izinhlelo zokusebenza ezingalungile zingasebenzisa lokhu ukuthumela idatha kwabanye abantu."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"bhala irekhodi lamakholi"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ivumela uhlelo lokusebenza ukushintsha ilogi yekholi yethebulethi yakho, kufaka phakathi idatha mayelana namakholi angenayo naphumayo. Izinhlelo zikusebenza ezingalungile zingasebenzisa lokhu ukusula noma ukushintsha irekhodi lwamakholi wakho."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ivumela uhlelo lokusebenza ukushintsha irekhodi lamakholi efoni yakho, kufaka phakathi idatha emayelana namakholi angenayo naphumayo. Izinhlelo zikusebenza ezingalungile zingasebenzisa lokhu ukusula noma ukushintsha irekhodi lwamakholi wakho."</string> - <string name="permlab_readProfile" msgid="6824681438529842282">"bhala imininingo yemininingwane yakho"</string> + <string name="permlab_readProfile" msgid="4701889852612716678">"funda ikhadi lakho lokuxhumana"</string> <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Ivumela insiza ukuthi ifunde ulwazi lomuntu lwephrofayli olugcinwe edivayisini yakho njengegama lakho kanye nemininingwane yokuxhumana nawe. Lokhu kuchaza ukuthi izinsa ingakuhlonza bese ithumelela abanye imininingwane yephrofayili yakho."</string> - <string name="permlab_writeProfile" msgid="4679878325177177400">"bhala imininingwane yemininingo yakho"</string> + <string name="permlab_writeProfile" msgid="907793628777397643">"guqula ikhadi lakho lokuxhumana"</string> <string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Ivumela insiza ukuthi iguqule noma yengezi ulwazi lomuntu lwephrofayli olugcinwe edivayisini yakho njengegama lakho kanye nemininingwane yokuxhumana nawe. Lokhu kuchaza ukuthi ezinye izinsiza zingakuhlonza bese zithumelela abanye imininingwane yephrofayili yakho."</string> <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"funda ngezindlela zakho zokuxhumana nabanye abantu"</string> <string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Ivumela insiza ukuthi ifinyelele iphinde ivumelanisa izaziso zokuxhumana nabanye abantu. Izinsiza ezinobungozi zingasebnzisa lokhu ukufunda ukuxhumana okuyimfihlo phakathi kwakho nabangani bakho."</string> @@ -400,9 +464,11 @@ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"phoqelela ifoni ukuba iqalise kabusha"</string> <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Ivumela uhlelo lokusebenza ukuphoqelela ithebhulethi ukuqalisa phansi."</string> <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Ivumela uhlelo lokusebenza ukuphoqelela ifoni ukuqalisa phansi."</string> - <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"khuphula futhi wehlise izinhlelo zefayela"</string> + <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"finyelela ohlelweni lokufayela lwe-USB"</string> + <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"finyelela ohlelweni lokufayela lwe-SD Card"</string> <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Ivumela izinhlelo ukugibelisa nokukwehlisa izinhlelo zefayela zokugcina okukhiphekayo."</string> - <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"fometha isitoreji sangaphandle"</string> + <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"susa okokulondoloza kwe-USB"</string> + <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"susa ikhadi le-SD"</string> <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Ivumela uhlelo lokusebenza ukufometha isitoreji esikhiphekayo."</string> <string name="permlab_asec_access" msgid="3411338632002193846">"thola ulwazi ngesitoreji sangaphakathi"</string> <string name="permdesc_asec_access" msgid="3094563844593878548">"Ivumela uhlelo lokusebenza ukuthola ukwaziswa ekugcineni kwangaphakathi."</string> @@ -414,7 +480,7 @@ <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Ivumela uhlelo ukukhuphula / ukwehlisa isitoreji sangaphakathi."</string> <string name="permlab_asec_rename" msgid="7496633954080472417">"yetha kabusha isitoreji sangaphakathi"</string> <string name="permdesc_asec_rename" msgid="1794757588472127675">"Ivumela uhlelo lokusebenza ukuqamba kabusha ukugcina kwangaphakathi."</string> - <string name="permlab_vibrate" msgid="7768356019980849603">"lawula isidlidliza"</string> + <string name="permlab_vibrate" msgid="7696427026057705834">"lawula ukudlidliza"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"Ivumela uhlelo lokusebenza ukulawula isidlidlizi."</string> <string name="permlab_flashlight" msgid="2155920810121984215">"lawula ukukhanya kwefulashi"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"Ivumela uhlelo lokusebenza ukulawula ukukhanya kwefuleshi."</string> @@ -439,7 +505,7 @@ <string name="permdesc_bindGadget" msgid="8261326938599049290">"Ivumela insiza ukuthi itshele isistimu ukuthi amaphi amawijethi angasetshenziswa yiyiphi insiza. Insiza enalemvume inganikez ukufinyelela kwi-data yomuntu kwezinye izinsiza. Ayisetshenziswa izinsiza ezijwayelekile."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"guqula isimo sefoni"</string> <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Ivumela ukuthi insiza ilawule okuqukethwe ocingweni edivayisini. Insiza enalemvume ingaguquguqula amanethwekhi, ivule umsakazo wocingo iphinde iwucishe kanye nokunye okufana nalokho ngaphandle kokukwazisa."</string> - <string name="permlab_readPhoneState" msgid="2326172951448691631">"funda isimo sefoni nokuhlonza"</string> + <string name="permlab_readPhoneState" msgid="9178228524507610486">"funda isimo sefoni kanye nesazisi"</string> <string name="permdesc_readPhoneState" msgid="5127767618743602782">"Ivumela insiza ukuthi ifinyelele ezintweni eziqukethwe ucingo edivayisini. Insiza enalemvume ingakwazi ukubona inombolo yocingo kanye nesiriyeli nombolo yalolocingo ngisho ngabe ucingo luyasebenza, inombolo ucingo oluxhunywe kuyo kanye nokufanayo."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"gwema ithebhulethi ukuba ingalali"</string> <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"gwema ifoni ukuba ingalali"</string> @@ -454,7 +520,7 @@ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Sebenzise njengokuhlola komkhiqizi wezinga eliphansi, uvumela ukufinyelela okugcwele ihadiwe yefoni. Itholakala kuphela lapho ifoni isebenza kwimodi yokuhlola yomkhiqizi."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"setha iphephadonga"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ivumela uhlelo lokusebenza ukumisa iphephadonga lohlelo."</string> - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"setha izixwayiso zosayizi wephephadonga"</string> + <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"shintsha usayizi wesithombe sakho sangemuva"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ivumela uhlelo lokusebenza ukuhlela izihlawumbisela zosayizi wephephadonga lohlelo."</string> <string name="permlab_masterClear" msgid="2315750423139697397">"setha kabusha kube okumisiwe kwemboni"</string> <string name="permdesc_masterClear" msgid="3665380492633910226">"Ivuela insiza ukuthi isethe kabusha isistiu ngokuphelele iyibuyisele ezisethweni eyafika nazo, isusa konke ukumisw kwemininingwane, kanye nezinsiza ezifakiwe."</string> @@ -466,16 +532,16 @@ <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Ivumela insiza ukuth iguqule isikhathi esisocingweni."</string> <string name="permlab_accountManagerService" msgid="4829262349691386986">"yenza njenge Nsizakalo Yemeneja ye-Akhawunti"</string> <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Ivumela insiza ukuthi ishaye izingcingo Kokokuqinisekisa Ama-akhawunti."</string> - <string name="permlab_getAccounts" msgid="4549918644233460103">"thola ama-akhawunti aziwayo"</string> + <string name="permlab_getAccounts" msgid="1086795467760122114">"thola ama-akhawunti edivayisini"</string> <string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Ivumela uhlelo lokusebenza ukuthi lithole uhlu lwama-akhawunti aziwa ithebhulethi."</string> <string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Ivumela insiza ukuthi ithole uhlu lwma-akhawunti aziwa ucingo."</string> - <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"izenza umqinisekisi we-akhawunti"</string> + <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"yakha ama-akhawunti bese usetha amaphasiwedi"</string> <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Ivumela uhlelo lokusebenza ukusebenzisa amakhono okufakazela ubuqiniso e-akhawunti Emeneja ye-Akhawunti, kuhlanganise ukwenza ama-akhawunti ngisho nokumisa amaphasiwedi ayo."</string> - <string name="permlab_manageAccounts" msgid="4440380488312204365">"phatha uhlu lwe-akhawunti"</string> + <string name="permlab_manageAccounts" msgid="4983126304757177305">"engeza noma ukhiphe ama-akhawunti"</string> <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Ivumela uhlelo lokusebenza ukwenza imisebenzi enjengokufaka, nokukhipha ama-akhawunti nokususa iphasiwedi yawo"</string> - <string name="permlab_useCredentials" msgid="6401886092818819856">"sebenzisa iziqinisekiso zokufakazela ubuqiniso ze-akhawunti"</string> + <string name="permlab_useCredentials" msgid="235481396163877642">"sebenzisa ama-akhawunti edivayisini"</string> <string name="permdesc_useCredentials" msgid="7984227147403346422">"Ivumela insiza ukuthi icele amathokheni okuqinisekisa."</string> - <string name="permlab_accessNetworkState" msgid="6865575199464405769">"buka isimo senethiwekhi"</string> + <string name="permlab_accessNetworkState" msgid="4951027964348974773">"buka ukuxhumeka kunethiwekhi"</string> <string name="permdesc_accessNetworkState" msgid="479772796952547198">"Ivumela insiza ukuthi ibheke isio sawo wonke amanethiwekhi."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"Ukufinyelela i-Inthanethi ngokugcwele"</string> <string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Ivumela insiza ukuthi yakhe amsokhethi enethiwekhi."</string> @@ -487,29 +553,29 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ivumela insiza ukuthi iguqule isimo sokuxhuaniseka kwenethiwekhi ehunyiwe."</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"shintsha idatha yasemuva yelungiselelo lokusebenzisa"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Ivumela uhlelo lokusebenza ukuthi luguqule izilungiselelo zemininingwane yokusetshenziswa kwedatha."</string> - <string name="permlab_accessWifiState" msgid="8100926650211034400">"buka isimo se-Wi-Fi"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"buka ukuxhumaneka kwi-Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="7770452658226256831">"Ivumela insiza ukuthi ibheke imininingwane emayelana nesimo se-Wi-Fi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"shintsha isimo se-WiFi"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"xhuma uphinde unqamule kwi-Wi-Fi"</string> <string name="permdesc_changeWifiState" msgid="7399961004537946240">"Ivumela uhlelo lokusebenza ukuxhuma nokungaxhumeki kumaphoyinti okungena e-Wi-Fi, nokwenza izinguquko ukumisa amanethiwekhi e-Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ivumela isamukeli se-Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Ivumela uhlelo lokusebenza ukuthola amaphakhethe ngokungaqondile angewona awedivaysi yakho. Lokhu kungaba usizo lapho uthola amasevisi anikezwa eduze. Kusebenzisa amandla amaninigi kunemodi yokungajikijeli okuningi."</string> - <string name="permlab_bluetoothAdmin" msgid="3606576270792236062">"ukubhalisela i-bluetooth"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"finyelela ezilungiselelweni ze-Bluetooth"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ivumela uhlelo lokusebenza ukumisa ithebhulethi ye-Bluetooth yasendawni, nokuthola nokubhanqanisa namadivaysi okulawula okukude."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ivumela uhlelo lokusebenza ukumisa ifoni ye-Bluetooth yasendawni, nokuthola nokubhanqanisa namadivaysi okulawula okukude."</string> - <string name="permlab_accessWimaxState" msgid="1232061307208861588">"Buka isimo se-WiMAX"</string> + <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Buka ukuxhumeka kwi-WiMAX"</string> <string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Ivumela insiza ukubuka ulwazi mayelana nesimo se-WiMAX."</string> <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Shintsha isimo se-WiMAX"</string> <string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Vumela insiza ukuthi ixhumaniseke futhi ibhonculeke kwinethiwekhi ye-WiMAX."</string> - <string name="permlab_bluetooth" msgid="8361038707857018732">"Dala uxhumano lwe-Bluetooth"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"matanisa namadivayisi e-Bluetooth"</string> <string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Ivumela insiza ukuthi ibheke ukumiswa kwe-Bluetooth ekhompyutheni yepeni, kanye nokwenza kanye nokwamukela ukuxhumaniseka nokwenziwa kwamadivayisi ukuthi asebenzisane."</string> <string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Ivumela insiza ukuthi ibheke ukumiswa kwe-Bluetooth ocingweni, kanye nokwenza kanye nokwamukela ukuxhumaniseka nokwenziwa kwamadivayisi ukuthi asebenzisane."</string> <string name="permlab_nfc" msgid="4423351274757876953">"lawula Uxhumano Lwenkambu Eseduze"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Ivuela insiza ukuthi ixhumane ne-Near Field Communication (NFC) amathegi, amakhadi kanye nezinhlelo zokufunda."</string> - <string name="permlab_disableKeyguard" msgid="4977406164311535092">"khubaza ukuvala ukhiye"</string> + <string name="permlab_disableKeyguard" msgid="3598496301486439258">"khubaza ukukhiya kwakho iskrini"</string> <string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Ivumela uhlelo lokusebenza ukuvimbela ukuvala ukhiye nanoma yikuphi ukuphepha kwephasiwedi okuhlobene. Isibonelo esisemthethweni salokhu ukuba ifoni ivimbele ukuvala ukhiye lapho ithola ikholi engenayo, bese ivumela futhi ukuvala ukhiye lapho ikholi isiqedile."</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"funda izilungiselelo zokuvumelanisa"</string> <string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Ivumela uhlelo lokusebenza ukuthi lifunde izilungiselelo zokuvumelanisa njengokuthi ukuvumelanise kuyasebenza yini kuhlelo lokusebenza Abantu."</string> - <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"bhala izilungiselelo zokuvumelanisa"</string> + <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"shintsha phakathi kokuvula kanye nokucisha ukuvumelanisa"</string> <string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Ivumela insiza ukuthi iguqule izinsiza zokuvumelanisa, kuze kube ukuthi insiza ivumelanisekela abantu."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"funda izibalo zokuvumelanisa"</string> <string name="permdesc_readSyncStats" msgid="3801971839939951678">"Ivumela uhlelo lokusebenza ukufunda izibalo zokuvumelanisa; isb., umlando wokuvumelanisa ovelile."</string> @@ -517,16 +583,16 @@ <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Ivumela insiza ukuthi ithole imininingwane mayelana namafidi avumelnisiwe njengamanje."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"bhala izifunzo ezikhokhelwayo"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ivumela insiza ukuthi iguqule amafidi akho avumelanisiwe njengamanje. Izinsiza ezinobungozi zingaguqula amafidi akho avumelanisiwe."</string> - <string name="permlab_readDictionary" msgid="8410247960433376352">"funda isichazamazwi esicacisiwe somsebenzisi"</string> + <string name="permlab_readDictionary" msgid="4107101525746035718">"funda imibandela oyengezile esichazimazwini"</string> <string name="permdesc_readDictionary" msgid="8977815988329283705">"Ivumela uhlelo lokusebenza ukufunda noma yimaphi amagama ayimfihlo, amagama nemisho leyo umsebenzisi ayigcine kwisichazamazwi somsebenzisi."</string> <string name="permlab_writeDictionary" msgid="2296383164914812772">"bhala kwisichazamazwi esicacisiwe somsebenzisi"</string> <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ivumela insiza ukuthi ibhale amagama amasha esichazinimazwi."</string> - <string name="permlab_sdcardRead" product="nosdcard" msgid="4086221374639183281">"funda okuqukethwe kwesitoreji se-USB"</string> - <string name="permlab_sdcardRead" product="default" msgid="8537875151845139539">"funda okuqukethwe kwekhadi le-SD"</string> - <string name="permdesc_sdcardRead" product="nosdcard" msgid="1055302898999352339">"Ivumela uhlelo lokusebenza ukufunda okuqukethwe kokugciniwe okufinyeleleka nge-USB."</string> - <string name="permdesc_sdcardRead" product="default" msgid="7947792373570683542">"Ivumela uhlelo lokusebenza ukufunda okuqukethwe kwekhadi le-SD."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"guqula/susa okuqukethwe isitoreji se-USB"</string> - <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"guqula/susa okuqukethwe kwekhadi le-SD"</string> + <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"funda okuqukethwe kokugciniwe kwakho okufinyeleleka nge-USD"</string> + <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"funda okuqukethwe ekhadini lakho le-SD"</string> + <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Ivumela uhlelo lokusebenza ukuthi lufunde okuqukethwe kwi-USB, okungabandakanya izithombe kanye nezingosi yezindaba."</string> + <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Ivumela uhlelo lokusebenza ukuthi lufunde okuqukethwe ikhadi le-SD, okungabandakanya izithombe kanye nengosi yezindaba."</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"guqula noma ususe okuqukethwe kwakho okugciniwe okufinyeleleka nge-USB"</string> + <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"guqula noma ususe okuqukethwe ekhadini lakho le-SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ivumela insiza ukuthi ibhalele ekulondolozweni kwe-USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Ivumela insiza ukuthi ibhalele ekhadini le-SD."</string> <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"guqula/susa okuqukethwe kwisitoreji semidiya yangaphakathi"</string> @@ -704,6 +770,8 @@ <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Alikho ikhadi le-SIM efonini."</string> <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Faka ikhadi le-SIM."</string> <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Ikhadi le-SIM alitholakali noma alifundeki. Sicela ufake ikhadi le-SIM."</string> + <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) --> + <skip /> <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"I-SIM khadi ykho isiyenziwe ukuthi ingasebenzi unomphela."\n" Xhumana nomhlinzeki wakho wokuxhumana okungenazintambo ukuze uthole enye i-SIM khadi."</string> <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Inkinombo yengoma yangaphambilini"</string> <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Inkinobho yengoma elandelayo"</string> @@ -746,14 +814,10 @@ <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> - <!-- no translation found for granularity_label_character (7336470535385009523) --> - <skip /> - <!-- no translation found for granularity_label_word (7075570328374918660) --> - <skip /> - <!-- no translation found for granularity_label_link (5815508880782488267) --> - <skip /> - <!-- no translation found for granularity_label_line (5764267235026120888) --> - <skip /> + <string name="granularity_label_character" msgid="7336470535385009523">"uhlamvu"</string> + <string name="granularity_label_word" msgid="7075570328374918660">"igama"</string> + <string name="granularity_label_link" msgid="5815508880782488267">"isixhumanisi"</string> + <string name="granularity_label_line" msgid="5764267235026120888">"ulayini"</string> <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> <string name="factorytest_failed" msgid="5410270329114212041">"Ukuhlola kwemboni kwehlulekile"</string> @@ -783,12 +847,12 @@ <string name="autofill_parish" msgid="8202206105468820057">"Parish"</string> <string name="autofill_area" msgid="3547409050889952423">"Indawo"</string> <string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"funda umlando Wesiphequluli namabhukimakhi"</string> + <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"funda amabhukhimakhi akho ewebhu kanye nomlando"</string> <string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Ivumela uhlelo lokusebenza ukufunda wonke ama-URL lawo Isiphequluli esiwavakashele, ngisho nawo wonke amabhukimakhi Esiphequluli."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"bhala umlando Wesiphequluli namabhukhimaki"</string> + <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"bhala amabhukhimakhi ewebhu kanye nomlando"</string> <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Ivumela insiza ukuthi iguqule ulando Wesiphequluli noma amabhukumaka agcinwe ekhompyutheni yakho yepeni. Izinsiza ezinobungozi zingasebenzisa lokhu ukususa noma ziguqule imininingwane Yesiphequluli sakho."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Ivumela insiza ukuthi iguqule umlando Wesiphequluli noma amabhukumaka agcinwe ocingweni lwakho. Izinsiza ezinobungozi zingasebenzisa lokhu ukususa noma ukuguqula imininingwane Yesiphequluli sakho."</string> - <string name="permlab_setAlarm" msgid="5924401328803615165">"misa i-alamu ewashini le-alamu"</string> + <string name="permlab_setAlarm" msgid="1379294556362091814">"setha i-alamu"</string> <string name="permdesc_setAlarm" msgid="316392039157473848">"Ivumela insiza ukuthi isethe i-alamu ensizeni efkiwe ye-alamu. Ezinye izinsiza ze-alamu kungenzeka zingakusebenzisi lokho."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"engeza imeyili yezwi"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ivumela uhlelo lokusebenza ukwengeza imiyalezo kwibhokisi lakho lemeyili yezwi."</string> @@ -1049,7 +1113,7 @@ <string name="date_time_set" msgid="5777075614321087758">"Hlela"</string> <string name="date_time_done" msgid="2507683751759308828">"Kwenziwe"</string> <string name="default_permission_group" msgid="2690160991405646128">"Okuzenzakalelayo"</string> - <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"OKUSHA: "</font></string> + <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"OKUSHA: "</font></string> <string name="no_permissions" msgid="7283357728219338112">"Ayikho imvume edingekayo"</string> <string name="perms_hide" msgid="7283915391320676226"><b>"Fihla "</b></string> <string name="perms_show_all" msgid="2671791163933091180"><b>"Bonisa konke"</b></string> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 0ac2ad747c02..b67751334dbf 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -198,7 +198,15 @@ (optionally) be granted to development applications. --> <flag name="development" value="0x20" /> </attr> - + + <!-- Flags indicating more context for a permission group. --> + <attr name="permissionGroupFlags"> + <!-- Set to indicate that this permission group contains permissions + protecting access to some information that is considered + personal to the user (such as contacts, e-mails, etc). --> + <flag name="personalInfo" value="0x0001" /> + </attr> + <!-- Specified the name of a group that this permission is associated with. The group must have been defined with the {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. --> @@ -895,6 +903,8 @@ <attr name="icon" /> <attr name="logo" /> <attr name="description" /> + <attr name="permissionGroupFlags" /> + <attr name="priority" /> </declare-styleable> <!-- The <code>permission-tree</code> tag declares the base of a tree of diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index acf63a190754..229f51818b26 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -271,8 +271,7 @@ <!-- Boolean indicating whether the wifi chipset supports background scanning mechanism. This mechanism allows the host to remain in suspend state and the dongle to actively scan and wake the host when a configured SSID is detected by the dongle. This chipset - capability can provide power savings when wifi needs to be always kept on. - The driver commands needed to support the feature are BGSCAN-START and BGSCAN-STOP --> + capability can provide power savings when wifi needs to be always kept on. --> <bool translatable="false" name="config_wifi_background_scan_support">false</bool> <!-- Integer indicating wpa_supplicant scan interval in milliseconds --> @@ -288,11 +287,6 @@ Default value is 2 minutes. --> <integer translatable="false" name="config_wifi_driver_stop_delay">120000</integer> - <!-- Flag indicating whether the keyguard should be bypassed when - the slider is open. This can be set or unset depending how easily - the slider can be opened (for example, in a pocket or purse). --> - <bool name="config_bypass_keyguard_if_slider_open">true</bool> - <!-- Flag indicating whether the we should enable the automatic brightness in Settings. Software implementation will be used if config_hardware_auto_brightness_available is not set --> <bool name="config_automatic_brightness_available">false</bool> @@ -375,11 +369,16 @@ <integer name="config_lidKeyboardAccessibility">0</integer> <!-- Indicate whether the lid state impacts the accessibility of - the physical keyboard. 0 means it doesn't, 1 means it is accessible + the navigation buttons. 0 means it doesn't, 1 means it is accessible when the lid is open, 2 means it is accessible when the lid is closed. The default is 0. --> <integer name="config_lidNavigationAccessibility">0</integer> + <!-- Indicate whether closing the lid causes the device to go to sleep and opening + it causes the device to wake up. + The default is false. --> + <bool name="config_lidControlsSleep">false</bool> + <!-- Control the behavior when the user long presses the power button. 0 - Nothing 1 - Global actions menu diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 392116f32727..f812822ce1a4 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -34,8 +34,8 @@ <dimen name="status_bar_height">25dip</dimen> <!-- Height of the bottom navigation / system bar. --> <dimen name="navigation_bar_height">48dp</dimen> - <!-- Height of the bottom navigation bar in portrait --> - <dimen name="navigation_bar_height_portrait">@dimen/navigation_bar_height</dimen> + <!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height --> + <dimen name="navigation_bar_height_landscape">48dp</dimen> <!-- Width of the navigation bar when it is placed vertically on the screen --> <dimen name="navigation_bar_width">42dp</dimen> <!-- Height of notification icons in the status bar --> @@ -194,7 +194,7 @@ <dimen name="activity_chooser_popup_min_width">200dip</dimen> <!-- The default gap between components in a layout. --> - <dimen name="default_gap">16dip</dimen> + <dimen name="default_gap">8dip</dimen> <!-- Text padding for dropdown items --> <dimen name="dropdownitem_text_padding_left">8dip</dimen> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 1a631efb0ff2..f06e30f98fe4 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -63,7 +63,6 @@ <java-symbol type="id" name="clearDefaultHint" /> <java-symbol type="id" name="contentPanel" /> <java-symbol type="id" name="customPanel" /> - <java-symbol type="id" name="dangerous_perms_list" /> <java-symbol type="id" name="datePicker" /> <java-symbol type="id" name="day" /> <java-symbol type="id" name="day_names" /> @@ -100,6 +99,7 @@ <java-symbol type="id" name="issued_on" /> <java-symbol type="id" name="left_icon" /> <java-symbol type="id" name="leftSpacer" /> + <java-symbol type="id" name="line1" /> <java-symbol type="id" name="line3" /> <java-symbol type="id" name="list_footer" /> <java-symbol type="id" name="list_item" /> @@ -117,17 +117,18 @@ <java-symbol type="id" name="new_app_action" /> <java-symbol type="id" name="new_app_description" /> <java-symbol type="id" name="new_app_icon" /> - <java-symbol type="id" name="new_perms_list" /> <java-symbol type="id" name="no_permissions" /> - <java-symbol type="id" name="non_dangerous_perms_list" /> <java-symbol type="id" name="numberpicker_input" /> <java-symbol type="id" name="old_app_action" /> <java-symbol type="id" name="old_app_description" /> <java-symbol type="id" name="old_app_icon" /> + <java-symbol type="id" name="overflow_title" /> <java-symbol type="id" name="package_label" /> <java-symbol type="id" name="packages_list" /> <java-symbol type="id" name="pause" /> + <java-symbol type="id" name="perms_list" /> <java-symbol type="id" name="perm_icon" /> + <java-symbol type="id" name="perm_name" /> <java-symbol type="id" name="permission_group" /> <java-symbol type="id" name="permission_list" /> <java-symbol type="id" name="pickers" /> @@ -163,9 +164,6 @@ <java-symbol type="id" name="sha256_fingerprint" /> <java-symbol type="id" name="share" /> <java-symbol type="id" name="shortcut" /> - <java-symbol type="id" name="show_more" /> - <java-symbol type="id" name="show_more_icon" /> - <java-symbol type="id" name="show_more_text" /> <java-symbol type="id" name="skip_button" /> <java-symbol type="id" name="slider_group" /> <java-symbol type="id" name="split_action_bar" /> @@ -1044,6 +1042,7 @@ <java-symbol type="layout" name="alert_dialog_progress" /> <java-symbol type="layout" name="always_use_checkbox" /> <java-symbol type="layout" name="app_permission_item" /> + <java-symbol type="layout" name="app_permission_item_old" /> <java-symbol type="layout" name="app_perms_summary" /> <java-symbol type="layout" name="calendar_view" /> <java-symbol type="layout" name="character_picker" /> @@ -1174,16 +1173,18 @@ <java-symbol type="attr" name="dialogTitleDecorLayout" /> <java-symbol type="attr" name="dialogTitleIconsDecorLayout" /> <java-symbol type="bool" name="config_allowAllRotations" /> - <java-symbol type="bool" name="config_bypass_keyguard_if_slider_open" /> + <java-symbol type="bool" name="config_annoy_dianne" /> <java-symbol type="bool" name="config_carDockEnablesAccelerometer" /> <java-symbol type="bool" name="config_deskDockEnablesAccelerometer" /> <java-symbol type="bool" name="config_disableMenuKeyInLockScreen" /> <java-symbol type="bool" name="config_enableLockBeforeUnlockScreen" /> <java-symbol type="bool" name="config_enableLockScreenRotation" /> + <java-symbol type="bool" name="config_lidControlsSleep" /> <java-symbol type="bool" name="config_reverseDefaultRotation" /> <java-symbol type="bool" name="config_showNavigationBar" /> <java-symbol type="bool" name="target_honeycomb_needs_options_menu" /> <java-symbol type="dimen" name="navigation_bar_height" /> + <java-symbol type="dimen" name="navigation_bar_height_landscape" /> <java-symbol type="dimen" name="navigation_bar_width" /> <java-symbol type="dimen" name="status_bar_height" /> <java-symbol type="drawable" name="ic_jog_dial_sound_off" /> @@ -1314,6 +1315,7 @@ <java-symbol type="string" name="lockscreen_password_wrong" /> <java-symbol type="string" name="lockscreen_pattern_instructions" /> <java-symbol type="string" name="lockscreen_pattern_wrong" /> + <java-symbol type="string" name="lockscreen_permanent_disabled_sim_message_short" /> <java-symbol type="string" name="lockscreen_permanent_disabled_sim_instructions" /> <java-symbol type="string" name="lockscreen_plugged_in" /> <java-symbol type="string" name="lockscreen_sim_locked_message" /> @@ -3589,24 +3591,13 @@ =============================================================== --> <public type="attr" name="isolatedProcess" id="0x010103a7" /> - <public type="attr" name="supportsRtl" id="0x010103a8" /> - - <public type="attr" name="textDirection"/> - <public type="attr" name="textAlignment"/> - - <public type="attr" name="layoutDirection" /> - - <public type="attr" name="paddingStart"/> - <public type="attr" name="paddingEnd"/> - - <public type="attr" name="layout_marginStart"/> - <public type="attr" name="layout_marginEnd"/> <public type="attr" name="kcm"/> - <public type="attr" name="parentActivityName" /> <public type="attr" name="importantForAccessibility"/> <public type="attr" name="canHandleGestures"/> + <public type="attr" name="permissionGroupFlags"/> + </resources> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 213f6923b814..3250507b500f 100755 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -390,11 +390,12 @@ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> <string name="permgrouplab_personalInfo">Your personal information</string> <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permgroupdesc_personalInfo" product="tablet">Direct access to your contacts - and calendar stored on the tablet.</string> + <string name="permgroupdesc_personalInfo">Direct access to information about you, stored in on your contact card.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_socialInfo">Your social information</string> <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permgroupdesc_personalInfo" product="default">Direct access to your contacts - and calendar stored on the phone.</string> + <string name="permgroupdesc_socialInfo">Direct access to information about your contacts and social connections.</string> <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> <string name="permgrouplab_location">Your location</string> @@ -407,6 +408,81 @@ <string name="permgroupdesc_network">Access various network features.</string> <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_shortRangeNetwork">Bluetooth and NFC</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_shortRangeNetwork">Access Bluetooth or NFC networks and devices.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_audioSettings">Audio Settings</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_audioSettings">Change audio settings.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_affectsBattery">Affects Battery</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_affectsBattery">Use features that can quickly drain battery.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_calendar">Calendar</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_calendar">Direct access to calendar and events.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_dictionary">User Dictionary</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_dictionary">Direct access to the user dictionary.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_bookmarks">Bookmarks and History</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_bookmarks">Direct access to bookmarks and browser history.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_deviceAlarms">Alarm</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_deviceAlarms">Set the alarm clock.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_voicemail">Voicemail</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_voicemail">Direct access to voicemail.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_microphone">Microphone</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_microphone">Direct access to the microphone to record audio.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_camera">Camera</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_camera">Direct access to camera for image or video capture.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_appInfo">Your applications information</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_appInfo">Ability to affect behavior of other applications on your device.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_wallpaper">Wallpaper</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_wallpaper">Change the device wallpaper settings.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_systemClock">Clock</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_systemClock">Change the device time or timezone.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_statusBar">Status Bar</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_statusBar">Change the device status bar settings.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_syncSettings">Sync Settings</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_syncSettings">Access to the sync settings.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> <string name="permgrouplab_accounts">Your accounts</string> <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> <string name="permgroupdesc_accounts">Access the available accounts.</string> @@ -432,6 +508,11 @@ <string name="permgroupdesc_developmentTools">Features only needed for app developers.</string> <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgrouplab_display">Other Application UI</string> + <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permgroupdesc_display">Effect the UI of other applications.</string> + + <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. --> <string name="permgrouplab_storage">Storage</string> <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> <string name="permgroupdesc_storage" product="nosdcard">Access the USB storage.</string> @@ -456,21 +537,21 @@ <string name="permdesc_expandStatusBar">Allows the app to expand or collapse the status bar.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_processOutgoingCalls">intercept outgoing calls</string> + <string name="permlab_processOutgoingCalls">reroute outgoing calls</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_processOutgoingCalls">Allows the app to process outgoing calls and change the number to be dialed. Malicious apps may monitor, redirect, or prevent outgoing calls.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_receiveSms">receive SMS</string> + <string name="permlab_receiveSms">receive text messages (SMS)</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_receiveSms">Allows the app to receive and process SMS messages. Malicious apps may monitor your messages or delete them without showing them to you.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_receiveMms">receive MMS</string> + <string name="permlab_receiveMms">receive text messages (MMS)</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_receiveMms">Allows the app to receive and process MMS messages. Malicious apps may monitor @@ -507,7 +588,7 @@ messages without your confirmation.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_readSms">read SMS or MMS</string> + <string name="permlab_readSms">read your text messages (SMS or MMS)</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readSms" product="tablet">Allows the app to read SMS messages stored on your tablet or SIM card. Malicious apps @@ -518,7 +599,7 @@ may read your confidential messages.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_writeSms">edit SMS or MMS</string> + <string name="permlab_writeSms">edit your text messages (SMS or MMS)</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_writeSms" product="tablet">Allows the app to write to SMS messages stored on your tablet or SIM card. Malicious apps @@ -529,7 +610,7 @@ may delete your messages.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_receiveWapPush">receive WAP</string> + <string name="permlab_receiveWapPush">receive text messages (WAP)</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_receiveWapPush">Allows the app to receive and process WAP messages. Malicious apps may monitor @@ -539,7 +620,7 @@ <string name="permlab_getTasks">retrieve running apps</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_getTasks">Allows the app to retrieve - information about currently and recently running tasks. Malicious apps may + information about currently and recently running tasks. Malicious apps may discover private information about other apps.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=50] --> @@ -583,7 +664,7 @@ to kill other apps.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_changeConfiguration">change your UI settings</string> + <string name="permlab_changeConfiguration">change system display settings</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_changeConfiguration">Allows the app to change the current configuration, such as the locale or overall font @@ -596,7 +677,7 @@ enable the car mode.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_killBackgroundProcesses">kill background processes</string> + <string name="permlab_killBackgroundProcesses">close other apps</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_killBackgroundProcesses">Allows the app to kill background processes of other apps, even if memory @@ -681,7 +762,7 @@ needed for normal apps.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_setAlwaysFinish">make all background apps close</string> + <string name="permlab_setAlwaysFinish">force background apps to close</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_setAlwaysFinish">Allows the app to control whether activities are always finished as soon as they @@ -690,7 +771,7 @@ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_batteryStats">modify battery statistics</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permdesc_batteryStats">Allows the app to modify + <string name="permdesc_batteryStats">Allows the app to modify collected battery statistics. Not for use by normal apps.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> @@ -711,7 +792,7 @@ user interface. Not for use by normal apps.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_systemAlertWindow">display system-level alerts</string> + <string name="permlab_systemAlertWindow">draw over other apps</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_systemAlertWindow">Allows the app to show system alert windows. Malicious apps may take over the @@ -920,7 +1001,7 @@ existing apps to collect private data from you.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_writeSettings">modify global system settings</string> + <string name="permlab_writeSettings">modify system settings</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_writeSettings">Allows the app to modify the system\'s settings data. Malicious apps may corrupt your system\'s @@ -937,7 +1018,7 @@ Google services map. Not for use by normal apps.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_receiveBootCompleted">automatically start at boot</string> + <string name="permlab_receiveBootCompleted">run at startup</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_receiveBootCompleted" product="tablet">Allows the app to have itself started as soon as the system has finished booting. @@ -963,7 +1044,7 @@ to use too much memory.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_readContacts">read contact data</string> + <string name="permlab_readContacts">read your contacts</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readContacts" product="tablet">Allows the app to read all the data about your contacts stored on your tablet, including the frequency @@ -980,7 +1061,7 @@ other people.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_writeContacts">write contact data</string> + <string name="permlab_writeContacts">modify your contacts</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_writeContacts" product="tablet">Allows the app to modify the data about your contacts stored on your tablet, including the frequency @@ -1014,14 +1095,14 @@ <!-- Title of the read profile permission, listed so the user can decide whether to allow the application to read the user's personal profile data. [CHAR LIMIT=30] --> - <string name="permlab_readProfile">read your profile data</string> + <string name="permlab_readProfile">read your own contact card</string> <!-- Description of the read profile permission, listed so the user can decide whether to allow the application to read the user's personal profile data. [CHAR LIMIT=NONE] --> <string name="permdesc_readProfile" product="default">Allows the app to read personal profile information stored on your device, such as your name and contact information. This means the app can identify you and send your profile information to others.</string> <!-- Title of the write profile permission, listed so the user can decide whether to allow the application to write to the user's personal profile data. [CHAR LIMIT=30] --> - <string name="permlab_writeProfile">write to your profile data</string> + <string name="permlab_writeProfile">modify your own contact card</string> <!-- Description of the write profile permission, listed so the user can decide whether to allow the application to write to the user's personal profile data. [CHAR LIMIT=NONE] --> <string name="permdesc_writeProfile" product="default">Allows the app to change or add to personal profile information stored on your device, such as your name and contact @@ -1045,18 +1126,18 @@ <string name="permlab_readCalendar">read calendar events plus confidential information</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readCalendar" product="tablet">Allows the app to read all calendar - events stored on your tablet, including those of friends or coworkers. Malicious apps + events stored on your tablet, including those of friends or coworkers. Malicious apps may extract personal information from these calendars without the owners\' knowledge.</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readCalendar" product="default">Allows the app to read all calendar - events stored on your phone, including those of friends or coworkers. Malicious apps + events stored on your phone, including those of friends or coworkers. Malicious apps may extract personal information from these calendars without the owners\' knowledge.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_writeCalendar">add or modify calendar events and send email to guests without owners\' knowledge</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_writeCalendar">Allows the app to send event invitations as the calendar owner and add, remove, - change events that you can modify on your device, including those of friends or co-workers. Malicious apps + change events that you can modify on your device, including those of friends or co-workers. Malicious apps may send spam emails that appear to come from calendar owners, modify events without the owners\' knowledge, or add fake events.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> @@ -1151,14 +1232,19 @@ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_reboot" product="default">Allows the app to force the phone to reboot.</string> + + <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> + <string name="permlab_mount_unmount_filesystems" product="nosdcard">access USB storage filesystem</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_mount_unmount_filesystems">mount and unmount filesystems</string> + <string name="permlab_mount_unmount_filesystems" product="default">access SD Card filesystem</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_mount_unmount_filesystems">Allows the app to mount and unmount filesystems for removable storage.</string> + <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> + <string name="permlab_mount_format_filesystems" product="nosdcard">erase USB storage</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_mount_format_filesystems">format external storage</string> + <string name="permlab_mount_format_filesystems" product="default">erase SD Card</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_mount_format_filesystems">Allows the app to format removable storage.</string> @@ -1188,7 +1274,7 @@ <string name="permdesc_asec_rename">Allows the app to rename internal storage.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_vibrate">control vibrator</string> + <string name="permlab_vibrate">control vibration</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_vibrate">Allows the app to control the vibrator.</string> @@ -1267,7 +1353,7 @@ you.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_readPhoneState">read phone state and identity</string> + <string name="permlab_readPhoneState">read phone status and identity</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readPhoneState">Allows the app to access the phone features of the device. An app with this permission can determine the phone @@ -1310,7 +1396,7 @@ <string name="permdesc_setWallpaper">Allows the app to set the system wallpaper.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_setWallpaperHints">set wallpaper size hints</string> + <string name="permlab_setWallpaperHints">adjust your wallpaper size</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_setWallpaperHints">Allows the app to set the system wallpaper size hints.</string> @@ -1341,14 +1427,14 @@ <string name="permdesc_accountManagerService">Allows the app to make calls to AccountAuthenticators.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_getAccounts">discover known accounts</string> + <string name="permlab_getAccounts">find accounts on the device</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_getAccounts" product="tablet">Allows the app to get the list of accounts known by the tablet.</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_getAccounts" product="default">Allows the app to get the list of accounts known by the phone.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_authenticateAccounts">act as an account authenticator</string> + <string name="permlab_authenticateAccounts">create accounts and set passwords</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_authenticateAccounts">Allows the app to use the account authenticator capabilities of the @@ -1356,19 +1442,19 @@ setting their passwords.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_manageAccounts">manage the accounts list</string> + <string name="permlab_manageAccounts">add or remove accounts</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_manageAccounts">Allows the app to perform operations like adding and removing accounts, and deleting their password.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_useCredentials">use the authentication credentials of an account</string> + <string name="permlab_useCredentials">use accounts on the device</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_useCredentials">Allows the app to request authentication tokens.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_accessNetworkState">view network state</string> + <string name="permlab_accessNetworkState">view network connections</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_accessNetworkState">Allows the app to view the state of all networks.</string> @@ -1400,12 +1486,12 @@ <string name="permdesc_changeBackgroundDataSetting">Allows the app to change the background data usage setting.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_accessWifiState">view Wi-Fi state</string> + <string name="permlab_accessWifiState">view Wi-Fi connections</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_accessWifiState">Allows the app to view the information about the state of Wi-Fi.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_changeWifiState">change Wi-Fi state</string> + <string name="permlab_changeWifiState">connect and disconnect from Wi-Fi</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_changeWifiState">Allows the app to connect to and disconnect from Wi-Fi access points, and to make changes to configured Wi-Fi networks.</string> @@ -1419,7 +1505,7 @@ than the non-multicast mode.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_bluetoothAdmin">Bluetooth administration</string> + <string name="permlab_bluetoothAdmin">access Bluetooth settings</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_bluetoothAdmin" product="tablet">Allows the app to configure the local Bluetooth tablet, and to discover and pair with remote @@ -1428,13 +1514,13 @@ <string name="permdesc_bluetoothAdmin" product="default">Allows the app to configure the local Bluetooth phone, and to discover and pair with remote devices.</string> - <string name="permlab_accessWimaxState">View WiMAX state</string> + <string name="permlab_accessWimaxState">View WiMAX connections</string> <string name="permdesc_accessWimaxState">Allows the app to view the information about the state of WiMAX.</string> <string name="permlab_changeWimaxState">Change WiMAX state</string> <string name="permdesc_changeWimaxState">Allows the app to connect to and disconnect from WiMAX network.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_bluetooth">create Bluetooth connections</string> + <string name="permlab_bluetooth">pair with Bluetooth devices</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_bluetooth" product="tablet">Allows the app to view the configuration of the local Bluetooth tablet, and to make and accept @@ -1451,7 +1537,7 @@ with Near Field Communication (NFC) tags, cards, and readers.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_disableKeyguard">disable keylock</string> + <string name="permlab_disableKeyguard">disable your screen lock</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_disableKeyguard">Allows the app to disable the keylock and any associated password security. A legitimate example of @@ -1465,7 +1551,7 @@ such as whether sync is enabled for the People app.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_writeSyncSettings">write sync settings</string> + <string name="permlab_writeSyncSettings">toggle sync on and off</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_writeSyncSettings">Allows the app to modify the sync settings, such as whether sync is enabled for the People app.</string> @@ -1488,7 +1574,7 @@ your currently synced feeds. Malicious apps may change your synced feeds.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_readDictionary">read user-defined dictionary</string> + <string name="permlab_readDictionary">read terms you added to the dictionary</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readDictionary">Allows the app to read any private words, names and phrases that the user may have stored in the user dictionary.</string> @@ -1500,18 +1586,18 @@ user dictionary.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> - <string name="permlab_sdcardRead" product="nosdcard">read USB storage contents</string> + <string name="permlab_sdcardRead" product="nosdcard">read the contents of your USB storage</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_sdcardRead" product="default">read SD card contents</string> + <string name="permlab_sdcardRead" product="default">read the contents of your SD card</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> - <string name="permdesc_sdcardRead" product="nosdcard">Allows the app to read contents of USB storage.</string> + <string name="permdesc_sdcardRead" product="nosdcard">Allows the app to read contents of USB storage, which may include photos and media.</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permdesc_sdcardRead" product="default">Allows the app to read contents of SD card.</string> + <string name="permdesc_sdcardRead" product="default">Allows the app to read contents of SD card, which may include photos and media.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> - <string name="permlab_sdcardWrite" product="nosdcard">modify/delete USB storage contents</string> + <string name="permlab_sdcardWrite" product="nosdcard">modify or delete the contents of your USB storage</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_sdcardWrite" product="default">modify/delete SD card contents</string> + <string name="permlab_sdcardWrite" product="default">modify or delete the contens of your SD card</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] --> <string name="permdesc_sdcardWrite" product="nosdcard">Allows the app to write to the USB storage.</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> @@ -1893,6 +1979,8 @@ <string name="lockscreen_missing_sim_instructions">Insert a SIM card.</string> <!-- Shown in the lock screen to ask the user to insert a SIM card when sim is missing or not readable. --> <string name="lockscreen_missing_sim_instructions_long">The SIM card is missing or not readable. Insert a SIM card.</string> + <!-- Shown in the lock screen when SIM card is permanently disabled. --> + <string name="lockscreen_permanent_disabled_sim_message_short">Unusable SIM card.</string> <!-- Shown in the lock screen to inform the user to SIM card is permanently disabled. --> <string name="lockscreen_permanent_disabled_sim_instructions">Your SIM card has been permanently disabled.\n Contact your wireless service provider for another SIM card.</string> @@ -2279,14 +2367,14 @@ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_readHistoryBookmarks">read Browser\'s history and bookmarks</string> + <string name="permlab_readHistoryBookmarks">read your Web bookmarks and history</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_readHistoryBookmarks">Allows the app to read all the URLs that the Browser has visited, and all of the Browser\'s bookmarks.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_writeHistoryBookmarks">write Browser\'s history and bookmarks</string> + <string name="permlab_writeHistoryBookmarks">write web bookmarks and history</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_writeHistoryBookmarks" product="tablet">Allows the app to modify the @@ -2300,7 +2388,7 @@ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permlab_setAlarm">set alarm in alarm clock</string> + <string name="permlab_setAlarm">set an alarm</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_setAlarm">Allows the app to set an alarm in @@ -2893,7 +2981,7 @@ <!-- Do not translate. --> <string name="permissions_format"><xliff:g id="perm_line1">%1$s</xliff:g>, <xliff:g id="perm_line2">%2$s</xliff:g></string> <!-- Text that is placed at the front of a permission name that is being added to an app [CHAR LIMIT=NONE] --> - <string name="perms_new_perm_prefix"><font size="12" fgcolor="#ffffa3a3">NEW: </font></string> + <string name="perms_new_perm_prefix"><font size="12" fgcolor="#ff900000">NEW: </font></string> <!-- Shown for an application when it doesn't require any permission grants. --> <string name="no_permissions">No permissions required</string> <!-- When installing an application, the less-dangerous permissions are hidden. If the user showed those, this is the text to hide them again. --> diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 71738add9f29..77dbaa57206d 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -174,6 +174,13 @@ please see themes_device_defaults.xml. <item name="windowActionModeOverlay">false</item> <item name="windowCloseOnTouchOutside">false</item> + <!-- Define these here; ContextThemeWrappers around themes that define them should + always clear these values. --> + <item name="windowFixedWidthMajor">0dp</item> + <item name="windowFixedWidthMinor">0dp</item> + <item name="windowFixedHeightMajor">0dp</item> + <item name="windowFixedHeightMinor">0dp</item> + <!-- Dialog attributes --> <item name="alertDialogStyle">@android:style/AlertDialog</item> <item name="dialogTheme">@android:style/Theme.Dialog</item> diff --git a/core/tests/coretests/res/raw/net_dev_typical b/core/tests/coretests/res/raw/net_dev_typical deleted file mode 100644 index 290bf03eb9b4..000000000000 --- a/core/tests/coretests/res/raw/net_dev_typical +++ /dev/null @@ -1,8 +0,0 @@ -Inter-| Receive | Transmit - face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed - lo: 8308 116 0 0 0 0 0 0 8308 116 0 0 0 0 0 0 -rmnet0: 1507570 2205 0 0 0 0 0 0 489339 2237 0 0 0 0 0 0 - ifb0: 52454 151 0 151 0 0 0 0 0 0 0 0 0 0 0 0 - ifb1: 52454 151 0 151 0 0 0 0 0 0 0 0 0 0 0 0 - sit0: 0 0 0 0 0 0 0 0 0 0 148 0 0 0 0 0 -ip6tnl0: 0 0 0 0 0 0 0 0 0 0 151 151 0 0 0 0 diff --git a/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical b/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical new file mode 100644 index 000000000000..656d5bb82da4 --- /dev/null +++ b/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical @@ -0,0 +1,4 @@ +ifname total_skb_rx_bytes total_skb_rx_packets total_skb_tx_bytes total_skb_tx_packets +rmnet2 4968 35 3081 39 +rmnet1 11153922 8051 190226 2468 +rmnet0 6824 16 5692 10 diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java index 8a5f8bb5f783..77e498613afc 100755 --- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java +++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java @@ -1229,9 +1229,8 @@ public class PackageManagerTests extends AndroidTestCase { installFromRawResource("install.apk", R.raw.install_loc_unspecified, PackageManager.INSTALL_FORWARD_LOCK | - PackageManager.INSTALL_EXTERNAL, true, true, - PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION, - PackageInfo.INSTALL_LOCATION_UNSPECIFIED); + PackageManager.INSTALL_EXTERNAL, true, false, -1, + PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL); } @LargeTest @@ -1626,8 +1625,8 @@ public class PackageManagerTests extends AndroidTestCase { int installFlags = PackageManager.INSTALL_FORWARD_LOCK; int moveFlags = PackageManager.MOVE_EXTERNAL_MEDIA; - boolean fail = true; - int result = PackageManager.MOVE_FAILED_FORWARD_LOCKED; + boolean fail = false; + int result = PackageManager.MOVE_SUCCEEDED; sampleMoveFromRawResource(installFlags, moveFlags, fail, result); } @@ -1950,7 +1949,7 @@ public class PackageManagerTests extends AndroidTestCase { PackageManager.INSTALL_FORWARD_LOCK, true, false, -1, - PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL); + PackageInfo.INSTALL_LOCATION_AUTO); } /* The following test functions verify install location for existing apps. diff --git a/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java index 58269a8b4698..d3dd01a2401f 100644 --- a/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java +++ b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java @@ -25,6 +25,7 @@ import static com.android.server.NetworkManagementSocketTagger.kernelToTag; import android.content.res.Resources; import android.net.NetworkStats; +import android.net.TrafficStats; import android.test.AndroidTestCase; import com.android.frameworks.coretests.R; @@ -80,64 +81,18 @@ public class NetworkStatsFactoryTest extends AndroidTestCase { assertStatsEntry(stats, "rmnet2", 10001, SET_DEFAULT, 0x0, 1125899906842624L, 984L); } - public void testNetworkStatsSummary() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertEquals(6, stats.size()); - assertStatsEntry(stats, "lo", UID_ALL, SET_ALL, TAG_NONE, 8308L, 8308L); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L, 489339L); - assertStatsEntry(stats, "ifb0", UID_ALL, SET_ALL, TAG_NONE, 52454L, 0L); - assertStatsEntry(stats, "ifb1", UID_ALL, SET_ALL, TAG_NONE, 52454L, 0L); - assertStatsEntry(stats, "sit0", UID_ALL, SET_ALL, TAG_NONE, 0L, 0L); - assertStatsEntry(stats, "ip6tnl0", UID_ALL, SET_ALL, TAG_NONE, 0L, 0L); - } - - public void testNetworkStatsSummaryDown() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - stageLong(1L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/active")); - stageLong(1024L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/rx_bytes")); - stageLong(128L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/rx_packets")); - stageLong(2048L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/tx_bytes")); - stageLong(256L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/tx_packets")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertEquals(7, stats.size()); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L, 489339L); - assertStatsEntry(stats, "wlan0", UID_ALL, SET_ALL, TAG_NONE, 1024L, 2048L); - } - - public void testNetworkStatsCombined() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - stageLong(1L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/active")); - stageLong(10L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_bytes")); - stageLong(20L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_packets")); - stageLong(30L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_bytes")); - stageLong(40L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_packets")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L + 10L, - 2205L + 20L, 489339L + 30L, 2237L + 40L); - } - - public void testNetworkStatsCombinedInactive() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - stageLong(0L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/active")); - stageLong(10L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_bytes")); - stageLong(20L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_packets")); - stageLong(30L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_bytes")); - stageLong(40L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_packets")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 10L, 20L, 30L, 40L); - } - public void testKernelTags() throws Exception { assertEquals(0, kernelToTag("0x0000000000000000")); assertEquals(0x32, kernelToTag("0x0000003200000000")); assertEquals(2147483647, kernelToTag("0x7fffffff00000000")); assertEquals(0, kernelToTag("0x0000000000000000")); assertEquals(2147483136, kernelToTag("0x7FFFFE0000000000")); + + assertEquals(0, kernelToTag("0x0")); + assertEquals(0, kernelToTag("0xf00d")); + assertEquals(1, kernelToTag("0x100000000")); + assertEquals(14438007, kernelToTag("0xdc4e7700000000")); + assertEquals(TrafficStats.TAG_SYSTEM_DOWNLOAD, kernelToTag("0xffffff0100000000")); } public void testNetworkStatsWithSet() throws Exception { @@ -152,13 +107,24 @@ public class NetworkStatsFactoryTest extends AndroidTestCase { public void testNetworkStatsSingle() throws Exception { stageFile(R.raw.xt_qtaguid_iface_typical, new File(mTestProc, "net/xt_qtaguid/iface_stat_all")); - final NetworkStats stats = mFactory.readNetworkStatsSummary(); + final NetworkStats stats = mFactory.readNetworkStatsSummaryDev(); assertEquals(6, stats.size()); assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 2112L, 24L, 700L, 10L); assertStatsEntry(stats, "test1", UID_ALL, SET_ALL, TAG_NONE, 6L, 8L, 10L, 12L); assertStatsEntry(stats, "test2", UID_ALL, SET_ALL, TAG_NONE, 1L, 2L, 3L, 4L); } + public void testNetworkStatsXt() throws Exception { + stageFile(R.raw.xt_qtaguid_iface_fmt_typical, + new File(mTestProc, "net/xt_qtaguid/iface_stat_fmt")); + + final NetworkStats stats = mFactory.readNetworkStatsSummaryXt(); + assertEquals(3, stats.size()); + assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 6824L, 16L, 5692L, 10L); + assertStatsEntry(stats, "rmnet1", UID_ALL, SET_ALL, TAG_NONE, 11153922L, 8051L, 190226L, 2468L); + assertStatsEntry(stats, "rmnet2", UID_ALL, SET_ALL, TAG_NONE, 4968L, 35L, 3081L, 39L); + } + /** * Copy a {@link Resources#openRawResource(int)} into {@link File} for * testing purposes. diff --git a/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java b/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java index 85b49ce5c9b8..6211c1c11346 100644 --- a/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java +++ b/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java @@ -64,8 +64,8 @@ public abstract class OverlayBaseTest extends AndroidTestCase { } public void testBoolean() throws Throwable { - // config_bypass_keyguard_if_slider_open has no overlay - final int resId = com.android.internal.R.bool.config_bypass_keyguard_if_slider_open; + // config_annoy_dianne has no overlay + final int resId = com.android.internal.R.bool.config_annoy_dianne; assertResource(resId, true, true); } diff --git a/data/fonts/Android.mk b/data/fonts/Android.mk index 85a77d6e6f3d..8ad15b6bc01c 100644 --- a/data/fonts/Android.mk +++ b/data/fonts/Android.mk @@ -125,7 +125,7 @@ font_src_files := \ Roboto-Italic.ttf \ Roboto-BoldItalic.ttf \ DroidNaskh-Regular.ttf \ - DroidNaskh-Regular-Shift.ttf \ + DroidNaskh-Regular-SystemUI.ttf \ DroidSansHebrew-Regular.ttf \ DroidSansHebrew-Bold.ttf \ DroidSansThai.ttf \ diff --git a/data/fonts/DroidNaskh-Regular-Shift.ttf b/data/fonts/DroidNaskh-Regular-Shift.ttf Binary files differdeleted file mode 100644 index bb9c70c2e232..000000000000 --- a/data/fonts/DroidNaskh-Regular-Shift.ttf +++ /dev/null diff --git a/data/fonts/DroidNaskh-Regular-SystemUI.ttf b/data/fonts/DroidNaskh-Regular-SystemUI.ttf Binary files differnew file mode 100755 index 000000000000..5818b4969efd --- /dev/null +++ b/data/fonts/DroidNaskh-Regular-SystemUI.ttf diff --git a/data/fonts/fallback_fonts-ja.xml b/data/fonts/fallback_fonts-ja.xml index db998d331712..a182e31894c8 100644 --- a/data/fonts/fallback_fonts-ja.xml +++ b/data/fonts/fallback_fonts-ja.xml @@ -34,7 +34,7 @@ <familyset> <family> <fileset> - <file>DroidNaskh-Regular-Shift.ttf</file> + <file>DroidNaskh-Regular-SystemUI.ttf</file> </fileset> </family> <family> diff --git a/data/fonts/fallback_fonts.xml b/data/fonts/fallback_fonts.xml index a4b5212aea48..69d223e3de3d 100644 --- a/data/fonts/fallback_fonts.xml +++ b/data/fonts/fallback_fonts.xml @@ -34,7 +34,7 @@ <familyset> <family> <fileset> - <file>DroidNaskh-Regular-Shift.ttf</file> + <file>DroidNaskh-Regular-SystemUI.ttf</file> </fileset> </family> <family> diff --git a/data/fonts/fonts.mk b/data/fonts/fonts.mk index 702b06967f5b..0eec616df0ed 100644 --- a/data/fonts/fonts.mk +++ b/data/fonts/fonts.mk @@ -25,7 +25,7 @@ PRODUCT_PACKAGES := \ Roboto-Italic.ttf \ Roboto-BoldItalic.ttf \ DroidNaskh-Regular.ttf \ - DroidNaskh-Regular-Shift.ttf \ + DroidNaskh-Regular-SystemUI.ttf \ DroidSansHebrew-Regular.ttf \ DroidSansHebrew-Bold.ttf \ DroidSansThai.ttf \ diff --git a/docs/html/guide/topics/fundamentals/processes-and-threads.jd b/docs/html/guide/topics/fundamentals/processes-and-threads.jd index 3d7710c78e4f..814d34edac4c 100644 --- a/docs/html/guide/topics/fundamentals/processes-and-threads.jd +++ b/docs/html/guide/topics/fundamentals/processes-and-threads.jd @@ -30,11 +30,12 @@ down the user interface</li> </div> </div> -<p>When an application component starts and the application does not have any other components +<p>When an application component starts and the process that should host that thread is not already running, the Android system starts a new Linux process for the application with a single thread of execution. By default, all components of the same application run in the same process and thread (called the "main" thread). If an application component starts and there already exists a process -for that application (because another component from the application exists), then the component is +for that application (because another component from the application exists or Android has been +able to retain its previous process cached in the background), then the component is started within that process and uses the same thread of execution. However, you can arrange for different components in your application to run in separate processes, and you can create additional threads for any process.</p> @@ -86,7 +87,10 @@ components running in the process and the state of those components. Processes importance are eliminated first, then those with the next lowest importance, and so on, as necessary to recover system resources.</p> -<p>There are five levels in the importance hierarchy. The following list presents the different +<p>The exact mapping of processes to importance and the management of these processes is +an implementation detail of the platform that changes over time. Broadly speaking, there +are five levels in the current implementation that are of most relevance to application +developers. The following list presents these different types of processes in order of importance (the first process is <em>most important</em> and is <em>killed last</em>):</p> @@ -100,18 +104,15 @@ types of processes in order of importance (the first process is <em>most importa android.app.Activity}'s {@link android.app.Activity#onResume onResume()} method has been called).</li> - <li>It hosts a {@link android.app.Service} that's bound to the activity that the user is -interacting with.</li> - - <li>It hosts a {@link android.app.Service} that's running "in the foreground"—the -service has called {@link android.app.Service#startForeground startForeground()}. - <li>It hosts a {@link android.app.Service} that's executing one of its lifecycle callbacks ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart onStart()}, or {@link android.app.Service#onDestroy onDestroy()}).</li> <li>It hosts a {@link android.content.BroadcastReceiver} that's executing its {@link android.content.BroadcastReceiver#onReceive onReceive()} method.</li> + + <li>Another foreground process has a dependency on this one: either bound + to a Service in this process, or using a Content Provider of the process.</li> </ul> <p>Generally, only a few foreground processes exist at any given time. They are killed only as @@ -130,43 +131,79 @@ visible to the user (its {@link android.app.Activity#onPause onPause()} method h This might occur, for example, if the foreground activity started a dialog, which allows the previous activity to be seen behind it.</li> - <li>It hosts a {@link android.app.Service} that's bound to a visible (or foreground) -activity.</li> + <li>Another visible process has a dependency on this one: either bound + to a Service in this process, or using a Content Provider of the process.</li> </ul> <p>A visible process is considered extremely important and will not be killed unless doing so is required to keep all foreground processes running. </p> </li> + <li><b>Perceptible process</b> + <p>A process that doesn't have any foreground or visible components, but is still + doing something that is directly perceptible by the user. A classic example of such + a process would be one doing background music playback. The main way applications + get into this state is through {@link android.app.Service#startForeground} or because + another perceptible process has a dependency on one of its services or content + providers. In addition, as of {@link android.os.Build.VERSION_CODES#HONEYCOMB}, + processes can go into this state when {@link android.app.Activity#onStop + Activity.onStop()} is executing, allowing the process to continue executing + critical code after no longer being visible to the user but before going + fully into the background.</p> + + <p>Like visible processes, a perceptible process is considered extremely important + and will not be killed unless doing so is required to keep all foreground and + visible processes running. </p> + </li> + <li><b>Service process</b> <p>A process that is running a service that has been started with the {@link -android.content.Context#startService startService()} method and does not fall into either of the two +android.content.Context#startService startService()} method and does not fall into any of the higher categories. Although service processes are not directly tied to anything the user sees, they -are generally doing things that the user cares about (such as playing music in the background or -downloading data on the network), so the system keeps them running unless there's not enough memory -to retain them along with all foreground and visible processes. </p> +are generally doing things that the user cares about (such as downloading a file the user has requested), +so the system keeps them running unless there's not enough memory to retain them along with all +foreground and visible processes. </p> + + <p>Even though Android tries to keep these processes running, it is considered normal + operation for them to temporarily be killed to support the needs of more important + processes. For example, if the user opens a very heavy-weight web page that needs + most of the device's RAM, background services may be temporarily killed to satisfy + those needs. Services in these processes thus must be prepared to deal gracefully + with being killed while doing their work and later restarted.</p> + + <p>In recent implementations of Android, there are actually a number of sub-divisions + in this area for processes that Android considers more important to the user and so + would like to try harder to keep around. For example, the process hosting the current + home app is generally kept in this area so that the user will not see long delays in + returning home because that process has been killed.</p> </li> - <li><b>Background process</b> - <p>A process holding an activity that's not currently visible to the user (the activity's -{@link android.app.Activity#onStop onStop()} method has been called). These processes have no direct -impact on the user experience, and the system can kill them at any time to reclaim memory for a -foreground, -visible, or service process. Usually there are many background processes running, so they are kept -in an LRU (least recently used) list to ensure that the process with the activity that was most -recently seen by the user is the last to be killed. If an activity implements its lifecycle methods + <li><b>Background (cached) process</b> + <p>The final importance level is for processes that are not of current significance. + This is basically any process that does not fall into one of the previous levels. + These processes have no direct impact on the user experience, and the system can kill + them at any time to reclaim memory for the other more important processes. + This includes everything from processes holding running activity objects that are not currently + visible to the user (the activity's {@link android.app.Activity#onStop onStop()} + method has been called) to processes that have no active code at all but may be + useful to keep around in case they are needed in the near future.</p> + + <p>Usually there are many background processes being maintained, so they are kept + in an LRU list to allow older processes to be killed before more recent ones. This + helps reduce the frequency that new processes need to be creating, facilitating things + like more rapid switching between the applications the user has recently visited. + However, processes in this state must deal correctly with being killed and later + restarted when needed. For example, if an activity implements its lifecycle methods correctly, and saves its current state, killing its process will not have a visible effect on the user experience, because when the user navigates back to the activity, the activity restores all of its visible state. See the <a href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">Activities</a> document for information about saving and restoring state.</p> - </li> - <li><b>Empty process</b> - <p>A process that doesn't hold any active application components. The only reason to keep this -kind of process alive is for caching purposes, to improve startup time the next time a component -needs to run in it. The system often kills these processes in order to balance overall system -resources between process caches and the underlying kernel caches.</p> + <p>Android may also employ other additional policies for killing background processes. For + example, there are typically restrictions on a maximum number of such processes to + keep around, and limits on the amount of time they can spend holding wake locks + or consuming CPU power until they will be removed.</p> </li> </ol> @@ -176,23 +213,48 @@ components currently active in the process. For example, if a process hosts a s activity, the process is ranked as a visible process, not a service process.</p> <p>In addition, a process's ranking might be increased because other processes are dependent on -it—a process that is serving another process can never be ranked lower than the process it is +it—a process that is serving another process can not generally be ranked lower than the process it is serving. For example, if a content provider in process A is serving a client in process B, or if a -service in process A is bound to a component in process B, process A is always considered at least +service in process A has been bound to by a client in process B, process A is always considered at least as important as process B.</p> <p>Because a process running a service is ranked higher than a process with background activities, -an activity that initiates a long-running operation might do well to start a <a +an activity that initiates a long-running operation may sometimes start a <a href="{@docRoot}guide/topics/fundamentals/services.html">service</a> for that operation, rather than -simply create a worker thread—particularly if the operation will likely outlast the activity. +simply create a worker thread—but only when the operation is a specific task that needs +to be accomplished regardless of whether the user returns to the application. For example, an activity that's uploading a picture to a web site should start a service to perform the upload so that the upload can continue in the background even if the user leaves the activity. Using a service guarantees that the operation will have at least "service process" priority, -regardless of what happens to the activity. This is the same reason that broadcast receivers should -employ services rather than simply put time-consuming operations in a thread.</p> - +regardless of what happens to the activity. This is not however an approach that should always +be used. It would not be appropriate when simply downloading the data for a web page, since +that can easily be restarted later if the user returns to the web browser. Allowing +such a process to be in the background (instead of running a service) gives Android better +information about how to manage that process in relation to others. + + <p>For a similar reason, broadcast receivers will often employ services rather than + simply put time-consuming operations in a thread.</p> + + <p>Some command line tools are available to help you understand how Android is managing + its processes. The most common command is <code>adb shell dumpsys activity</code> + which provides a summary of various key state, including at the end a list of the + process states, one per line (plus an optional second line for any key dependency + on that process), ordered from higher importance to lowest. The exact + contents of these lines has changed across different versions of Android, but the + typical state for one process in the list would be:</p> + <pre> +Proc # 2: adj=prcp /F trm= 0 848:com.google.android.inputmethod.latin/u0a32 (service) + com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME<=Proc{417:system/1000} +</pre> + <p>This is a perceptible process (adj=prcp) that is running with the foreground + scheduling class (/F), and has not recently been told to trim any memory + (trm= 0). Its process id is 848; its name is com.google.android.inputmethod.latin; + its Linux uid is u0a32 (10032), and the key state contributing to its current + importance level is a service.</p> + <p>The second line provides the name of the service that is important, because another + process has a dependency on it (here the system process).</p> <h2 id="Threads">Threads</h2> diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java index 1599e40a8d41..5094df188050 100644 --- a/graphics/java/android/graphics/BitmapFactory.java +++ b/graphics/java/android/graphics/BitmapFactory.java @@ -556,6 +556,7 @@ public class BitmapFactory { return bm; } byte[] np = bm.getNinePatchChunk(); + int[] lb = bm.getLayoutBounds(); final boolean isNinePatch = np != null && NinePatch.isNinePatchChunk(np); if (opts.inScaled || isNinePatch) { float scale = targetDensity / (float) density; @@ -569,6 +570,13 @@ public class BitmapFactory { np = nativeScaleNinePatch(np, scale, outPadding); bm.setNinePatchChunk(np); } + if (lb != null) { + int[] newLb = new int[lb.length]; + for (int i=0; i<lb.length; i++) { + newLb[i] = (int)((lb[i]*scale)+.5f); + } + bm.setLayoutBounds(newLb); + } } bm.setDensity(targetDensity); diff --git a/graphics/java/android/graphics/ImageFormat.java b/graphics/java/android/graphics/ImageFormat.java index b3a8fd7ba87c..f6b747a0af83 100644 --- a/graphics/java/android/graphics/ImageFormat.java +++ b/graphics/java/android/graphics/ImageFormat.java @@ -48,14 +48,26 @@ public class ImageFormat { * </p> * * <pre> y_size = stride * height - * c_size = ALIGN(stride/2, 16) * height/2 + * c_stride = ALIGN(stride/2, 16) + * c_size = c_stride * height/2 * size = y_size + c_size * 2 * cr_offset = y_size * cb_offset = y_size + c_size</pre> * - * This format is guaranteed to be supported for camera preview images since + * <p>This format is guaranteed to be supported for camera preview images since * API level 12; for earlier API versions, check * {@link android.hardware.Camera.Parameters#getSupportedPreviewFormats()}. + * + * <p>Note that for camera preview callback use (see + * {@link android.hardware.Camera#setPreviewCallback}), the + * <var>stride</var> value is the smallest possible; that is, it is equal + * to: + * + * <pre>stride = ALIGN(width, 16)</pre> + * + * @see android.hardware.Camera.Parameters#setPreviewCallback + * @see android.hardware.Camera.Parameters#setPreviewFormat + * @see android.hardware.Camera.Parameters#getSupportedPreviewFormats * </p> */ public static final int YV12 = 0x32315659; diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index f68f9dce8eff..f9b8a5f066dd 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -1055,6 +1055,7 @@ public class Paint { * Get the text Locale. * * @return the paint's Locale used for drawing text, never null. + * @hide */ public Locale getTextLocale() { return mLocale; @@ -1085,6 +1086,7 @@ public class Paint { * job in certain ambiguous cases * * @param locale the paint's locale value for drawing text, must not be null. + * @hide */ public void setTextLocale(Locale locale) { if (locale == null) { diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index 6193ca72baf6..5f74c019006c 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -297,6 +297,7 @@ public abstract class Drawable { /** * Implement this interface if you want to create an drawable that is RTL aware + * @hide */ public static interface Callback2 extends Callback { /** @@ -384,8 +385,7 @@ public abstract class Drawable { } /** - * Use the current {@link android.graphics.drawable.Drawable.Callback2} implementation to get - * the resolved layout direction of this Drawable. + * Get the resolved layout direction of this Drawable. */ public int getResolvedLayoutDirectionSelf() { final Callback callback = getCallback(); diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index 006baa70a977..b68b267976ac 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -56,6 +56,7 @@ public class NinePatchDrawable extends Drawable { private NinePatchState mNinePatchState; private NinePatch mNinePatch; private Rect mPadding; + private Insets mLayoutInsets = Insets.NONE; private Paint mPaint; private boolean mMutated; @@ -180,12 +181,21 @@ public class NinePatchDrawable extends Drawable { } } + private Insets scaleFromDensity(Insets insets, int sdensity, int tdensity) { + int left = Bitmap.scaleFromDensity(insets.left, sdensity, tdensity); + int top = Bitmap.scaleFromDensity(insets.top, sdensity, tdensity); + int right = Bitmap.scaleFromDensity(insets.right, sdensity, tdensity); + int bottom = Bitmap.scaleFromDensity(insets.bottom, sdensity, tdensity); + return Insets.of(left, top, right, bottom); + } + private void computeBitmapSize() { final int sdensity = mNinePatch.getDensity(); final int tdensity = mTargetDensity; if (sdensity == tdensity) { mBitmapWidth = mNinePatch.getWidth(); mBitmapHeight = mNinePatch.getHeight(); + mLayoutInsets = mNinePatchState.mLayoutInsets; } else { mBitmapWidth = Bitmap.scaleFromDensity(mNinePatch.getWidth(), sdensity, tdensity); @@ -202,6 +212,7 @@ public class NinePatchDrawable extends Drawable { dest.right = Bitmap.scaleFromDensity(src.right, sdensity, tdensity); dest.bottom = Bitmap.scaleFromDensity(src.bottom, sdensity, tdensity); } + mLayoutInsets = scaleFromDensity(mNinePatchState.mLayoutInsets, sdensity, tdensity); } } @@ -226,7 +237,7 @@ public class NinePatchDrawable extends Drawable { */ @Override public Insets getLayoutInsets() { - return mNinePatchState.mLayoutInsets; + return mLayoutInsets; } @Override diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java index babe57ec23f1..68723109ac9f 100644 --- a/graphics/java/android/renderscript/Element.java +++ b/graphics/java/android/renderscript/Element.java @@ -149,8 +149,6 @@ public class Element extends BaseObj { RS_PROGRAM_VERTEX (1007, 4), RS_PROGRAM_RASTER (1008, 4), RS_PROGRAM_STORE (1009, 4), - /** @hide - */ RS_FONT (1010, 4); int mID; @@ -498,8 +496,8 @@ public class Element extends BaseObj { return rs.mElement_PROGRAM_STORE; } - /** @hide - */ + /** @deprecated renderscript is deprecated in J + */ public static Element FONT(RenderScript rs) { if(rs.mElement_FONT == null) { rs.mElement_FONT = createUser(rs, DataType.RS_FONT); diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 9a5b3493c39f..46ad495eaba9 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -541,6 +541,13 @@ public class RenderScript { validate(); rsnScriptSetVarV(mContext, id, slot, val); } + native void rsnScriptSetVarVE(int con, int id, int slot, byte[] val, + int e, int[] dims); + synchronized void nScriptSetVarVE(int id, int slot, byte[] val, + int e, int[] dims) { + validate(); + rsnScriptSetVarVE(mContext, id, slot, val, e, dims); + } native void rsnScriptSetVarObj(int con, int id, int slot, int val); synchronized void nScriptSetVarObj(int id, int slot, int val) { validate(); diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java index 34d33a95db93..56893ac4a6bc 100644 --- a/graphics/java/android/renderscript/Script.java +++ b/graphics/java/android/renderscript/Script.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 The Android Open Source Project + * Copyright (C) 2008-2012 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. @@ -163,6 +163,18 @@ public class Script extends BaseObj { } /** @deprecated renderscript is deprecated in J + * Only intended for use by generated reflected code. + * + * @param index + * @param v + * @param e + * @param dims + */ + public void setVar(int index, FieldPacker v, Element e, int[] dims) { + mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims); + } + + /** @deprecated renderscript is deprecated in J */ public void setTimeZone(String timeZone) { mRS.validate(); diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 1b7ef22d8d18..3d5d1a9a7986 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -953,6 +953,20 @@ nScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slo _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); } +static void +nScriptSetVarVE(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data, jint elem, jintArray dims) +{ + LOG_API("nScriptSetVarVE, con(%p), s(%p), slot(%i)", con, (void *)script, slot); + jint len = _env->GetArrayLength(data); + jbyte *ptr = _env->GetByteArrayElements(data, NULL); + jint dimsLen = _env->GetArrayLength(dims) * sizeof(int); + jint *dimsPtr = _env->GetIntArrayElements(dims, NULL); + rsScriptSetVarVE(con, (RsScript)script, slot, ptr, len, (RsElement)elem, + (const size_t*) dimsPtr, dimsLen); + _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); + _env->ReleaseIntArrayElements(dims, dimsPtr, JNI_ABORT); +} + static void nScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) @@ -1394,6 +1408,7 @@ static JNINativeMethod methods[] = { {"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, {"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, {"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, +{"rsnScriptSetVarVE", "(III[BI[I)V", (void*)nScriptSetVarVE }, {"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, {"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate }, diff --git a/include/androidfw/Input.h b/include/androidfw/Input.h index a98e1a27f9f5..601a169aab36 100644 --- a/include/androidfw/Input.h +++ b/include/androidfw/Input.h @@ -157,37 +157,6 @@ enum { }; /* - * Describes the basic configuration of input devices that are present. - */ -struct InputConfiguration { - enum { - TOUCHSCREEN_UNDEFINED = 0, - TOUCHSCREEN_NOTOUCH = 1, - TOUCHSCREEN_STYLUS = 2, - TOUCHSCREEN_FINGER = 3 - }; - - enum { - KEYBOARD_UNDEFINED = 0, - KEYBOARD_NOKEYS = 1, - KEYBOARD_QWERTY = 2, - KEYBOARD_12KEY = 3 - }; - - enum { - NAVIGATION_UNDEFINED = 0, - NAVIGATION_NONAV = 1, - NAVIGATION_DPAD = 2, - NAVIGATION_TRACKBALL = 3, - NAVIGATION_WHEEL = 4 - }; - - int32_t touchScreen; - int32_t keyboard; - int32_t navigation; -}; - -/* * Pointer coordinate data. */ struct PointerCoords { @@ -208,6 +177,7 @@ struct PointerCoords { status_t setAxisValue(int32_t axis, float value); void scale(float scale); + void lerp(const PointerCoords& a, const PointerCoords& b, float alpha); inline float getX() const { return getAxisValue(AMOTION_EVENT_AXIS_X); diff --git a/include/androidfw/InputDevice.h b/include/androidfw/InputDevice.h index d6ecbf0712a7..1aecf80e13e1 100644 --- a/include/androidfw/InputDevice.h +++ b/include/androidfw/InputDevice.h @@ -67,7 +67,7 @@ public: }; void initialize(int32_t id, int32_t generation, const InputDeviceIdentifier& identifier, - const String8& alias); + const String8& alias, bool isExternal); inline int32_t getId() const { return mId; } inline int32_t getGeneration() const { return mGeneration; } @@ -76,6 +76,7 @@ public: inline const String8& getDisplayName() const { return mAlias.isEmpty() ? mIdentifier.name : mAlias; } + inline bool isExternal() const { return mIsExternal; } inline uint32_t getSources() const { return mSources; } const MotionRange* getMotionRange(int32_t axis, uint32_t source) const; @@ -108,6 +109,7 @@ private: int32_t mGeneration; InputDeviceIdentifier mIdentifier; String8 mAlias; + bool mIsExternal; uint32_t mSources; int32_t mKeyboardType; sp<KeyCharacterMap> mKeyCharacterMap; diff --git a/include/androidfw/InputTransport.h b/include/androidfw/InputTransport.h index 29c296e2388d..2924505c2aa4 100644 --- a/include/androidfw/InputTransport.h +++ b/include/androidfw/InputTransport.h @@ -33,6 +33,7 @@ #include <utils/RefBase.h> #include <utils/String8.h> #include <utils/Vector.h> +#include <utils/BitSet.h> namespace android { @@ -271,6 +272,9 @@ public: * If consumeBatches is true, then events are still batched but they are consumed * immediately as soon as the input channel is exhausted. * + * The frameTime parameter specifies the time when the current display frame started + * rendering in the CLOCK_MONOTONIC time base, or -1 if unknown. + * * The returned sequence number is never 0 unless the operation failed. * * Returns OK on success. @@ -280,7 +284,7 @@ public: * Other errors probably indicate that the channel is broken. */ status_t consume(InputEventFactoryInterface* factory, bool consumeBatches, - uint32_t* outSeq, InputEvent** outEvent); + nsecs_t frameTime, uint32_t* outSeq, InputEvent** outEvent); /* Sends a finished signal to the publisher to inform it that the message * with the specified sequence number has finished being process and whether @@ -298,7 +302,7 @@ public: * has a deferred event to be processed. Deferred events are somewhat special in * that they have already been removed from the input channel. If the input channel * becomes empty, the client may need to do extra work to ensure that it processes - * the deferred event despite the fact that the inptu channel's file descriptor + * the deferred event despite the fact that the input channel's file descriptor * is not readable. * * One option is simply to call consume() in a loop until it returns WOULD_BLOCK. @@ -329,11 +333,55 @@ private: // Batched motion events per device and source. struct Batch { - uint32_t seq; // sequence number of last input message batched in the event - MotionEvent event; + Vector<InputMessage> samples; }; Vector<Batch> mBatches; + // Touch state per device and source, only for sources of class pointer. + struct History { + nsecs_t eventTime; + BitSet32 idBits; + PointerCoords pointers[MAX_POINTERS]; + + void initializeFrom(const InputMessage* msg) { + eventTime = msg->body.motion.eventTime; + idBits.clear(); + for (size_t i = 0; i < msg->body.motion.pointerCount; i++) { + uint32_t id = msg->body.motion.pointers[i].properties.id; + idBits.markBit(id); + size_t index = idBits.getIndexOfBit(id); + pointers[index].copyFrom(msg->body.motion.pointers[i].coords); + } + } + }; + struct TouchState { + int32_t deviceId; + int32_t source; + size_t historyCurrent; + size_t historySize; + History history[2]; + + void initialize(int32_t deviceId, int32_t source) { + this->deviceId = deviceId; + this->source = source; + historyCurrent = 0; + historySize = 0; + } + + void addHistory(const InputMessage* msg) { + historyCurrent ^= 1; + if (historySize < 2) { + historySize += 1; + } + history[historyCurrent].initializeFrom(msg); + } + + const History* getHistory(size_t index) const { + return &history[(historyCurrent + index) & 1]; + } + }; + Vector<TouchState> mTouchStates; + // Chain of batched sequence numbers. When multiple input messages are combined into // a batch, we append a record here that associates the last sequence number in the // batch with the previous one. When the finished signal is sent, we traverse the @@ -344,13 +392,26 @@ private: }; Vector<SeqChain> mSeqChains; + status_t consumeBatch(InputEventFactoryInterface* factory, + nsecs_t frameTime, uint32_t* outSeq, InputEvent** outEvent); + status_t consumeSamples(InputEventFactoryInterface* factory, + Batch& batch, size_t count, uint32_t* outSeq, InputEvent** outEvent); + + void updateTouchState(InputMessage* msg); + void resampleTouchState(nsecs_t frameTime, MotionEvent* event, + const InputMessage *next); + ssize_t findBatch(int32_t deviceId, int32_t source) const; + ssize_t findTouchState(int32_t deviceId, int32_t source) const; + status_t sendUnchainedFinishedSignal(uint32_t seq, bool handled); static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg); static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg); - static bool canAppendSamples(const MotionEvent* event, const InputMessage* msg); - static void appendSamples(MotionEvent* event, const InputMessage* msg); + static void addSample(MotionEvent* event, const InputMessage* msg); + static bool canAddSample(const Batch& batch, const InputMessage* msg); + static ssize_t findSampleNoLaterThan(const Batch& batch, nsecs_t time); + static bool shouldResampleTool(int32_t toolType); }; } // namespace android diff --git a/libs/androidfw/Input.cpp b/libs/androidfw/Input.cpp index 1617a3f36dc9..fbe19268e4fb 100644 --- a/libs/androidfw/Input.cpp +++ b/libs/androidfw/Input.cpp @@ -229,6 +229,26 @@ void PointerCoords::scale(float scaleFactor) { scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOOL_MINOR, scaleFactor); } +void PointerCoords::lerp(const PointerCoords& a, const PointerCoords& b, float alpha) { + bits = 0; + for (uint64_t bitsRemaining = a.bits | b.bits; bitsRemaining; ) { + int32_t axis = __builtin_ctz(bitsRemaining); + uint64_t axisBit = 1LL << axis; + bitsRemaining &= ~axisBit; + if (a.bits & axisBit) { + if (b.bits & axisBit) { + float aval = a.getAxisValue(axis); + float bval = b.getAxisValue(axis); + setAxisValue(axis, aval + alpha * (bval - aval)); + } else { + setAxisValue(axis, a.getAxisValue(axis)); + } + } else { + setAxisValue(axis, b.getAxisValue(axis)); + } + } +} + #ifdef HAVE_ANDROID_OS status_t PointerCoords::readFromParcel(Parcel* parcel) { bits = parcel->readInt64(); diff --git a/libs/androidfw/InputDevice.cpp b/libs/androidfw/InputDevice.cpp index 928157f0bcfa..fe891cb2879a 100644 --- a/libs/androidfw/InputDevice.cpp +++ b/libs/androidfw/InputDevice.cpp @@ -127,12 +127,12 @@ String8 getInputDeviceConfigurationFilePathByName( // --- InputDeviceInfo --- InputDeviceInfo::InputDeviceInfo() { - initialize(-1, -1, InputDeviceIdentifier(), String8()); + initialize(-1, -1, InputDeviceIdentifier(), String8(), false); } InputDeviceInfo::InputDeviceInfo(const InputDeviceInfo& other) : mId(other.mId), mGeneration(other.mGeneration), mIdentifier(other.mIdentifier), - mAlias(other.mAlias), mSources(other.mSources), + mAlias(other.mAlias), mIsExternal(other.mIsExternal), mSources(other.mSources), mKeyboardType(other.mKeyboardType), mKeyCharacterMap(other.mKeyCharacterMap), mHasVibrator(other.mHasVibrator), @@ -143,11 +143,12 @@ InputDeviceInfo::~InputDeviceInfo() { } void InputDeviceInfo::initialize(int32_t id, int32_t generation, - const InputDeviceIdentifier& identifier, const String8& alias) { + const InputDeviceIdentifier& identifier, const String8& alias, bool isExternal) { mId = id; mGeneration = generation; mIdentifier = identifier; mAlias = alias; + mIsExternal = isExternal; mSources = 0; mKeyboardType = AINPUT_KEYBOARD_TYPE_NONE; mHasVibrator = false; diff --git a/libs/androidfw/InputTransport.cpp b/libs/androidfw/InputTransport.cpp index 294236f61d32..9a4182c2b10d 100644 --- a/libs/androidfw/InputTransport.cpp +++ b/libs/androidfw/InputTransport.cpp @@ -16,6 +16,9 @@ // Log debug messages about transport actions #define DEBUG_TRANSPORT_ACTIONS 0 +// Log debug messages about touch event resampling +#define DEBUG_RESAMPLING 0 + #include <cutils/log.h> #include <errno.h> @@ -24,6 +27,7 @@ #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> +#include <math.h> namespace android { @@ -34,6 +38,20 @@ namespace android { // behind processing touches. static const size_t SOCKET_BUFFER_SIZE = 32 * 1024; +// Nanoseconds per milliseconds. +static const nsecs_t NANOS_PER_MS = 1000000; + +// Latency added during resampling. A few milliseconds doesn't hurt much but +// reduces the impact of mispredicted touch positions. +static const nsecs_t RESAMPLE_LATENCY = 4 * NANOS_PER_MS; + +// Minimum time difference between consecutive samples before attempting to resample. +static const nsecs_t RESAMPLE_MIN_DELTA = 1 * NANOS_PER_MS; + +// Maximum linear interpolation scale value. The larger this is, the more error may +// potentially be introduced. +static const float RESAMPLE_MAX_ALPHA = 2.0f; + // --- InputMessage --- @@ -341,10 +359,10 @@ InputConsumer::~InputConsumer() { } status_t InputConsumer::consume(InputEventFactoryInterface* factory, - bool consumeBatches, uint32_t* outSeq, InputEvent** outEvent) { + bool consumeBatches, nsecs_t frameTime, uint32_t* outSeq, InputEvent** outEvent) { #if DEBUG_TRANSPORT_ACTIONS - ALOGD("channel '%s' consumer ~ consume: consumeBatches=%s", - mChannel->getName().string(), consumeBatches ? "true" : "false"); + ALOGD("channel '%s' consumer ~ consume: consumeBatches=%s, frameTime=%lld", + mChannel->getName().string(), consumeBatches ? "true" : "false", frameTime); #endif *outSeq = 0; @@ -362,20 +380,15 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, status_t result = mChannel->receiveMessage(&mMsg); if (result) { // Consume the next batched event unless batches are being held for later. - if (!mBatches.isEmpty() && (consumeBatches || result != WOULD_BLOCK)) { - MotionEvent* motionEvent = factory->createMotionEvent(); - if (! motionEvent) return NO_MEMORY; - - const Batch& batch = mBatches.top(); - motionEvent->copyFrom(&batch.event, true /*keepHistory*/); - *outSeq = batch.seq; - *outEvent = motionEvent; - mBatches.pop(); + if (consumeBatches || result != WOULD_BLOCK) { + result = consumeBatch(factory, frameTime, outSeq, outEvent); + if (*outEvent) { #if DEBUG_TRANSPORT_ACTIONS - ALOGD("channel '%s' consumer ~ consumed batch event, seq=%u", - mChannel->getName().string(), *outSeq); + ALOGD("channel '%s' consumer ~ consumed batch event, seq=%u", + mChannel->getName().string(), *outSeq); #endif - break; + break; + } } return result; } @@ -400,35 +413,23 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, ssize_t batchIndex = findBatch(mMsg.body.motion.deviceId, mMsg.body.motion.source); if (batchIndex >= 0) { Batch& batch = mBatches.editItemAt(batchIndex); - if (canAppendSamples(&batch.event, &mMsg)) { - // Append to the batch and save the new sequence number for the tail end. - uint32_t chain = batch.seq; - appendSamples(&batch.event, &mMsg); - batch.seq = mMsg.body.motion.seq; - - // Update the sequence number chain. - SeqChain seqChain; - seqChain.seq = batch.seq; - seqChain.chain = chain; - mSeqChains.push(seqChain); + if (canAddSample(batch, &mMsg)) { + batch.samples.push(mMsg); #if DEBUG_TRANSPORT_ACTIONS ALOGD("channel '%s' consumer ~ appended to batch event", mChannel->getName().string()); #endif break; } else { - MotionEvent* motionEvent = factory->createMotionEvent(); - if (! motionEvent) return NO_MEMORY; - // We cannot append to the batch in progress, so we need to consume // the previous batch right now and defer the new message until later. mMsgDeferred = true; - - // Return the end of the previous batch. - motionEvent->copyFrom(&batch.event, true /*keepHistory*/); - *outSeq = batch.seq; - *outEvent = motionEvent; + status_t result = consumeSamples(factory, + batch, batch.samples.size(), outSeq, outEvent); mBatches.removeAt(batchIndex); + if (result) { + return result; + } #if DEBUG_TRANSPORT_ACTIONS ALOGD("channel '%s' consumer ~ consumed batch event and " "deferred current event, seq=%u", @@ -443,8 +444,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, || mMsg.body.motion.action == AMOTION_EVENT_ACTION_HOVER_MOVE) { mBatches.push(); Batch& batch = mBatches.editTop(); - batch.seq = mMsg.body.motion.seq; - initializeMotionEvent(&batch.event, &mMsg); + batch.samples.push(mMsg); #if DEBUG_TRANSPORT_ACTIONS ALOGD("channel '%s' consumer ~ started batch event", mChannel->getName().string()); @@ -455,6 +455,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, MotionEvent* motionEvent = factory->createMotionEvent(); if (! motionEvent) return NO_MEMORY; + updateTouchState(&mMsg); initializeMotionEvent(motionEvent, &mMsg); *outSeq = mMsg.body.motion.seq; *outEvent = motionEvent; @@ -474,6 +475,213 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, return OK; } +status_t InputConsumer::consumeBatch(InputEventFactoryInterface* factory, + nsecs_t frameTime, uint32_t* outSeq, InputEvent** outEvent) { + status_t result; + for (size_t i = mBatches.size(); i-- > 0; ) { + Batch& batch = mBatches.editItemAt(i); + if (frameTime < 0) { + result = consumeSamples(factory, batch, batch.samples.size(), + outSeq, outEvent); + mBatches.removeAt(i); + return result; + } + + nsecs_t sampleTime = frameTime - RESAMPLE_LATENCY; + ssize_t split = findSampleNoLaterThan(batch, sampleTime); + if (split < 0) { + continue; + } + + result = consumeSamples(factory, batch, split + 1, outSeq, outEvent); + const InputMessage* next; + if (batch.samples.isEmpty()) { + mBatches.removeAt(i); + next = NULL; + } else { + next = &batch.samples.itemAt(0); + } + if (!result) { + resampleTouchState(sampleTime, static_cast<MotionEvent*>(*outEvent), next); + } + return result; + } + + return WOULD_BLOCK; +} + +status_t InputConsumer::consumeSamples(InputEventFactoryInterface* factory, + Batch& batch, size_t count, uint32_t* outSeq, InputEvent** outEvent) { + MotionEvent* motionEvent = factory->createMotionEvent(); + if (! motionEvent) return NO_MEMORY; + + uint32_t chain = 0; + for (size_t i = 0; i < count; i++) { + InputMessage& msg = batch.samples.editItemAt(i); + updateTouchState(&msg); + if (i) { + SeqChain seqChain; + seqChain.seq = msg.body.motion.seq; + seqChain.chain = chain; + mSeqChains.push(seqChain); + addSample(motionEvent, &msg); + } else { + initializeMotionEvent(motionEvent, &msg); + } + chain = msg.body.motion.seq; + } + batch.samples.removeItemsAt(0, count); + + *outSeq = chain; + *outEvent = motionEvent; + return OK; +} + +void InputConsumer::updateTouchState(InputMessage* msg) { + if (!(msg->body.motion.source & AINPUT_SOURCE_CLASS_POINTER)) { + return; + } + + int32_t deviceId = msg->body.motion.deviceId; + int32_t source = msg->body.motion.source; + + // TODO: Filter the incoming touch event so that it aligns better + // with prior predictions. Turning RESAMPLE_LATENCY offsets the need + // for filtering but it would be nice to reduce the latency further. + + switch (msg->body.motion.action) { + case AMOTION_EVENT_ACTION_DOWN: { + ssize_t index = findTouchState(deviceId, source); + if (index < 0) { + mTouchStates.push(); + index = mTouchStates.size() - 1; + } + TouchState& touchState = mTouchStates.editItemAt(index); + touchState.initialize(deviceId, source); + touchState.addHistory(msg); + break; + } + + case AMOTION_EVENT_ACTION_MOVE: { + ssize_t index = findTouchState(deviceId, source); + if (index >= 0) { + TouchState& touchState = mTouchStates.editItemAt(index); + touchState.addHistory(msg); + } + break; + } + + case AMOTION_EVENT_ACTION_UP: + case AMOTION_EVENT_ACTION_CANCEL: { + ssize_t index = findTouchState(deviceId, source); + if (index >= 0) { + mTouchStates.removeAt(index); + } + break; + } + } +} + +void InputConsumer::resampleTouchState(nsecs_t sampleTime, MotionEvent* event, + const InputMessage* next) { + if (event->getAction() != AMOTION_EVENT_ACTION_MOVE + || !(event->getSource() & AINPUT_SOURCE_CLASS_POINTER)) { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, not a move."); +#endif + return; + } + + ssize_t index = findTouchState(event->getDeviceId(), event->getSource()); + if (index < 0) { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, no touch state for device."); +#endif + return; + } + + TouchState& touchState = mTouchStates.editItemAt(index); + if (touchState.historySize < 1) { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, no history for device."); +#endif + return; + } + + const History* current = touchState.getHistory(0); + const History* other; + History future; + if (next) { + future.initializeFrom(next); + other = &future; + } else if (touchState.historySize >= 2) { + other = touchState.getHistory(1); + } else { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, insufficient data."); +#endif + return; + } + + nsecs_t delta = current->eventTime - other->eventTime; + if (delta > -RESAMPLE_MIN_DELTA && delta < RESAMPLE_MIN_DELTA) { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, delta time is %lld", delta); +#endif + return; + } + + float alpha = float(current->eventTime - sampleTime) / delta; + if (fabs(alpha) > RESAMPLE_MAX_ALPHA) { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, alpha is %f", alpha); +#endif + return; + } + + size_t pointerCount = event->getPointerCount(); + PointerCoords resampledCoords[MAX_POINTERS]; + for (size_t i = 0; i < pointerCount; i++) { + uint32_t id = event->getPointerId(i); + if (!current->idBits.hasBit(id)) { +#if DEBUG_RESAMPLING + ALOGD("Not resampled, missing id %d", id); +#endif + return; + } + const PointerCoords& currentCoords = + current->pointers[current->idBits.getIndexOfBit(id)]; + if (other->idBits.hasBit(id) + && shouldResampleTool(event->getToolType(i))) { + const PointerCoords& otherCoords = + other->pointers[other->idBits.getIndexOfBit(id)]; + resampledCoords[i].lerp(currentCoords, otherCoords, alpha); +#if DEBUG_RESAMPLING + ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f), " + "other (%0.3f, %0.3f), alpha %0.3f", + i, resampledCoords[i].getX(), resampledCoords[i].getY(), + currentCoords.getX(), currentCoords.getY(), + otherCoords.getX(), otherCoords.getY(), + alpha); +#endif + } else { + resampledCoords[i].copyFrom(currentCoords); +#if DEBUG_RESAMPLING + ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f)", + i, resampledCoords[i].getX(), resampledCoords[i].getY(), + currentCoords.getX(), currentCoords.getY()); +#endif + } + } + + event->addSample(sampleTime, resampledCoords); +} + +bool InputConsumer::shouldResampleTool(int32_t toolType) { + return toolType == AMOTION_EVENT_TOOL_TYPE_FINGER + || toolType == AMOTION_EVENT_TOOL_TYPE_UNKNOWN; +} + status_t InputConsumer::sendFinishedSignal(uint32_t seq, bool handled) { #if DEBUG_TRANSPORT_ACTIONS ALOGD("channel '%s' consumer ~ sendFinishedSignal: seq=%u, handled=%s", @@ -538,7 +746,18 @@ bool InputConsumer::hasPendingBatch() const { ssize_t InputConsumer::findBatch(int32_t deviceId, int32_t source) const { for (size_t i = 0; i < mBatches.size(); i++) { const Batch& batch = mBatches.itemAt(i); - if (batch.event.getDeviceId() == deviceId && batch.event.getSource() == source) { + const InputMessage& head = batch.samples.itemAt(0); + if (head.body.motion.deviceId == deviceId && head.body.motion.source == source) { + return i; + } + } + return -1; +} + +ssize_t InputConsumer::findTouchState(int32_t deviceId, int32_t source) const { + for (size_t i = 0; i < mTouchStates.size(); i++) { + const TouchState& touchState = mTouchStates.itemAt(i); + if (touchState.deviceId == deviceId && touchState.source == source) { return i; } } @@ -587,29 +806,41 @@ void InputConsumer::initializeMotionEvent(MotionEvent* event, const InputMessage pointerCoords); } -bool InputConsumer::canAppendSamples(const MotionEvent* event, const InputMessage *msg) { +void InputConsumer::addSample(MotionEvent* event, const InputMessage* msg) { + size_t pointerCount = msg->body.motion.pointerCount; + PointerCoords pointerCoords[pointerCount]; + for (size_t i = 0; i < pointerCount; i++) { + pointerCoords[i].copyFrom(msg->body.motion.pointers[i].coords); + } + + event->setMetaState(event->getMetaState() | msg->body.motion.metaState); + event->addSample(msg->body.motion.eventTime, pointerCoords); +} + +bool InputConsumer::canAddSample(const Batch& batch, const InputMessage *msg) { + const InputMessage& head = batch.samples.itemAt(0); size_t pointerCount = msg->body.motion.pointerCount; - if (event->getPointerCount() != pointerCount - || event->getAction() != msg->body.motion.action) { + if (head.body.motion.pointerCount != pointerCount + || head.body.motion.action != msg->body.motion.action) { return false; } for (size_t i = 0; i < pointerCount; i++) { - if (*event->getPointerProperties(i) != msg->body.motion.pointers[i].properties) { + if (head.body.motion.pointers[i].properties + != msg->body.motion.pointers[i].properties) { return false; } } return true; } -void InputConsumer::appendSamples(MotionEvent* event, const InputMessage* msg) { - size_t pointerCount = msg->body.motion.pointerCount; - PointerCoords pointerCoords[pointerCount]; - for (size_t i = 0; i < pointerCount; i++) { - pointerCoords[i].copyFrom(msg->body.motion.pointers[i].coords); +ssize_t InputConsumer::findSampleNoLaterThan(const Batch& batch, nsecs_t time) { + size_t numSamples = batch.samples.size(); + size_t index = 0; + while (index < numSamples + && batch.samples.itemAt(index).body.motion.eventTime <= time) { + index += 1; } - - event->setMetaState(event->getMetaState() | msg->body.motion.metaState); - event->addSample(msg->body.motion.eventTime, pointerCoords); + return ssize_t(index) - 1; } } // namespace android diff --git a/libs/androidfw/tests/InputPublisherAndConsumer_test.cpp b/libs/androidfw/tests/InputPublisherAndConsumer_test.cpp index 442b62f2ddc0..f45774ba8c85 100644 --- a/libs/androidfw/tests/InputPublisherAndConsumer_test.cpp +++ b/libs/androidfw/tests/InputPublisherAndConsumer_test.cpp @@ -88,7 +88,7 @@ void InputPublisherAndConsumerTest::PublishAndConsumeKeyEvent() { uint32_t consumeSeq; InputEvent* event; - status = mConsumer->consume(&mEventFactory, true /*consumeBatches*/, &consumeSeq, &event); + status = mConsumer->consume(&mEventFactory, true /*consumeBatches*/, -1, &consumeSeq, &event); ASSERT_EQ(OK, status) << "consumer consume should return OK"; @@ -171,7 +171,7 @@ void InputPublisherAndConsumerTest::PublishAndConsumeMotionEvent() { uint32_t consumeSeq; InputEvent* event; - status = mConsumer->consume(&mEventFactory, true /*consumeBatches*/, &consumeSeq, &event); + status = mConsumer->consume(&mEventFactory, true /*consumeBatches*/, -1, &consumeSeq, &event); ASSERT_EQ(OK, status) << "consumer consume should return OK"; diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp index 7e19932f4dff..f6ca77c5b7d8 100644 --- a/libs/hwui/DisplayListRenderer.cpp +++ b/libs/hwui/DisplayListRenderer.cpp @@ -184,6 +184,11 @@ void DisplayList::clearResources() { } mPaths.clear(); + for (size_t i = 0; i < mSourcePaths.size(); i++) { + caches.resourceCache.decrementRefcount(mSourcePaths.itemAt(i)); + } + mSourcePaths.clear(); + for (size_t i = 0; i < mMatrices.size(); i++) { delete mMatrices.itemAt(i); } @@ -242,6 +247,12 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde mPaths.add(paths.itemAt(i)); } + const SortedVector<SkPath*> &sourcePaths = recorder.getSourcePaths(); + for (size_t i = 0; i < sourcePaths.size(); i++) { + mSourcePaths.add(sourcePaths.itemAt(i)); + caches.resourceCache.incrementRefcount(sourcePaths.itemAt(i)); + } + const Vector<SkMatrix*> &matrices = recorder.getMatrices(); for (size_t i = 0; i < matrices.size(); i++) { mMatrices.add(matrices.itemAt(i)); @@ -962,7 +973,7 @@ status_t DisplayList::replay(OpenGLRenderer& renderer, Rect& dirty, int32_t flag float x = getFloat(); float y = getFloat(); SkPaint* paint = getPaint(renderer); - if (mCaching && mMultipliedAlpha < 255) { + if (mCaching) { paint->setAlpha(mMultipliedAlpha); } DISPLAY_LIST_LOGD("%s%s %p, %.2f, %.2f, %p", (char*) indent, OP_NAMES[op], @@ -975,7 +986,7 @@ status_t DisplayList::replay(OpenGLRenderer& renderer, Rect& dirty, int32_t flag float x = getFloat(); float y = getFloat(); SkPaint* paint = getPaint(renderer); - if (mCaching && mMultipliedAlpha < 255) { + if (mCaching) { paint->setAlpha(mMultipliedAlpha); } DISPLAY_LIST_LOGD("%s%s %p, %.2f, %.2f, %p", (char*) indent, OP_NAMES[op], @@ -1273,6 +1284,11 @@ void DisplayListRenderer::reset() { mShaders.clear(); mShaderMap.clear(); + for (size_t i = 0; i < mSourcePaths.size(); i++) { + caches.resourceCache.decrementRefcount(mSourcePaths.itemAt(i)); + } + mSourcePaths.clear(); + mPaints.clear(); mPaintMap.clear(); diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h index a7fc23a04c0a..4edefd552520 100644 --- a/libs/hwui/DisplayListRenderer.h +++ b/libs/hwui/DisplayListRenderer.h @@ -487,6 +487,7 @@ private: Vector<SkPaint*> mPaints; Vector<SkPath*> mPaths; + SortedVector<SkPath*> mSourcePaths; Vector<SkMatrix*> mMatrices; Vector<SkiaShader*> mShaders; @@ -634,6 +635,10 @@ public: return mPaths; } + const SortedVector<SkPath*>& getSourcePaths() const { + return mSourcePaths; + } + const Vector<SkMatrix*>& getMatrices() const { return mMatrices; } @@ -750,6 +755,10 @@ private: mPathMap.replaceValueFor(path, pathCopy); mPaths.add(pathCopy); } + if (mSourcePaths.indexOf(path) < 0) { + Caches::getInstance().resourceCache.incrementRefcount(path); + mSourcePaths.add(path); + } addInt((int) pathCopy); } @@ -830,6 +839,8 @@ private: Vector<SkPath*> mPaths; DefaultKeyedVector<SkPath*, SkPath*> mPathMap; + SortedVector<SkPath*> mSourcePaths; + Vector<SkiaShader*> mShaders; DefaultKeyedVector<SkiaShader*, SkiaShader*> mShaderMap; diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index f8bb70a6c0a9..80db6937dde9 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -190,8 +190,17 @@ void OpenGLRenderer::finish() { while ((status = glGetError()) != GL_NO_ERROR) { ALOGD("GL error from OpenGLRenderer: 0x%x", status); switch (status) { + case GL_INVALID_ENUM: + ALOGE(" GL_INVALID_ENUM"); + break; + case GL_INVALID_VALUE: + ALOGE(" GL_INVALID_VALUE"); + break; + case GL_INVALID_OPERATION: + ALOGE(" GL_INVALID_OPERATION"); + break; case GL_OUT_OF_MEMORY: - ALOGE(" OpenGLRenderer is out of memory!"); + ALOGE(" Out of memory!"); break; } } @@ -238,6 +247,7 @@ void OpenGLRenderer::resume() { } void OpenGLRenderer::detachFunctor(Functor* functor) { + ALOGD("OGLR %p detachFunctor %p", this, functor); mFunctors.remove(functor); } @@ -267,17 +277,24 @@ status_t OpenGLRenderer::invokeFunctors(Rect& dirty) { Functor* f = functors.itemAt(i); result |= (*f)(DrawGlInfo::kModeProcess, &info); - if (result != DrawGlInfo::kStatusDone) { + if (result & DrawGlInfo::kStatusDraw) { Rect localDirty(info.dirtyLeft, info.dirtyTop, info.dirtyRight, info.dirtyBottom); dirty.unionWith(localDirty); + } - if (result & DrawGlInfo::kStatusInvoke) { - mFunctors.add(f); - } + if (result & DrawGlInfo::kStatusInvoke) { + mFunctors.add(f); } } } + // Restore state possibly changed by the functors in process mode + GLboolean value; + glGetBooleanv(GL_BLEND, &value); + mCaches.blend = value; + + mCaches.activeTexture(0); + return result; } @@ -2787,6 +2804,7 @@ void OpenGLRenderer::drawTextureMesh(float left, float top, float right, float b void OpenGLRenderer::chooseBlending(bool blend, SkXfermode::Mode mode, ProgramDescription& description, bool swapSrcDst) { blend = blend || mode != SkXfermode::kSrcOver_Mode; + if (blend) { // These blend modes are not supported by OpenGL directly and have // to be implemented using shaders. Since the shader will perform diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp index e363b73498df..71a4ed7966ed 100644 --- a/libs/hwui/PathCache.cpp +++ b/libs/hwui/PathCache.cpp @@ -25,10 +25,15 @@ namespace android { namespace uirenderer { // Defined in ShapeCache.h -void computePathBounds(const SkPath *path, const SkPaint* paint, + +void computePathBounds(const SkPath* path, const SkPaint* paint, float& left, float& top, float& offset, uint32_t& width, uint32_t& height) { const SkRect& bounds = path->getBounds(); + computeBounds(bounds, paint, left, top, offset, width, height); +} +void computeBounds(const SkRect& bounds, const SkPaint* paint, + float& left, float& top, float& offset, uint32_t& width, uint32_t& height) { const float pathWidth = fmax(bounds.width(), 1.0f); const float pathHeight = fmax(bounds.height(), 1.0f); diff --git a/libs/hwui/ShapeCache.cpp b/libs/hwui/ShapeCache.cpp index 0d7cd9cb9a72..5a23235f7241 100644 --- a/libs/hwui/ShapeCache.cpp +++ b/libs/hwui/ShapeCache.cpp @@ -105,10 +105,29 @@ PathTexture* RectShapeCache::getRect(float width, float height, SkPaint* paint) PathTexture* texture = get(entry); if (!texture) { - SkPath path; - path.addRect(0.0f, 0.0f, width, height, SkPath::kCW_Direction); + SkRect bounds; + bounds.set(0.0f, 0.0f, width, height); - texture = addTexture(entry, &path, paint); + float left, top, offset; + uint32_t rectWidth, rectHeight; + computeBounds(bounds, paint, left, top, offset, rectWidth, rectHeight); + + if (!checkTextureSize(rectWidth, rectHeight)) return NULL; + + purgeCache(rectWidth, rectHeight); + + SkBitmap bitmap; + initBitmap(bitmap, rectWidth, rectHeight); + + SkPaint pathPaint(*paint); + initPaint(pathPaint); + + SkCanvas canvas(bitmap); + canvas.translate(-left + offset, -top + offset); + canvas.drawRect(bounds, pathPaint); + + texture = createTexture(0, 0, offset, rectWidth, rectHeight, 0); + addTexture(entry, &bitmap, texture); } return texture; diff --git a/libs/hwui/ShapeCache.h b/libs/hwui/ShapeCache.h index f180e942adc6..3a95b99cdc5c 100644 --- a/libs/hwui/ShapeCache.h +++ b/libs/hwui/ShapeCache.h @@ -336,6 +336,19 @@ public: protected: PathTexture* addTexture(const Entry& entry, const SkPath *path, const SkPaint* paint); + PathTexture* addTexture(const Entry& entry, SkBitmap* bitmap); + void addTexture(const Entry& entry, SkBitmap* bitmap, PathTexture* texture); + + /** + * Ensures there is enough space in the cache for a texture of the specified + * dimensions. + */ + void purgeCache(uint32_t width, uint32_t height); + + void initBitmap(SkBitmap& bitmap, uint32_t width, uint32_t height); + void initPaint(SkPaint& paint); + + bool checkTextureSize(uint32_t width, uint32_t height); PathTexture* get(Entry entry) { return mCache.get(entry); @@ -489,23 +502,25 @@ void ShapeCache<Entry>::removeTexture(PathTexture* texture) { } } -void computePathBounds(const SkPath *path, const SkPaint* paint, +void computePathBounds(const SkPath* path, const SkPaint* paint, + float& left, float& top, float& offset, uint32_t& width, uint32_t& height); +void computeBounds(const SkRect& bounds, const SkPaint* paint, float& left, float& top, float& offset, uint32_t& width, uint32_t& height); -template<class Entry> -PathTexture* ShapeCache<Entry>::addTexture(const Entry& entry, const SkPath *path, - const SkPaint* paint) { - - float left, top, offset; - uint32_t width, height; - computePathBounds(path, paint, left, top, offset, width, height); - - if (width > mMaxTextureSize || height > mMaxTextureSize) { - ALOGW("Shape %s too large to be rendered into a texture (%dx%d, max=%dx%d)", - mName, width, height, mMaxTextureSize, mMaxTextureSize); - return NULL; - } +static PathTexture* createTexture(float left, float top, float offset, + uint32_t width, uint32_t height, uint32_t id) { + PathTexture* texture = new PathTexture; + texture->left = left; + texture->top = top; + texture->offset = offset; + texture->width = width; + texture->height = height; + texture->generation = id; + return texture; +} +template<class Entry> +void ShapeCache<Entry>::purgeCache(uint32_t width, uint32_t height) { const uint32_t size = width * height; // Don't even try to cache a bitmap that's bigger than the cache if (size < mMaxSize) { @@ -513,38 +528,71 @@ PathTexture* ShapeCache<Entry>::addTexture(const Entry& entry, const SkPath *pat mCache.removeOldest(); } } +} - PathTexture* texture = new PathTexture; - texture->left = left; - texture->top = top; - texture->offset = offset; - texture->width = width; - texture->height = height; - texture->generation = path->getGenerationID(); - - SkBitmap bitmap; +template<class Entry> +void ShapeCache<Entry>::initBitmap(SkBitmap& bitmap, uint32_t width, uint32_t height) { bitmap.setConfig(SkBitmap::kA8_Config, width, height); bitmap.allocPixels(); bitmap.eraseColor(0); +} - SkPaint pathPaint(*paint); - +template<class Entry> +void ShapeCache<Entry>::initPaint(SkPaint& paint) { // Make sure the paint is opaque, color, alpha, filter, etc. // will be applied later when compositing the alpha8 texture - pathPaint.setColor(0xff000000); - pathPaint.setAlpha(255); - pathPaint.setColorFilter(NULL); - pathPaint.setMaskFilter(NULL); - pathPaint.setShader(NULL); + paint.setColor(0xff000000); + paint.setAlpha(255); + paint.setColorFilter(NULL); + paint.setMaskFilter(NULL); + paint.setShader(NULL); SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrc_Mode); - SkSafeUnref(pathPaint.setXfermode(mode)); + SkSafeUnref(paint.setXfermode(mode)); +} + +template<class Entry> +bool ShapeCache<Entry>::checkTextureSize(uint32_t width, uint32_t height) { + if (width > mMaxTextureSize || height > mMaxTextureSize) { + ALOGW("Shape %s too large to be rendered into a texture (%dx%d, max=%dx%d)", + mName, width, height, mMaxTextureSize, mMaxTextureSize); + return false; + } + return true; +} + +template<class Entry> +PathTexture* ShapeCache<Entry>::addTexture(const Entry& entry, const SkPath *path, + const SkPaint* paint) { + + float left, top, offset; + uint32_t width, height; + computePathBounds(path, paint, left, top, offset, width, height); + + if (!checkTextureSize(width, height)) return NULL; + + purgeCache(width, height); + + SkBitmap bitmap; + initBitmap(bitmap, width, height); + + SkPaint pathPaint(*paint); + initPaint(pathPaint); SkCanvas canvas(bitmap); canvas.translate(-left + offset, -top + offset); canvas.drawPath(*path, pathPaint); - generateTexture(bitmap, texture); + PathTexture* texture = createTexture(left, top, offset, width, height, path->getGenerationID()); + addTexture(entry, &bitmap, texture); + + return texture; +} + +template<class Entry> +void ShapeCache<Entry>::addTexture(const Entry& entry, SkBitmap* bitmap, PathTexture* texture) { + generateTexture(*bitmap, texture); + uint32_t size = texture->width * texture->height; if (size < mMaxSize) { mSize += size; SHAPE_LOGD("ShapeCache::get: create %s: name, size, mSize = %d, %d, %d", @@ -556,8 +604,6 @@ PathTexture* ShapeCache<Entry>::addTexture(const Entry& entry, const SkPath *pat } else { texture->cleanup = true; } - - return texture; } template<class Entry> diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 41d5c324da9c..ef5da5b36f7f 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -47,7 +47,6 @@ public class AudioManager { private final Context mContext; private long mVolumeKeyUpTime; - private int mVolumeControlStream = -1; private final boolean mUseMasterVolume; private static String TAG = "AudioManager"; @@ -89,6 +88,8 @@ public class AudioManager { * * @see #EXTRA_VIBRATE_TYPE * @see #EXTRA_VIBRATE_SETTING + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode and listen to {@link #RINGER_MODE_CHANGED_ACTION} instead. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String VIBRATE_SETTING_CHANGED_ACTION = @@ -134,6 +135,8 @@ public class AudioManager { * @see #VIBRATE_SETTING_ON * @see #VIBRATE_SETTING_OFF * @see #VIBRATE_SETTING_ONLY_SILENT + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode and listen to {@link #RINGER_MODE_CHANGED_ACTION} instead. */ public static final String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING"; @@ -143,6 +146,8 @@ public class AudioManager { * @see #VIBRATE_SETTING_CHANGED_ACTION * @see #VIBRATE_TYPE_NOTIFICATION * @see #VIBRATE_TYPE_RINGER + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode and listen to {@link #RINGER_MODE_CHANGED_ACTION} instead. */ public static final String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE"; @@ -304,13 +309,6 @@ public class AudioManager { public static final int FLAG_VIBRATE = 1 << 4; /** - * forces use of specified stream - * @hide - */ - public static final int FLAG_FORCE_STREAM = 1 << 5; - - - /** * Ringer mode that will be silent and will not vibrate. (This overrides the * vibrate setting.) * @@ -348,6 +346,8 @@ public class AudioManager { * @see #setVibrateSetting(int, int) * @see #getVibrateSetting(int) * @see #shouldVibrate(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public static final int VIBRATE_TYPE_RINGER = 0; @@ -357,6 +357,8 @@ public class AudioManager { * @see #setVibrateSetting(int, int) * @see #getVibrateSetting(int) * @see #shouldVibrate(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public static final int VIBRATE_TYPE_NOTIFICATION = 1; @@ -365,6 +367,8 @@ public class AudioManager { * * @see #setVibrateSetting(int, int) * @see #getVibrateSetting(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public static final int VIBRATE_SETTING_OFF = 0; @@ -373,6 +377,8 @@ public class AudioManager { * * @see #setVibrateSetting(int, int) * @see #getVibrateSetting(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public static final int VIBRATE_SETTING_ON = 1; @@ -382,6 +388,8 @@ public class AudioManager { * * @see #setVibrateSetting(int, int) * @see #getVibrateSetting(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public static final int VIBRATE_SETTING_ONLY_SILENT = 2; @@ -458,10 +466,6 @@ public class AudioManager { : ADJUST_LOWER, flags); } else { - if (mVolumeControlStream != -1) { - stream = mVolumeControlStream; - flags |= FLAG_FORCE_STREAM; - } adjustSuggestedStreamVolume( keyCode == KeyEvent.KEYCODE_VOLUME_UP ? ADJUST_RAISE @@ -500,10 +504,6 @@ public class AudioManager { } } else { int flags = FLAG_PLAY_SOUND; - if (mVolumeControlStream != -1) { - stream = mVolumeControlStream; - flags |= FLAG_FORCE_STREAM; - } adjustSuggestedStreamVolume( ADJUST_SAME, stream, @@ -717,6 +717,21 @@ public class AudioManager { } /** + * Get the stream type whose volume is driving the UI sounds volume. + * UI sounds are screen lock/unlock, camera shutter, key clicks... + * @hide + */ + public int getMasterStreamType() { + IAudioService service = getService(); + try { + return service.getMasterStreamType(); + } catch (RemoteException e) { + Log.e(TAG, "Dead object in getMasterStreamType", e); + return STREAM_RING; + } + } + + /** * Sets the ringer mode. * <p> * Silent mode will mute the volume and will not vibrate. Vibrate mode will @@ -943,7 +958,12 @@ public class AudioManager { * @hide */ public void forceVolumeControlStream(int streamType) { - mVolumeControlStream = streamType; + IAudioService service = getService(); + try { + service.forceVolumeControlStream(streamType, mICallBack); + } catch (RemoteException e) { + Log.e(TAG, "Dead object in forceVolumeControlStream", e); + } } /** @@ -962,6 +982,8 @@ public class AudioManager { * called. * @see #setVibrateSetting(int, int) * @see #getVibrateSetting(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public boolean shouldVibrate(int vibrateType) { IAudioService service = getService(); @@ -987,6 +1009,8 @@ public class AudioManager { * {@link #VIBRATE_SETTING_ONLY_SILENT}. * @see #setVibrateSetting(int, int) * @see #shouldVibrate(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public int getVibrateSetting(int vibrateType) { IAudioService service = getService(); @@ -1013,6 +1037,8 @@ public class AudioManager { * {@link #VIBRATE_SETTING_ONLY_SILENT}. * @see #getVibrateSetting(int) * @see #shouldVibrate(int) + * @deprecated Applications should maintain their own vibrate policy based on + * current ringer mode that can be queried via {@link #getRingerMode()}. */ public void setVibrateSetting(int vibrateType, int vibrateSetting) { IAudioService service = getService(); @@ -2302,4 +2328,12 @@ public class AudioManager { } } + /** {@hide} */ + public IRingtonePlayer getRingtonePlayer() { + try { + return getService().getRingtonePlayer(); + } catch (RemoteException e) { + return null; + } + } } diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 48d37127f326..2174d0653bba 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -16,14 +16,17 @@ package android.media; +import static android.Manifest.permission.REMOTE_AUDIO_PLAYBACK; import static android.media.AudioManager.RINGER_MODE_NORMAL; import static android.media.AudioManager.RINGER_MODE_SILENT; import static android.media.AudioManager.RINGER_MODE_VIBRATE; +import android.app.Activity; import android.app.ActivityManagerNative; import android.app.KeyguardManager; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; +import android.app.PendingIntent.OnFinished; import android.bluetooth.BluetoothA2dp; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; @@ -37,6 +40,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.database.ContentObserver; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; @@ -47,6 +51,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; +import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; @@ -84,7 +89,7 @@ import java.util.Stack; * * @hide */ -public class AudioService extends IAudioService.Stub { +public class AudioService extends IAudioService.Stub implements OnFinished { private static final String TAG = "AudioService"; @@ -149,6 +154,7 @@ public class AudioService extends IAudioService.Stub { private int mMode; // protects mRingerMode private final Object mSettingsLock = new Object(); + private boolean mMediaServerOk; private SoundPool mSoundPool; @@ -201,22 +207,39 @@ public class AudioService extends IAudioService.Stub { 15, // STREAM_DTMF 15 // STREAM_TTS }; - /* STREAM_VOLUME_ALIAS[] indicates for each stream if it uses the volume settings + /* mStreamVolumeAlias[] indicates for each stream if it uses the volume settings * of another stream: This avoids multiplying the volume settings for hidden * stream types that follow other stream behavior for volume settings - * NOTE: do not create loops in aliases! */ + * NOTE: do not create loops in aliases! + * Some streams alias to different streams according to device category (phone or tablet) or + * use case (in call s off call...).See updateStreamVolumeAlias() for more details + * mStreamVolumeAlias contains the default aliases for a voice capable device (phone) and + * STREAM_VOLUME_ALIAS_NON_VOICE for a non voice capable device (tablet).*/ private final int[] STREAM_VOLUME_ALIAS = new int[] { - AudioSystem.STREAM_VOICE_CALL, // STREAM_VOICE_CALL - AudioSystem.STREAM_SYSTEM, // STREAM_SYSTEM - AudioSystem.STREAM_RING, // STREAM_RING - AudioSystem.STREAM_MUSIC, // STREAM_MUSIC - AudioSystem.STREAM_ALARM, // STREAM_ALARM - AudioSystem.STREAM_RING, // STREAM_NOTIFICATION - AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO - AudioSystem.STREAM_SYSTEM, // STREAM_SYSTEM_ENFORCED - AudioSystem.STREAM_VOICE_CALL, // STREAM_DTMF - AudioSystem.STREAM_MUSIC // STREAM_TTS + AudioSystem.STREAM_VOICE_CALL, // STREAM_VOICE_CALL + AudioSystem.STREAM_RING, // STREAM_SYSTEM + AudioSystem.STREAM_RING, // STREAM_RING + AudioSystem.STREAM_MUSIC, // STREAM_MUSIC + AudioSystem.STREAM_ALARM, // STREAM_ALARM + AudioSystem.STREAM_RING, // STREAM_NOTIFICATION + AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO + AudioSystem.STREAM_RING, // STREAM_SYSTEM_ENFORCED + AudioSystem.STREAM_RING, // STREAM_DTMF + AudioSystem.STREAM_MUSIC // STREAM_TTS + }; + private final int[] STREAM_VOLUME_ALIAS_NON_VOICE = new int[] { + AudioSystem.STREAM_VOICE_CALL, // STREAM_VOICE_CALL + AudioSystem.STREAM_MUSIC, // STREAM_SYSTEM + AudioSystem.STREAM_RING, // STREAM_RING + AudioSystem.STREAM_MUSIC, // STREAM_MUSIC + AudioSystem.STREAM_ALARM, // STREAM_ALARM + AudioSystem.STREAM_RING, // STREAM_NOTIFICATION + AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO + AudioSystem.STREAM_MUSIC, // STREAM_SYSTEM_ENFORCED + AudioSystem.STREAM_MUSIC, // STREAM_DTMF + AudioSystem.STREAM_MUSIC // STREAM_TTS }; + private int[] mStreamVolumeAlias; private final AudioSystem.ErrorCallback mAudioSystemCallback = new AudioSystem.ErrorCallback() { public void onError(int error) { @@ -270,10 +293,6 @@ public class AudioService extends IAudioService.Stub { // Broadcast receiver for device connections intent broadcasts private final BroadcastReceiver mReceiver = new AudioServiceBroadcastReceiver(); - // Broadcast receiver for media button broadcasts (separate from mReceiver to - // independently change its priority) - private final BroadcastReceiver mMediaButtonReceiver = new MediaButtonBroadcastReceiver(); - // Used to alter media button redirection when the phone is ringing. private boolean mIsRinging = false; @@ -332,7 +351,7 @@ public class AudioService extends IAudioService.Stub { // message looper for SoundPool listener private Looper mSoundPoolLooper = null; // default volume applied to sound played with playSoundEffect() - private static final int SOUND_EFFECT_DEFAULT_VOLUME_DB = -20; + private static final int SOUND_EFFECT_DEFAULT_VOLUME_DB = 0; // volume applied to sound played with playSoundEffect() read from ro.config.sound_fx_volume private int SOUND_EFFECT_VOLUME_DB; // getActiveStreamType() will return STREAM_NOTIFICATION during this period after a notification @@ -342,7 +361,18 @@ public class AudioService extends IAudioService.Stub { private int mPrevVolDirection = AudioManager.ADJUST_SAME; // Keyguard manager proxy private KeyguardManager mKeyguardManager; - + // mVolumeControlStream is set by VolumePanel to temporarily force the stream type which volume + // is controlled by Vol keys. + private int mVolumeControlStream = -1; + private final Object mForceControlStreamLock = new Object(); + // VolumePanel is currently the only client of forceVolumeControlStream() and runs in system + // server process so in theory it is not necessary to monitor the client death. + // However it is good to be ready for future evolutions. + private ForceControlStreamClient mForceControlStreamClient = null; + // Used to play ringtones outside system_server + private volatile IRingtonePlayer mRingtonePlayer; + + private int mDeviceOrientation = Configuration.ORIENTATION_UNDEFINED; /////////////////////////////////////////////////////////////////////////// // Construction @@ -355,6 +385,9 @@ public class AudioService extends IAudioService.Stub { mVoiceCapable = mContext.getResources().getBoolean( com.android.internal.R.bool.config_voice_capable); + PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); + mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "mediaKeyEvent"); + // Intialized volume MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = SystemProperties.getInt( "ro.config.vc_call_vol_steps", @@ -365,13 +398,14 @@ public class AudioService extends IAudioService.Stub { SOUND_EFFECT_DEFAULT_VOLUME_DB); mVolumePanel = new VolumePanel(context, this); + mMode = AudioSystem.MODE_NORMAL; mForcedUseForComm = AudioSystem.FORCE_NONE; createAudioSystemThread(); readPersistedSettings(); mSettingsObserver = new SettingsObserver(); + updateStreamVolumeAlias(false /*updateVolumes*/); createStreamStates(); - mMode = AudioSystem.MODE_NORMAL; mMediaServerOk = true; // Call setRingerModeInt() to apply correct mute @@ -397,6 +431,16 @@ public class AudioService extends IAudioService.Stub { intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED); intentFilter.addAction(Intent.ACTION_SCREEN_ON); intentFilter.addAction(Intent.ACTION_SCREEN_OFF); + + // Register a configuration change listener only if requested by system properties + // to monitor orientation changes (off by default) + if (SystemProperties.getBoolean("ro.audio.monitorOrientation", false)) { + Log.v(TAG, "monitoring device orientation"); + intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); + // initialize orientation in AudioSystem + setOrientationForAudioSystem(); + } + context.registerReceiver(mReceiver, intentFilter); // Register for package removal intent broadcasts for media button receiver persistence @@ -405,13 +449,6 @@ public class AudioService extends IAudioService.Stub { pkgFilter.addDataScheme("package"); context.registerReceiver(mReceiver, pkgFilter); - // Register for media button intent broadcasts. - intentFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); - // Workaround for bug on priority setting - //intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - intentFilter.setPriority(Integer.MAX_VALUE); - context.registerReceiver(mMediaButtonReceiver, intentFilter); - // Register for phone state monitoring TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); @@ -450,26 +487,54 @@ public class AudioService extends IAudioService.Stub { VolumeStreamState[] streams = mStreamStates = new VolumeStreamState[numStreamTypes]; for (int i = 0; i < numStreamTypes; i++) { - streams[i] = new VolumeStreamState(System.VOLUME_SETTINGS[STREAM_VOLUME_ALIAS[i]], i); + streams[i] = new VolumeStreamState(System.VOLUME_SETTINGS[mStreamVolumeAlias[i]], i); } // Correct stream index values for streams with aliases for (int i = 0; i < numStreamTypes; i++) { int device = getDeviceForStream(i); - if (STREAM_VOLUME_ALIAS[i] != i) { + if (mStreamVolumeAlias[i] != i) { int index = rescaleIndex(streams[i].getIndex(device, false /* lastAudible */), - STREAM_VOLUME_ALIAS[i], + mStreamVolumeAlias[i], i); streams[i].mIndex.put(device, streams[i].getValidIndex(index)); streams[i].applyDeviceVolume(device); index = rescaleIndex(streams[i].getIndex(device, true /* lastAudible */), - STREAM_VOLUME_ALIAS[i], + mStreamVolumeAlias[i], i); streams[i].mLastAudibleIndex.put(device, streams[i].getValidIndex(index)); } } } + + private void updateStreamVolumeAlias(boolean updateVolumes) { + int dtmfStreamAlias; + if (mVoiceCapable) { + mStreamVolumeAlias = STREAM_VOLUME_ALIAS; + dtmfStreamAlias = AudioSystem.STREAM_RING; + } else { + mStreamVolumeAlias = STREAM_VOLUME_ALIAS_NON_VOICE; + dtmfStreamAlias = AudioSystem.STREAM_MUSIC; + } + if (isInCommunication()) { + dtmfStreamAlias = AudioSystem.STREAM_VOICE_CALL; + } + mStreamVolumeAlias[AudioSystem.STREAM_DTMF] = dtmfStreamAlias; + if (updateVolumes) { + mStreamStates[AudioSystem.STREAM_DTMF].setAllIndexes(mStreamStates[dtmfStreamAlias], + false /*lastAudible*/); + mStreamStates[AudioSystem.STREAM_DTMF].setAllIndexes(mStreamStates[dtmfStreamAlias], + true /*lastAudible*/); + sendMsg(mAudioHandler, + MSG_SET_ALL_VOLUMES, + SENDMSG_QUEUE, + 0, + 0, + mStreamStates[AudioSystem.STREAM_DTMF], 0); + } + } + private void readPersistedSettings() { final ContentResolver cr = mContentResolver; @@ -538,15 +603,15 @@ public class AudioService extends IAudioService.Stub { public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags) { int streamType; - if ((flags & AudioManager.FLAG_FORCE_STREAM) != 0) { - streamType = suggestedStreamType; + if (mVolumeControlStream != -1) { + streamType = mVolumeControlStream; } else { streamType = getActiveStreamType(suggestedStreamType); } // Play sounds on STREAM_RING only and if lock screen is not on. if ((flags & AudioManager.FLAG_PLAY_SOUND) != 0 && - ((STREAM_VOLUME_ALIAS[streamType] != AudioSystem.STREAM_RING) + ((mStreamVolumeAlias[streamType] != AudioSystem.STREAM_RING) || (mKeyguardManager != null && mKeyguardManager.isKeyguardLocked()))) { flags &= ~AudioManager.FLAG_PLAY_SOUND; } @@ -562,7 +627,7 @@ public class AudioService extends IAudioService.Stub { // use stream type alias here so that streams with same alias have the same behavior, // including with regard to silent mode control (e.g the use of STREAM_RING below and in // checkForRingerModeChange() in place of STREAM_RING or STREAM_NOTIFICATION) - int streamTypeAlias = STREAM_VOLUME_ALIAS[streamType]; + int streamTypeAlias = mStreamVolumeAlias[streamType]; VolumeStreamState streamState = mStreamStates[streamTypeAlias]; final int device = getDeviceForStream(streamTypeAlias); @@ -594,7 +659,7 @@ public class AudioService extends IAudioService.Stub { // on last audible index for an alias would not give the correct value int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int i = numStreamTypes - 1; i >= 0; i--) { - if (STREAM_VOLUME_ALIAS[i] == streamTypeAlias) { + if (mStreamVolumeAlias[i] == streamTypeAlias) { VolumeStreamState s = mStreamStates[i]; s.adjustLastAudibleIndex(direction, device); @@ -647,22 +712,22 @@ public class AudioService extends IAudioService.Stub { /** @see AudioManager#setStreamVolume(int, int, int) */ public void setStreamVolume(int streamType, int index, int flags) { ensureValidStreamType(streamType); - VolumeStreamState streamState = mStreamStates[STREAM_VOLUME_ALIAS[streamType]]; + VolumeStreamState streamState = mStreamStates[mStreamVolumeAlias[streamType]]; final int device = getDeviceForStream(streamType); // get last audible index if stream is muted, current index otherwise final int oldIndex = streamState.getIndex(device, (streamState.muteCount() != 0) /* lastAudible */); - // setting ring or notifications volume to 0 on voice capable devices enters silent mode - if (mVoiceCapable && (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) || - (STREAM_VOLUME_ALIAS[streamType] == AudioSystem.STREAM_RING))) { + // setting volume on master stream type also controls silent mode + if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) || + (mStreamVolumeAlias[streamType] == getMasterStreamType())) { int newRingerMode; if (index == 0) { newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1 ? AudioManager.RINGER_MODE_VIBRATE : AudioManager.RINGER_MODE_SILENT; - setStreamVolumeInt(STREAM_VOLUME_ALIAS[streamType], + setStreamVolumeInt(mStreamVolumeAlias[streamType], index, device, false, @@ -673,8 +738,8 @@ public class AudioService extends IAudioService.Stub { setRingerMode(newRingerMode); } - index = rescaleIndex(index * 10, streamType, STREAM_VOLUME_ALIAS[streamType]); - setStreamVolumeInt(STREAM_VOLUME_ALIAS[streamType], index, device, false, true); + index = rescaleIndex(index * 10, streamType, mStreamVolumeAlias[streamType]); + setStreamVolumeInt(mStreamVolumeAlias[streamType], index, device, false, true); // get last audible index if stream is muted, current index otherwise index = streamState.getIndex(device, (streamState.muteCount() != 0) /* lastAudible */); @@ -682,6 +747,57 @@ public class AudioService extends IAudioService.Stub { sendVolumeUpdate(streamType, oldIndex, index, flags); } + /** @see AudioManager#forceVolumeControlStream(int) */ + public void forceVolumeControlStream(int streamType, IBinder cb) { + synchronized(mForceControlStreamLock) { + mVolumeControlStream = streamType; + if (mVolumeControlStream == -1) { + if (mForceControlStreamClient != null) { + mForceControlStreamClient.release(); + mForceControlStreamClient = null; + } + } else { + mForceControlStreamClient = new ForceControlStreamClient(cb); + } + } + } + + private class ForceControlStreamClient implements IBinder.DeathRecipient { + private IBinder mCb; // To be notified of client's death + + ForceControlStreamClient(IBinder cb) { + if (cb != null) { + try { + cb.linkToDeath(this, 0); + } catch (RemoteException e) { + // Client has died! + Log.w(TAG, "ForceControlStreamClient() could not link to "+cb+" binder death"); + cb = null; + } + } + mCb = cb; + } + + public void binderDied() { + synchronized(mForceControlStreamLock) { + Log.w(TAG, "SCO client died"); + if (mForceControlStreamClient != this) { + Log.w(TAG, "unregistered control stream client died"); + } else { + mForceControlStreamClient = null; + mVolumeControlStream = -1; + } + } + } + + public void release() { + if (mCb != null) { + mCb.unlinkToDeath(this, 0); + mCb = null; + } + } + } + private int findVolumeDelta(int direction, int volume) { int delta = 0; if (direction == AudioManager.ADJUST_RAISE) { @@ -904,6 +1020,15 @@ public class AudioService extends IAudioService.Stub { return Math.round(AudioSystem.getMasterVolume() * MAX_MASTER_VOLUME); } + /** @see AudioManager#getMasterStreamType(int) */ + public int getMasterStreamType() { + if (mVoiceCapable) { + return AudioSystem.STREAM_RING; + } else { + return AudioSystem.STREAM_MUSIC; + } + } + /** @see AudioManager#getRingerMode() */ public int getRingerMode() { synchronized(mSettingsLock) { @@ -944,7 +1069,7 @@ public class AudioService extends IAudioService.Stub { // ring and notifications volume should never be 0 when not silenced // on voice capable devices if (mVoiceCapable && - STREAM_VOLUME_ALIAS[streamType] == AudioSystem.STREAM_RING) { + mStreamVolumeAlias[streamType] == AudioSystem.STREAM_RING) { Set set = mStreamStates[streamType].mLastAudibleIndex.entrySet(); Iterator i = set.iterator(); @@ -1184,8 +1309,10 @@ public class AudioService extends IAudioService.Stub { } int streamType = getActiveStreamType(AudioManager.USE_DEFAULT_STREAM_TYPE); int device = getDeviceForStream(streamType); - int index = mStreamStates[STREAM_VOLUME_ALIAS[streamType]].getIndex(device, false); - setStreamVolumeInt(STREAM_VOLUME_ALIAS[streamType], index, device, true, false); + int index = mStreamStates[mStreamVolumeAlias[streamType]].getIndex(device, false); + setStreamVolumeInt(mStreamVolumeAlias[streamType], index, device, true, false); + + updateStreamVolumeAlias(true /*updateVolumes*/); } return newModeOwnerPid; } @@ -1918,18 +2045,23 @@ public class AudioService extends IAudioService.Stub { } } - private int getActiveStreamType(int suggestedStreamType) { + private boolean isInCommunication() { + boolean isOffhook = false; if (mVoiceCapable) { - boolean isOffhook = false; try { ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone")); if (phone != null) isOffhook = phone.isOffhook(); } catch (RemoteException e) { Log.w(TAG, "Couldn't connect to phone service", e); } + } + return (isOffhook || getMode() == AudioManager.MODE_IN_COMMUNICATION); + } - if (isOffhook || getMode() == AudioManager.MODE_IN_COMMUNICATION) { + private int getActiveStreamType(int suggestedStreamType) { + if (mVoiceCapable) { + if (isInCommunication()) { if (AudioSystem.getForceUse(AudioSystem.FOR_COMMUNICATION) == AudioSystem.FORCE_BT_SCO) { // Log.v(TAG, "getActiveStreamType: Forcing STREAM_BLUETOOTH_SCO..."); @@ -1950,7 +2082,7 @@ public class AudioService extends IAudioService.Stub { return suggestedStreamType; } } else { - if (getMode() == AudioManager.MODE_IN_COMMUNICATION) { + if (isInCommunication()) { if (AudioSystem.getForceUse(AudioSystem.FOR_COMMUNICATION) == AudioSystem.FORCE_BT_SCO) { // Log.v(TAG, "getActiveStreamType: Forcing STREAM_BLUETOOTH_SCO..."); @@ -2121,7 +2253,7 @@ public class AudioService extends IAudioService.Stub { // 0 without the device being in silent mode if ((lastAudibleIndex == 0) && (mVoiceCapable || - (STREAM_VOLUME_ALIAS[mStreamType] != AudioSystem.STREAM_MUSIC))) { + (mStreamVolumeAlias[mStreamType] != AudioSystem.STREAM_MUSIC))) { lastAudibleIndex = AudioManager.DEFAULT_STREAM_VOLUME[mStreamType]; // Correct the data base sendMsg(mAudioHandler, @@ -2138,7 +2270,7 @@ public class AudioService extends IAudioService.Stub { // this is permitted on tablets for music stream type. if (checkSilentVolume && (index == 0) && (mVoiceCapable || - (STREAM_VOLUME_ALIAS[mStreamType] != AudioSystem.STREAM_MUSIC))) { + (mStreamVolumeAlias[mStreamType] != AudioSystem.STREAM_MUSIC))) { index = lastAudibleIndex; // Correct the data base sendMsg(mAudioHandler, @@ -2198,11 +2330,11 @@ public class AudioService extends IAudioService.Stub { // Apply change to all streams using this one as alias int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { - if (streamType != mStreamType && STREAM_VOLUME_ALIAS[streamType] == mStreamType) { + if (streamType != mStreamType && mStreamVolumeAlias[streamType] == mStreamType) { mStreamStates[streamType].setIndex(rescaleIndex(index, mStreamType, streamType), - device, + getDeviceForStream(streamType), lastAudible); } } @@ -2241,6 +2373,27 @@ public class AudioService extends IAudioService.Stub { return mIndexMax; } + public HashMap <Integer, Integer> getAllIndexes(boolean lastAudible) { + if (lastAudible) { + return mLastAudibleIndex; + } else { + return mIndex; + } + } + + public void setAllIndexes(VolumeStreamState srcStream, boolean lastAudible) { + HashMap <Integer, Integer> indexes = srcStream.getAllIndexes(lastAudible); + Set set = indexes.entrySet(); + Iterator i = set.iterator(); + while (i.hasNext()) { + Map.Entry entry = (Map.Entry)i.next(); + int device = ((Integer)entry.getKey()).intValue(); + int index = ((Integer)entry.getValue()).intValue(); + index = rescaleIndex(index, srcStream.getStreamType(), mStreamType); + setIndex(index, device, lastAudible); + } + } + public void mute(IBinder cb, boolean state) { VolumeDeathHandler handler = getDeathHandler(cb, state); if (handler == null) { @@ -2250,6 +2403,10 @@ public class AudioService extends IAudioService.Stub { handler.mute(state); } + public int getStreamType() { + return mStreamType; + } + private int getValidIndex(int index) { if (index < 0) { return 0; @@ -2424,8 +2581,8 @@ public class AudioService extends IAudioService.Stub { int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { if (streamType != streamState.mStreamType && - STREAM_VOLUME_ALIAS[streamType] == streamState.mStreamType) { - mStreamStates[streamType].applyDeviceVolume(device); + mStreamVolumeAlias[streamType] == streamState.mStreamType) { + mStreamStates[streamType].applyDeviceVolume(getDeviceForStream(streamType)); } } @@ -2449,7 +2606,7 @@ public class AudioService extends IAudioService.Stub { int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { if (streamType != streamState.mStreamType && - STREAM_VOLUME_ALIAS[streamType] == streamState.mStreamType) { + mStreamVolumeAlias[streamType] == streamState.mStreamType) { mStreamStates[streamType].applyAllVolumes(); } } @@ -2634,6 +2791,11 @@ public class AudioService extends IAudioService.Stub { // Restore master volume restoreMasterVolume(); + // Reset device orientation (if monitored for this device) + if (SystemProperties.getBoolean("ro.audio.monitorOrientation", false)) { + setOrientationForAudioSystem(); + } + // indicate the end of reconfiguration phase to audio HAL AudioSystem.setParameters("restarting=false"); break; @@ -3021,6 +3183,8 @@ public class AudioService extends IAudioService.Stub { AudioSystem.setParameters("screen_state=on"); } else if (action.equals(Intent.ACTION_SCREEN_OFF)) { AudioSystem.setParameters("screen_state=off"); + } else if (action.equalsIgnoreCase(Intent.ACTION_CONFIGURATION_CHANGED)) { + handleConfigurationChanged(context); } } } @@ -3343,54 +3507,109 @@ public class AudioService extends IAudioService.Stub { //========================================================================================== // RemoteControl //========================================================================================== + public void dispatchMediaKeyEvent(KeyEvent keyEvent) { + dispatchMediaKeyEvent(keyEvent, false /*needWakeLock*/); + } + + public void dispatchMediaKeyEventUnderWakelock(KeyEvent keyEvent) { + dispatchMediaKeyEvent(keyEvent, true /*needWakeLock*/); + } + /** - * Receiver for media button intents. Handles the dispatching of the media button event - * to one of the registered listeners, or if there was none, resumes the intent broadcast - * to the rest of the system. + * Handles the dispatching of the media button events to one of the registered listeners, + * or if there was none, broadcast a ACTION_MEDIA_BUTTON intent to the rest of the system. */ - private class MediaButtonBroadcastReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (!Intent.ACTION_MEDIA_BUTTON.equals(action)) { + private void dispatchMediaKeyEvent(KeyEvent keyEvent, boolean needWakeLock) { + // sanity check on the incoming key event + if (!isValidMediaKeyEvent(keyEvent)) { + Log.e(TAG, "not dispatching invalid media key event " + keyEvent); + return; + } + // event filtering + synchronized(mRingingLock) { + if (mIsRinging || (getMode() == AudioSystem.MODE_IN_CALL) || + (getMode() == AudioSystem.MODE_IN_COMMUNICATION) || + (getMode() == AudioSystem.MODE_RINGTONE) ) { return; } - KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); - if (event != null) { - // if in a call or ringing, do not break the current phone app behavior - // TODO modify this to let the phone app specifically get the RC focus - // add modify the phone app to take advantage of the new API - synchronized(mRingingLock) { - if (mIsRinging || (getMode() == AudioSystem.MODE_IN_CALL) || - (getMode() == AudioSystem.MODE_IN_COMMUNICATION) || - (getMode() == AudioSystem.MODE_RINGTONE) ) { - return; - } + } + if (needWakeLock) { + mMediaEventWakeLock.acquire(); + } + Intent keyIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); + keyIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); + synchronized(mRCStack) { + if (!mRCStack.empty()) { + // send the intent that was registered by the client + try { + mRCStack.peek().mMediaIntent.send(mContext, + needWakeLock ? WAKELOCK_RELEASE_ON_FINISHED : 0 /*code*/, + keyIntent, AudioService.this, mAudioHandler); + } catch (CanceledException e) { + Log.e(TAG, "Error sending pending intent " + mRCStack.peek()); + e.printStackTrace(); } - synchronized(mRCStack) { - if (!mRCStack.empty()) { - // create a new intent to fill in the extras of the registered PendingIntent - Intent targetedIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); - Bundle extras = intent.getExtras(); - if (extras != null) { - targetedIntent.putExtras(extras); - // trap the current broadcast - abortBroadcast(); - //Log.v(TAG, " Sending intent" + targetedIntent); - // send the intent that was registered by the client - try { - mRCStack.peek().mMediaIntent.send(context, 0, targetedIntent); - } catch (CanceledException e) { - Log.e(TAG, "Error sending pending intent " + mRCStack.peek()); - e.printStackTrace(); - } - } - } + } else { + // legacy behavior when nobody registered their media button event receiver + // through AudioManager + if (needWakeLock) { + keyIntent.putExtra(EXTRA_WAKELOCK_ACQUIRED, WAKELOCK_RELEASE_ON_FINISHED); } + mContext.sendOrderedBroadcast(keyIntent, null, mKeyEventDone, + mAudioHandler, Activity.RESULT_OK, null, null); } } } + private static boolean isValidMediaKeyEvent(KeyEvent keyEvent) { + if (keyEvent == null) { + return false; + } + final int keyCode = keyEvent.getKeyCode(); + switch (keyCode) { + case KeyEvent.KEYCODE_MUTE: + case KeyEvent.KEYCODE_HEADSETHOOK: + case KeyEvent.KEYCODE_MEDIA_PLAY: + case KeyEvent.KEYCODE_MEDIA_PAUSE: + case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: + case KeyEvent.KEYCODE_MEDIA_STOP: + case KeyEvent.KEYCODE_MEDIA_NEXT: + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + case KeyEvent.KEYCODE_MEDIA_REWIND: + case KeyEvent.KEYCODE_MEDIA_RECORD: + case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: + case KeyEvent.KEYCODE_MEDIA_CLOSE: + case KeyEvent.KEYCODE_MEDIA_EJECT: + break; + default: + return false; + } + return true; + } + + private PowerManager.WakeLock mMediaEventWakeLock; + + private static final int WAKELOCK_RELEASE_ON_FINISHED = 1980; //magic number + + // only set when wakelock was acquired, no need to check value when received + private static final String EXTRA_WAKELOCK_ACQUIRED = + "android.media.AudioService.WAKELOCK_ACQUIRED"; + + public void onSendFinished(PendingIntent pendingIntent, Intent intent, + int resultCode, String resultData, Bundle resultExtras) { + if (resultCode == WAKELOCK_RELEASE_ON_FINISHED) { + mMediaEventWakeLock.release(); + } + } + + BroadcastReceiver mKeyEventDone = new BroadcastReceiver() { + public void onReceive(Context context, Intent intent) { + if (intent.getExtras().containsKey(EXTRA_WAKELOCK_ACQUIRED)) { + mMediaEventWakeLock.release(); + } + } + }; + private final Object mCurrentRcLock = new Object(); /** * The one remote control client which will receive a request for display information. @@ -4083,12 +4302,69 @@ public class AudioService extends IAudioService.Stub { } } + //========================================================================================== + // Device orientation + //========================================================================================== + /** + * Handles device configuration changes that may map to a change in the orientation. + * This feature is optional, and is defined by the definition and value of the + * "ro.audio.monitorOrientation" system property. + */ + private void handleConfigurationChanged(Context context) { + try { + // reading new orientation "safely" (i.e. under try catch) in case anything + // goes wrong when obtaining resources and configuration + int newOrientation = context.getResources().getConfiguration().orientation; + if (newOrientation != mDeviceOrientation) { + mDeviceOrientation = newOrientation; + setOrientationForAudioSystem(); + } + } catch (Exception e) { + Log.e(TAG, "Error retrieving device orientation: " + e); + } + } + + private void setOrientationForAudioSystem() { + switch (mDeviceOrientation) { + case Configuration.ORIENTATION_LANDSCAPE: + //Log.i(TAG, "orientation is landscape"); + AudioSystem.setParameters("orientation=landscape"); + break; + case Configuration.ORIENTATION_PORTRAIT: + //Log.i(TAG, "orientation is portrait"); + AudioSystem.setParameters("orientation=portrait"); + break; + case Configuration.ORIENTATION_SQUARE: + //Log.i(TAG, "orientation is square"); + AudioSystem.setParameters("orientation=square"); + break; + case Configuration.ORIENTATION_UNDEFINED: + //Log.i(TAG, "orientation is undefined"); + AudioSystem.setParameters("orientation=undefined"); + break; + default: + Log.e(TAG, "Unknown orientation"); + } + } + + + @Override + public void setRingtonePlayer(IRingtonePlayer player) { + mContext.enforceCallingOrSelfPermission(REMOTE_AUDIO_PLAYBACK, null); + mRingtonePlayer = player; + } + + @Override + public IRingtonePlayer getRingtonePlayer() { + return mRingtonePlayer; + } + @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + // TODO probably a lot more to do here than just the audio focus and remote control stacks dumpFocusStack(pw); dumpRCStack(pw); } - - } diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index b77509548d9b..48f091c796e6 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -21,6 +21,9 @@ import android.content.ComponentName; import android.media.IAudioFocusDispatcher; import android.media.IRemoteControlClient; import android.media.IRemoteControlDisplay; +import android.media.IRingtonePlayer; +import android.net.Uri; +import android.view.KeyEvent; /** * {@hide} @@ -100,6 +103,9 @@ interface IAudioService { void unregisterAudioFocusClient(String clientId); + oneway void dispatchMediaKeyEvent(in KeyEvent keyEvent); + void dispatchMediaKeyEventUnderWakelock(in KeyEvent keyEvent); + oneway void registerMediaButtonIntent(in PendingIntent pi, in ComponentName c); oneway void unregisterMediaButtonIntent(in PendingIntent pi, in ComponentName c); @@ -113,6 +119,11 @@ interface IAudioService { oneway void remoteControlDisplayUsesBitmapSize(in IRemoteControlDisplay rcd, int w, int h); void startBluetoothSco(IBinder cb); - void stopBluetoothSco(IBinder cb); + + void forceVolumeControlStream(int streamType, IBinder cb); + + void setRingtonePlayer(IRingtonePlayer player); + IRingtonePlayer getRingtonePlayer(); + int getMasterStreamType(); } diff --git a/include/utils/Trace.h b/media/java/android/media/IRingtonePlayer.aidl index a0112d0ab2ec..44a0333ed76d 100644 --- a/include/utils/Trace.h +++ b/media/java/android/media/IRingtonePlayer.aidl @@ -14,30 +14,20 @@ * limitations under the License. */ -#ifndef ANDROID_TRACE_H -#define ANDROID_TRACE_H +package android.media; -#define ATRACE_TAG_NEVER 0 // The "never" tag is never enabled. -#define ATRACE_TAG_ALWAYS (1<<0) // The "always" tag is always enabled. -#define ATRACE_TAG_GRAPHICS (1<<1) -#define ATRACE_TAG_INPUT (1<<2) -#define ATRACE_TAG_VIEW (1<<3) -#define ATRACE_TAG_WEBVIEW (1<<4) +import android.net.Uri; -#define ATRACE_CALL() - -#define ATRACE_INT(name, value) - -#define ATRACE_ENABLED() false - -namespace android { - -class ScopedTrace { - -public: - inline ScopedTrace(uint64_t tag, const char* name) {} -}; - -}; // namespace android - -#endif // ANDROID_TRACE_H +/** + * @hide + */ +interface IRingtonePlayer { + /** Used for Ringtone.java playback */ + void play(IBinder token, in Uri uri, int streamType); + void stop(IBinder token); + boolean isPlaying(IBinder token); + + /** Used for Notification sound playback. */ + void playAsync(in Uri uri, boolean looping, int streamType); + void stopAsync(); +} diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 258760f2ae96..1dbd48ef109d 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -17,6 +17,7 @@ package android.media; import android.media.MediaCrypto; +import android.media.MediaFormat; import android.view.Surface; import java.nio.ByteBuffer; import java.util.Map; @@ -90,14 +91,14 @@ import java.util.Map; * Most formats also require the actual data to be prefixed by a number * of buffers containing setup data, or codec specific data, i.e. the * first few buffers submitted to the codec object after starting it must - * be codec specific data marked as such using the flag {@link #FLAG_CODECCONFIG} + * be codec specific data marked as such using the flag {@link #BUFFER_FLAG_CODEC_CONFIG} * in a call to {@link #queueInputBuffer}. * * Once the client reaches the end of the input data it signals the end of - * the input stream by specifying a flag of {@link #FLAG_EOS} in the call to + * the input stream by specifying a flag of {@link #BUFFER_FLAG_END_OF_STREAM} in the call to * {@link #queueInputBuffer}. The codec will continue to return output buffers * until it eventually signals the end of the output stream by specifying - * the same flag ({@link #FLAG_EOS}) on the BufferInfo returned in + * the same flag ({@link #BUFFER_FLAG_END_OF_STREAM}) on the BufferInfo returned in * {@link #dequeueOutputBuffer}. * * In order to start decoding data that's not adjacent to previously submitted @@ -109,42 +110,12 @@ import java.util.Map; * flush does not support format discontinuities, * for this a full stop(), configure(), start() cycle is necessary. * - * The format of the media data is specified as string/value pairs represented - * as a Map<String, Object>.<p> - * - * Fields common to all formats: - * - * <table> - * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr> - * <tr><td>mime</td><td>String</td><td>The type of the format.</td></tr> - * <tr><td>max-input-size</td><td>Integer</td><td>optional, maximum size of a buffer of input data</td></tr> - * <tr><td>bitrate</td><td>Integer</td><td><b>encoder-only</b>, desired bitrate in bits/second</td></tr> - * </table> - * - * Video formats have the following fields: - * <table> - * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr> - * <tr><td>width</td><td>Integer</td><td></td></tr> - * <tr><td>height</td><td>Integer</td><td></td></tr> - * <tr><td>color-format</td><td>Integer</td><td><b>encoder-only</b></td></tr> - * <tr><td>frame-rate</td><td>Integer or Float</td><td><b>encoder-only</b></td></tr> - * <tr><td>i-frame-interval</td><td>Integer</td><td><b>encoder-only</b></td></tr> - * <tr><td>stride</td><td>Integer</td><td><b>encoder-only</b>, optional, defaults to width</td></tr> - * <tr><td>slice-height</td><td>Integer</td><td><b>encoder-only</b>, optional, defaults to height</td></tr> - * </table> - * - * Audio formats have the following fields: - * <table> - * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr> - * <tr><td>channel-count</td><td>Integer</td><td></td></tr> - * <tr><td>sample-rate</td><td>Integer</td><td></td></tr> - * </table> - * -*/ + */ final public class MediaCodec { - /** Per buffer metadata includes an offset and size specifying - the range of valid data in the associated codec buffer. - */ + /** + * Per buffer metadata includes an offset and size specifying + * the range of valid data in the associated codec buffer. + */ public final static class BufferInfo { public void set( int newOffset, int newSize, long newTimeUs, int newFlags) { @@ -163,45 +134,46 @@ final public class MediaCodec { // The follow flag constants MUST stay in sync with their equivalents // in MediaCodec.h ! - /** This indicates that the buffer marked as such contains the data - for a sync frame. - */ - public static final int FLAG_SYNCFRAME = 1; - - /** This indicated that the buffer marked as such contains codec - initialization / codec specific data instead of media data. - */ - public static final int FLAG_CODECCONFIG = 2; + /** + * This indicates that the buffer marked as such contains the data + * for a sync frame. + */ + public static final int BUFFER_FLAG_SYNC_FRAME = 1; - /** This signals the end of stream, i.e. no buffers will be available - after this, unless of course, {@link #flush} follows. - */ - public static final int FLAG_EOS = 4; + /** + * This indicated that the buffer marked as such contains codec + * initialization / codec specific data instead of media data. + */ + public static final int BUFFER_FLAG_CODEC_CONFIG = 2; - // The following mode constants MUST stay in sync with their equivalents - // in media/hardware/CryptoAPI.h ! - public static final int MODE_UNENCRYPTED = 0; - public static final int MODE_AES_CTR = 1; + /** + * This signals the end of stream, i.e. no buffers will be available + * after this, unless of course, {@link #flush} follows. + */ + public static final int BUFFER_FLAG_END_OF_STREAM = 4; - /** Instantiate a decoder supporting input data of the given mime type. - * @param type The mime type of the input data. - */ + /** + * Instantiate a decoder supporting input data of the given mime type. + * @param type The mime type of the input data. + */ public static MediaCodec createDecoderByType(String type) { return new MediaCodec(type, true /* nameIsType */, false /* encoder */); } - /** Instantiate an encoder supporting output data of the given mime type. - * @param type The desired mime type of the output data. - */ + /** + * Instantiate an encoder supporting output data of the given mime type. + * @param type The desired mime type of the output data. + */ public static MediaCodec createEncoderByType(String type) { return new MediaCodec(type, true /* nameIsType */, true /* encoder */); } - /** If you know the exact name of the component you want to instantiate - use this method to instantiate it. Use with caution. - Likely to be used with information obtained from {@link android.media.MediaCodecList} - @param name The name of the codec to be instantiated. - */ + /** + * If you know the exact name of the component you want to instantiate + * use this method to instantiate it. Use with caution. + * Likely to be used with information obtained from {@link android.media.MediaCodecList} + * @param name The name of the codec to be instantiated. + */ public static MediaCodec createByCodecName(String name) { return new MediaCodec( name, false /* nameIsType */, false /* unused */); @@ -217,38 +189,44 @@ final public class MediaCodec { native_finalize(); } - // Make sure you call this when you're done to free up any opened - // component instance instead of relying on the garbage collector - // to do this for you at some point in the future. + /** + * Make sure you call this when you're done to free up any opened + * component instance instead of relying on the garbage collector + * to do this for you at some point in the future. + */ public native final void release(); - /** If this codec is to be used as an encoder, pass this flag. - */ - public static int CONFIGURE_FLAG_ENCODE = 1; + /** + * If this codec is to be used as an encoder, pass this flag. + */ + public static final int CONFIGURE_FLAG_ENCODE = 1; - /** Configures a component. + /** + * Configures a component. * - * @param format The format of the input data (decoder) or the desired - * format of the output data (encoder). - * @param surface Specify a surface on which to render the output of this - * decoder. - * @param crypto Specify a crypto object to facilitate secure decryption - * of the media data. - * @param flags Specify {@link #CONFIGURE_FLAG_ENCODE} to configure the - * component as an encoder. - */ + * @param format The format of the input data (decoder) or the desired + * format of the output data (encoder). + * @param surface Specify a surface on which to render the output of this + * decoder. + * @param crypto Specify a crypto object to facilitate secure decryption + * of the media data. + * @param flags Specify {@link #CONFIGURE_FLAG_ENCODE} to configure the + * component as an encoder. + */ public void configure( - Map<String, Object> format, + MediaFormat format, Surface surface, MediaCrypto crypto, int flags) { + Map<String, Object> formatMap = format.getMap(); + String[] keys = null; Object[] values = null; if (format != null) { - keys = new String[format.size()]; - values = new Object[format.size()]; + keys = new String[formatMap.size()]; + values = new Object[formatMap.size()]; int i = 0; - for (Map.Entry<String, Object> entry: format.entrySet()) { + for (Map.Entry<String, Object> entry: formatMap.entrySet()) { keys[i] = entry.getKey(); values[i] = entry.getValue(); ++i; @@ -262,22 +240,25 @@ final public class MediaCodec { String[] keys, Object[] values, Surface surface, MediaCrypto crypto, int flags); - /** After successfully configuring the component, call start. On return - * you can query the component for its input/output buffers. - */ + /** + * After successfully configuring the component, call start. On return + * you can query the component for its input/output buffers. + */ public native final void start(); - /** Finish the decode/encode session, note that the codec instance - * remains active and ready to be {@link #start}ed again. - * To ensure that it is available to other client call {@link #release} - * and don't just rely on garbage collection to eventually do this for you. - */ + /** + * Finish the decode/encode session, note that the codec instance + * remains active and ready to be {@link #start}ed again. + * To ensure that it is available to other client call {@link #release} + * and don't just rely on garbage collection to eventually do this for you. + */ public native final void stop(); - /** Flush both input and output ports of the component, all indices - * previously returned in calls to {@link #dequeueInputBuffer} and - * {@link #dequeueOutputBuffer} become invalid. - */ + /** + * Flush both input and output ports of the component, all indices + * previously returned in calls to {@link #dequeueInputBuffer} and + * {@link #dequeueOutputBuffer} become invalid. + */ public native final void flush(); public final static class CryptoException extends RuntimeException { @@ -293,46 +274,55 @@ final public class MediaCodec { private int mErrorCode; } - /** After filling a range of the input buffer at the specified index - * submit it to the component. + /** + * After filling a range of the input buffer at the specified index + * submit it to the component. * - * Many decoders require the actual compressed data stream to be - * preceded by "codec specific data", i.e. setup data used to initialize - * the codec such as PPS/SPS in the case of AVC video or code tables - * in the case of vorbis audio. - * The class {@link android.media.MediaExtractor} provides codec - * specific data as part of - * the returned track format in entries named "csd-0", "csd-1" ... + * Many decoders require the actual compressed data stream to be + * preceded by "codec specific data", i.e. setup data used to initialize + * the codec such as PPS/SPS in the case of AVC video or code tables + * in the case of vorbis audio. + * The class {@link android.media.MediaExtractor} provides codec + * specific data as part of + * the returned track format in entries named "csd-0", "csd-1" ... * - * These buffers should be submitted using the flag {@link #FLAG_CODECCONFIG}. + * These buffers should be submitted using the flag {@link #BUFFER_FLAG_CODEC_CONFIG}. * - * To indicate that this is the final piece of input data (or rather that - * no more input data follows unless the decoder is subsequently flushed) - * specify the flag {@link #FLAG_EOS}. + * To indicate that this is the final piece of input data (or rather that + * no more input data follows unless the decoder is subsequently flushed) + * specify the flag {@link #BUFFER_FLAG_END_OF_STREAM}. * - * @param index The index of a client-owned input buffer previously returned - * in a call to {@link #dequeueInputBuffer}. - * @param offset The byte offset into the input buffer at which the data starts. - * @param size The number of bytes of valid input data. - * @param presentationTimeUs The time at which this buffer should be rendered. - * @param flags A bitmask of flags {@link #FLAG_SYNCFRAME}, - * {@link #FLAG_CODECCONFIG} or {@link #FLAG_EOS}. - * @throws CryptoException if a crypto object has been specified in - * {@link #configure} - */ + * @param index The index of a client-owned input buffer previously returned + * in a call to {@link #dequeueInputBuffer}. + * @param offset The byte offset into the input buffer at which the data starts. + * @param size The number of bytes of valid input data. + * @param presentationTimeUs The time at which this buffer should be rendered. + * @param flags A bitmask of flags {@link #BUFFER_FLAG_SYNC_FRAME}, + * {@link #BUFFER_FLAG_CODEC_CONFIG} or {@link #BUFFER_FLAG_END_OF_STREAM}. + * @throws CryptoException if a crypto object has been specified in + * {@link #configure} + */ public native final void queueInputBuffer( int index, int offset, int size, long presentationTimeUs, int flags) throws CryptoException; - /** Metadata describing the structure of a (at least partially) encrypted - * input sample. - * A buffer's data is considered to be partitioned into "subSamples", - * each subSample starts with a (potentially empty) run of plain, - * unencrypted bytes followed by a (also potentially empty) run of - * encrypted bytes. - * numBytesOfClearData can be null to indicate that all data is encrypted. - */ + // The following mode constants MUST stay in sync with their equivalents + // in media/hardware/CryptoAPI.h ! + public static final int CRYPTO_MODE_UNENCRYPTED = 0; + public static final int CRYPTO_MODE_AES_CTR = 1; + + /** + * Metadata describing the structure of a (at least partially) encrypted + * input sample. + * A buffer's data is considered to be partitioned into "subSamples", + * each subSample starts with a (potentially empty) run of plain, + * unencrypted bytes followed by a (also potentially empty) run of + * encrypted bytes. + * numBytesOfClearData can be null to indicate that all data is encrypted. + * This information encapsulates per-sample metadata as outlined in + * ISO/IEC FDIS 23001-7:2011 "Common encryption in ISO base media file format files". + */ public final static class CryptoInfo { public void set( int newNumSubSamples, @@ -349,28 +339,44 @@ final public class MediaCodec { mode = newMode; } - /** The number of subSamples that make up the buffer's contents. */ + /** + * The number of subSamples that make up the buffer's contents. + */ public int numSubSamples; - /** The number of leading unencrypted bytes in each subSample. */ + /** + * The number of leading unencrypted bytes in each subSample. + */ public int[] numBytesOfClearData; - /** The number of trailing encrypted bytes in each subSample. */ + /** + * The number of trailing encrypted bytes in each subSample. + */ public int[] numBytesOfEncryptedData; - /** A 16-byte opaque key */ + /** + * A 16-byte opaque key + */ public byte[] key; - /** A 16-byte initialization vector */ + /** + * A 16-byte initialization vector + */ public byte[] iv; - /** The type of encryption that has been applied */ + /** + * The type of encryption that has been applied, + * see {@link #CRYPTO_MODE_UNENCRYPTED} and {@link #CRYPTO_MODE_AES_CTR}. + */ public int mode; }; - /** Similar to {@link #queueInputBuffer} but submits a buffer that is - * potentially encrypted. - * @param index The index of a client-owned input buffer previously returned - * in a call to {@link #dequeueInputBuffer}. - * @param offset The byte offset into the input buffer at which the data starts. - * @param presentationTimeUs The time at which this buffer should be rendered. - * @param flags A bitmask of flags {@link #FLAG_SYNCFRAME}, - * {@link #FLAG_CODECCONFIG} or {@link #FLAG_EOS}. + /** + * Similar to {@link #queueInputBuffer} but submits a buffer that is + * potentially encrypted. + * @param index The index of a client-owned input buffer previously returned + * in a call to {@link #dequeueInputBuffer}. + * @param offset The byte offset into the input buffer at which the data starts. + * @param info Metadata required to facilitate decryption, the object can be + * reused immediately after this call returns. + * @param presentationTimeUs The time at which this buffer should be rendered. + * @param flags A bitmask of flags {@link #BUFFER_FLAG_SYNC_FRAME}, + * {@link #BUFFER_FLAG_CODEC_CONFIG} or {@link #BUFFER_FLAG_END_OF_STREAM}. */ public native final void queueSecureInputBuffer( int index, @@ -379,69 +385,99 @@ final public class MediaCodec { long presentationTimeUs, int flags) throws CryptoException; - /** Returns the index of an input buffer to be filled with valid data - * or -1 if no such buffer is currently available. - * This method will return immediately if timeoutUs == 0, wait indefinitely - * for the availability of an input buffer if timeoutUs < 0 or wait up - * to "timeoutUs" microseconds if timeoutUs > 0. - * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite". - */ + /** + * Returns the index of an input buffer to be filled with valid data + * or -1 if no such buffer is currently available. + * This method will return immediately if timeoutUs == 0, wait indefinitely + * for the availability of an input buffer if timeoutUs < 0 or wait up + * to "timeoutUs" microseconds if timeoutUs > 0. + * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite". + */ public native final int dequeueInputBuffer(long timeoutUs); - /** If a non-negative timeout had been specified in the call + /** + * If a non-negative timeout had been specified in the call * to {@link #dequeueOutputBuffer}, indicates that the call timed out. - */ + */ public static final int INFO_TRY_AGAIN_LATER = -1; - /** The output format has changed, subsequent data will follow the new - * format. {@link #getOutputFormat} returns the new format. - */ + /** + * The output format has changed, subsequent data will follow the new + * format. {@link #getOutputFormat} returns the new format. + */ public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; - /** The output buffers have changed, the client must refer to the new - * set of output buffers returned by {@link #getOutputBuffers} from - * this point on. - */ + /** + * The output buffers have changed, the client must refer to the new + * set of output buffers returned by {@link #getOutputBuffers} from + * this point on. + */ public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; - /** Dequeue an output buffer, block at most "timeoutUs" microseconds. - * Returns the index of an output buffer that has been successfully - * decoded or one of the INFO_* constants below. - * @param info Will be filled with buffer meta data. - * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite". - */ + /** + * Dequeue an output buffer, block at most "timeoutUs" microseconds. + * Returns the index of an output buffer that has been successfully + * decoded or one of the INFO_* constants below. + * @param info Will be filled with buffer meta data. + * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite". + */ public native final int dequeueOutputBuffer( BufferInfo info, long timeoutUs); - /** If you are done with a buffer, use this call to return the buffer to - * the codec. If you previously specified a surface when configuring this - * video decoder you can optionally render the buffer. - * @param index The index of a client-owned output buffer previously returned - * in a call to {@link #dequeueOutputBuffer}. - * @param render If a valid surface was specified when configuring the codec, - * passing true renders this output buffer to the surface. - */ + /** + * If you are done with a buffer, use this call to return the buffer to + * the codec. If you previously specified a surface when configuring this + * video decoder you can optionally render the buffer. + * @param index The index of a client-owned output buffer previously returned + * in a call to {@link #dequeueOutputBuffer}. + * @param render If a valid surface was specified when configuring the codec, + * passing true renders this output buffer to the surface. + */ public native final void releaseOutputBuffer(int index, boolean render); - /** Call this after dequeueOutputBuffer signals a format change by returning - * {@link #INFO_OUTPUT_FORMAT_CHANGED} + /** + * Call this after dequeueOutputBuffer signals a format change by returning + * {@link #INFO_OUTPUT_FORMAT_CHANGED} */ - public native final Map<String, Object> getOutputFormat(); + public final MediaFormat getOutputFormat() { + return new MediaFormat(getOutputFormatNative()); + } - /** Call this after start() returns. + private native final Map<String, Object> getOutputFormatNative(); + + /** + * Call this after start() returns. */ public ByteBuffer[] getInputBuffers() { return getBuffers(true /* input */); } - /** Call this after start() returns and whenever dequeueOutputBuffer - * signals an output buffer change by returning - * {@link #INFO_OUTPUT_BUFFERS_CHANGED} + /** + * Call this after start() returns and whenever dequeueOutputBuffer + * signals an output buffer change by returning + * {@link #INFO_OUTPUT_BUFFERS_CHANGED} */ public ByteBuffer[] getOutputBuffers() { return getBuffers(false /* input */); } + /** + * The content is scaled to the surface dimensions + */ + public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; + + /** + * The content is scaled, maintaining its aspect ratio, the whole + * surface area is used, content may be cropped + */ + public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; + + /** + * If a surface has been specified in a previous call to {@link #configure} + * specifies the scaling mode to use. The default is "scale to fit". + */ + public native final void setVideoScalingMode(int mode); + private native final ByteBuffer[] getBuffers(boolean input); private static native final void native_init(); diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java new file mode 100644 index 000000000000..4398642fde95 --- /dev/null +++ b/media/java/android/media/MediaCodecInfo.java @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2012 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 android.media; + +public final class MediaCodecInfo { + private int mIndex; + + /* package private */ MediaCodecInfo(int index) { + mIndex = index; + } + + /** + * Retrieve the codec name. + */ + public final String getName() { + return MediaCodecList.getCodecName(mIndex); + } + + /** + * Query if the codec is an encoder. + */ + public final boolean isEncoder() { + return MediaCodecList.isEncoder(mIndex); + } + + /** + * Query the media types supported by the codec. + */ + public final String[] getSupportedTypes() { + return MediaCodecList.getSupportedTypes(mIndex); + } + + public static final class CodecCapabilities { + public CodecProfileLevel[] profileLevels; + + // from OMX_COLOR_FORMATTYPE + public final static int COLOR_FormatMonochrome = 1; + public final static int COLOR_Format8bitRGB332 = 2; + public final static int COLOR_Format12bitRGB444 = 3; + public final static int COLOR_Format16bitARGB4444 = 4; + public final static int COLOR_Format16bitARGB1555 = 5; + public final static int COLOR_Format16bitRGB565 = 6; + public final static int COLOR_Format16bitBGR565 = 7; + public final static int COLOR_Format18bitRGB666 = 8; + public final static int COLOR_Format18bitARGB1665 = 9; + public final static int COLOR_Format19bitARGB1666 = 10; + public final static int COLOR_Format24bitRGB888 = 11; + public final static int COLOR_Format24bitBGR888 = 12; + public final static int COLOR_Format24bitARGB1887 = 13; + public final static int COLOR_Format25bitARGB1888 = 14; + public final static int COLOR_Format32bitBGRA8888 = 15; + public final static int COLOR_Format32bitARGB8888 = 16; + public final static int COLOR_FormatYUV411Planar = 17; + public final static int COLOR_FormatYUV411PackedPlanar = 18; + public final static int COLOR_FormatYUV420Planar = 19; + public final static int COLOR_FormatYUV420PackedPlanar = 20; + public final static int COLOR_FormatYUV420SemiPlanar = 21; + public final static int COLOR_FormatYUV422Planar = 22; + public final static int COLOR_FormatYUV422PackedPlanar = 23; + public final static int COLOR_FormatYUV422SemiPlanar = 24; + public final static int COLOR_FormatYCbYCr = 25; + public final static int COLOR_FormatYCrYCb = 26; + public final static int COLOR_FormatCbYCrY = 27; + public final static int COLOR_FormatCrYCbY = 28; + public final static int COLOR_FormatYUV444Interleaved = 29; + public final static int COLOR_FormatRawBayer8bit = 30; + public final static int COLOR_FormatRawBayer10bit = 31; + public final static int COLOR_FormatRawBayer8bitcompressed = 32; + public final static int COLOR_FormatL2 = 33; + public final static int COLOR_FormatL4 = 34; + public final static int COLOR_FormatL8 = 35; + public final static int COLOR_FormatL16 = 36; + public final static int COLOR_FormatL24 = 37; + public final static int COLOR_FormatL32 = 38; + public final static int COLOR_FormatYUV420PackedSemiPlanar = 39; + public final static int COLOR_FormatYUV422PackedSemiPlanar = 40; + public final static int COLOR_Format18BitBGR666 = 41; + public final static int COLOR_Format24BitARGB6666 = 42; + public final static int COLOR_Format24BitABGR6666 = 43; + + public final static int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100; + public final static int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00; + + /** + * Defined in the OpenMAX IL specs, color format values are drawn from + * OMX_COLOR_FORMATTYPE. + */ + public int[] colorFormats; + }; + + public static final class CodecProfileLevel { + // from OMX_VIDEO_AVCPROFILETYPE + public static final int AVCProfileBaseline = 0x01; + public static final int AVCProfileMain = 0x02; + public static final int AVCProfileExtended = 0x04; + public static final int AVCProfileHigh = 0x08; + public static final int AVCProfileHigh10 = 0x10; + public static final int AVCProfileHigh422 = 0x20; + public static final int AVCProfileHigh444 = 0x40; + + // from OMX_VIDEO_AVCLEVELTYPE + public static final int AVCLevel1 = 0x01; + public static final int AVCLevel1b = 0x02; + public static final int AVCLevel11 = 0x04; + public static final int AVCLevel12 = 0x08; + public static final int AVCLevel13 = 0x10; + public static final int AVCLevel2 = 0x20; + public static final int AVCLevel21 = 0x40; + public static final int AVCLevel22 = 0x80; + public static final int AVCLevel3 = 0x100; + public static final int AVCLevel31 = 0x200; + public static final int AVCLevel32 = 0x400; + public static final int AVCLevel4 = 0x800; + public static final int AVCLevel41 = 0x1000; + public static final int AVCLevel42 = 0x2000; + public static final int AVCLevel5 = 0x4000; + public static final int AVCLevel51 = 0x8000; + + // from OMX_VIDEO_H263PROFILETYPE + public static final int H263ProfileBaseline = 0x01; + public static final int H263ProfileH320Coding = 0x02; + public static final int H263ProfileBackwardCompatible = 0x04; + public static final int H263ProfileISWV2 = 0x08; + public static final int H263ProfileISWV3 = 0x10; + public static final int H263ProfileHighCompression = 0x20; + public static final int H263ProfileInternet = 0x40; + public static final int H263ProfileInterlace = 0x80; + public static final int H263ProfileHighLatency = 0x100; + + // from OMX_VIDEO_H263LEVELTYPE + public static final int H263Level10 = 0x01; + public static final int H263Level20 = 0x02; + public static final int H263Level30 = 0x04; + public static final int H263Level40 = 0x08; + public static final int H263Level45 = 0x10; + public static final int H263Level50 = 0x20; + public static final int H263Level60 = 0x40; + public static final int H263Level70 = 0x80; + + // from OMX_VIDEO_MPEG4PROFILETYPE + public static final int MPEG4ProfileSimple = 0x01; + public static final int MPEG4ProfileSimpleScalable = 0x02; + public static final int MPEG4ProfileCore = 0x04; + public static final int MPEG4ProfileMain = 0x08; + public static final int MPEG4ProfileNbit = 0x10; + public static final int MPEG4ProfileScalableTexture = 0x20; + public static final int MPEG4ProfileSimpleFace = 0x40; + public static final int MPEG4ProfileSimpleFBA = 0x80; + public static final int MPEG4ProfileBasicAnimated = 0x100; + public static final int MPEG4ProfileHybrid = 0x200; + public static final int MPEG4ProfileAdvancedRealTime = 0x400; + public static final int MPEG4ProfileCoreScalable = 0x800; + public static final int MPEG4ProfileAdvancedCoding = 0x1000; + public static final int MPEG4ProfileAdvancedCore = 0x2000; + public static final int MPEG4ProfileAdvancedScalable = 0x4000; + public static final int MPEG4ProfileAdvancedSimple = 0x8000; + + // from OMX_VIDEO_MPEG4LEVELTYPE + public static final int MPEG4Level0 = 0x01; + public static final int MPEG4Level0b = 0x02; + public static final int MPEG4Level1 = 0x04; + public static final int MPEG4Level2 = 0x08; + public static final int MPEG4Level3 = 0x10; + public static final int MPEG4Level4 = 0x20; + public static final int MPEG4Level4a = 0x40; + public static final int MPEG4Level5 = 0x80; + + // from OMX_AUDIO_AACPROFILETYPE + public static final int AACObjectMain = 1; + public static final int AACObjectLC = 2; + public static final int AACObjectSSR = 3; + public static final int AACObjectLTP = 4; + public static final int AACObjectHE = 5; + public static final int AACObjectScalable = 6; + public static final int AACObjectERLC = 17; + public static final int AACObjectLD = 23; + public static final int AACObjectHE_PS = 29; + public static final int AACObjectELD = 39; + + /** + * Defined in the OpenMAX IL specs, depending on the type of media + * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, + * or OMX_VIDEO_MPEG4PROFILETYPE. + */ + public int profile; + + /** + * Defined in the OpenMAX IL specs, depending on the type of media + * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE + * or OMX_VIDEO_MPEG4LEVELTYPE. + */ + public int level; + }; + + public final CodecCapabilities getCapabilitiesForType( + String type) { + return MediaCodecList.getCodecCapabilities(mIndex, type); + } +} diff --git a/media/java/android/media/MediaCodecList.java b/media/java/android/media/MediaCodecList.java index 1772e9cf9fc6..174993434b25 100644 --- a/media/java/android/media/MediaCodecList.java +++ b/media/java/android/media/MediaCodecList.java @@ -16,49 +16,35 @@ package android.media; +import android.media.MediaCodecInfo; + /** * MediaCodecList class can be used to enumerate available codecs, * find a codec supporting a given format and query the capabilities * of a given codec. -*/ + */ final public class MediaCodecList { - /** Count the number of available codecs. - */ - public static native final int countCodecs(); + /** + * Count the number of available codecs. + */ + public static native final int getCodecCount(); - /** Retrieve the codec name at the specified index. */ - public static native final String getCodecName(int index); + public static final MediaCodecInfo getCodecInfoAt(int index) { + if (index < 0 || index > getCodecCount()) { + throw new IllegalArgumentException(); + } - /** Query if the codec at the specified index is an encoder. */ - public static native final boolean isEncoder(int index); - - /** Query the media types supported by the codec at the specified index */ - public static native final String[] getSupportedTypes(int index); + return new MediaCodecInfo(index); + } - public static final class CodecProfileLevel { - /** Defined in the OpenMAX IL specs, depending on the type of media - * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE - * or OMX_VIDEO_MPEG4PROFILETYPE. - */ - public int profile; + /* package private */ static native final String getCodecName(int index); - /** Defined in the OpenMAX IL specs, depending on the type of media - * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE - * or OMX_VIDEO_MPEG4LEVELTYPE. - */ - public int level; - }; + /* package private */ static native final boolean isEncoder(int index); - public static final class CodecCapabilities { - public CodecProfileLevel[] profileLevels; + /* package private */ static native final String[] getSupportedTypes(int index); - /** Defined in the OpenMAX IL specs, color format values are drawn from - * OMX_COLOR_FORMATTYPE. - */ - public int[] colorFormats; - }; - public static native final CodecCapabilities getCodecCapabilities( - int index, String type); + /* package private */ static native final MediaCodecInfo.CodecCapabilities + getCodecCapabilities(int index, String type); private static native final void native_init(); diff --git a/media/java/android/media/MediaCrypto.java b/media/java/android/media/MediaCrypto.java index b84ed72d265b..40a132635386 100644 --- a/media/java/android/media/MediaCrypto.java +++ b/media/java/android/media/MediaCrypto.java @@ -16,6 +16,9 @@ package android.media; +import android.media.MediaCryptoException; +import java.util.UUID; + /** * MediaCrypto class can be used in conjunction with {@link android.media.MediaCodec} * to decode encrypted media data. @@ -24,27 +27,47 @@ package android.media; * the method {@link #isCryptoSchemeSupported} can be used to query if a given * scheme is supported on the device. * -*/ + */ public final class MediaCrypto { - /** Query if the given scheme identified by its UUID is supported on - * this device. - * @param uuid The UUID of the crypto scheme. - */ - public static final native boolean isCryptoSchemeSupported(byte[] uuid); + /** + * Query if the given scheme identified by its UUID is supported on + * this device. + * @param uuid The UUID of the crypto scheme. + */ + public static final boolean isCryptoSchemeSupported(UUID uuid) { + return isCryptoSchemeSupportedNative(getByteArrayFromUUID(uuid)); + } + + private static final byte[] getByteArrayFromUUID(UUID uuid) { + long msb = uuid.getMostSignificantBits(); + long lsb = uuid.getLeastSignificantBits(); + + byte[] uuidBytes = new byte[16]; + for (int i = 0; i < 8; ++i) { + uuidBytes[i] = (byte)(msb >>> (8 * (7 - i))); + uuidBytes[8 + i] = (byte)(lsb >>> (8 * (7 - i))); + } - /** Instantiate a MediaCrypto object using opaque, crypto scheme specific - * data. - * @param uuid The UUID of the crypto scheme. - * @param initData Opaque initialization data specific to the crypto scheme. - */ - public MediaCrypto(byte[] uuid, byte[] initData) throws RuntimeException { - native_setup(uuid, initData); + return uuidBytes; } - /** Query if the crypto scheme requires the use of a secure decoder - * to decode data of the given mime type. - * @param mime The mime type of the media data - */ + private static final native boolean isCryptoSchemeSupportedNative(byte[] uuid); + + /** + * Instantiate a MediaCrypto object using opaque, crypto scheme specific + * data. + * @param uuid The UUID of the crypto scheme. + * @param initData Opaque initialization data specific to the crypto scheme. + */ + public MediaCrypto(UUID uuid, byte[] initData) throws MediaCryptoException { + native_setup(getByteArrayFromUUID(uuid), initData); + } + + /** + * Query if the crypto scheme requires the use of a secure decoder + * to decode data of the given mime type. + * @param mime The mime type of the media data + */ public final native boolean requiresSecureDecoderComponent(String mime); @Override @@ -54,7 +77,10 @@ public final class MediaCrypto { public native final void release(); private static native final void native_init(); - private native final void native_setup(byte[] uuid, byte[] initData); + + private native final void native_setup(byte[] uuid, byte[] initData) + throws MediaCryptoException; + private native final void native_finalize(); static { diff --git a/media/java/android/media/MediaCryptoException.java b/media/java/android/media/MediaCryptoException.java new file mode 100644 index 000000000000..44c5222c7fa9 --- /dev/null +++ b/media/java/android/media/MediaCryptoException.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2012 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 android.media; + +/** + * Exception thrown if MediaCrypto object could not be instantiated for + * whatever reason. + */ +public final class MediaCryptoException extends Exception { + public MediaCryptoException(String detailMessage) { + super(detailMessage); + } +} diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java index 9fdb81fc240f..58b30dbe5d0d 100644 --- a/media/java/android/media/MediaExtractor.java +++ b/media/java/android/media/MediaExtractor.java @@ -20,6 +20,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.media.MediaCodec; +import android.media.MediaFormat; import android.net.Uri; import java.io.FileDescriptor; import java.io.IOException; @@ -33,7 +34,7 @@ import java.util.Map; * <pre> * MediaExtractor extractor = new MediaExtractor(); * extractor.setDataSource(...); - * int numTracks = extractor.countTracks(); + * int numTracks = extractor.getTrackCount(); * for (int i = 0; i < numTracks; ++i) { * Map%lt;String, Object> format = extractor.getTrackFormat(i); * String mime = (String)format.get("mime"); @@ -52,7 +53,7 @@ import java.util.Map; * extractor.release(); * extractor = null; * </pre> -*/ + */ final public class MediaExtractor { public MediaExtractor() { native_setup(); @@ -174,89 +175,134 @@ final public class MediaExtractor { native_finalize(); } - /** Make sure you call this when you're done to free up any resources - * instead of relying on the garbage collector to do this for you at - * some point in the future. - */ + /** + * Make sure you call this when you're done to free up any resources + * instead of relying on the garbage collector to do this for you at + * some point in the future. + */ public native final void release(); - /** Count the number of tracks found in the data source. + /** + * Count the number of tracks found in the data source. + */ + public native final int getTrackCount(); + + /** + * Get the track format at the specified index. + * More detail on the representation can be found at {@link android.media.MediaCodec} + */ + public MediaFormat getTrackFormat(int index) { + return new MediaFormat(getTrackFormatNative(index)); + } + + private native Map<String, Object> getTrackFormatNative(int index); + + /** + * Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and + * {@link #getSampleTime} only retrieve information for the subset of tracks + * selected. + * Selecting the same track multiple times has no effect, the track is + * only selected once. */ - public native int countTracks(); - - /** Get the track format at the specified index. - * More detail on the representation can be found at {@link android.media.MediaCodec} - */ - public native Map<String, Object> getTrackFormat(int index); - - /** Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and - * {@link #getSampleTime} only retrieve information for the subset of tracks - * selected by the call below. - * Selecting the same track multiple times has no effect, the track - * only selected once. - * Media data will be returned in the order of their timestamps. - */ public native void selectTrack(int index); - /** All selected tracks seek near the requested time. The next sample - * returned for each selected track will be a sync sample. - */ - public native void seekTo(long timeUs); + /** + * Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and + * {@link #getSampleTime} only retrieve information for the subset of tracks + * selected. + */ + public native void unselectTrack(int index); + + /** + * If possible, seek to a sync sample at or before the specified time + */ + public static final int SEEK_TO_PREVIOUS_SYNC = 0; + /** + * If possible, seek to a sync sample at or after the specified time + */ + public static final int SEEK_TO_NEXT_SYNC = 1; + /** + * If possible, seek to the sync sample closest to the specified time + */ + public static final int SEEK_TO_CLOSEST_SYNC = 2; + /** + * If possible, seek to a sample closest to the specified time, which may + * NOT be a sync sample! + */ + public static final int SEEK_TO_CLOSEST = 3; + + /** + * All selected tracks seek near the requested time according to the + * specified mode. + */ + public native void seekTo(long timeUs, int mode); - /** Advance to the next sample. Returns false if no more sample data - * is available (end of stream). + /** + * Advance to the next sample. Returns false if no more sample data + * is available (end of stream). */ public native boolean advance(); - /** Retrieve the current encoded sample and store it in the byte buffer - * starting at the given offset. Returns the sample size (or -1 if - * no more samples are available). - */ + /** + * Retrieve the current encoded sample and store it in the byte buffer + * starting at the given offset. Returns the sample size (or -1 if + * no more samples are available). + */ public native int readSampleData(ByteBuffer byteBuf, int offset); - /** Returns the track index the current sample originates from (or -1 - * if no more samples are available) - */ + /** + * Returns the track index the current sample originates from (or -1 + * if no more samples are available) + */ public native int getSampleTrackIndex(); - /** Returns the current sample's presentation time in microseconds. - * or -1 if no more samples are available. - */ + /** + * Returns the current sample's presentation time in microseconds. + * or -1 if no more samples are available. + */ public native long getSampleTime(); // Keep these in sync with their equivalents in NuMediaExtractor.h - /** The sample is a sync sample */ + /** + * The sample is a sync sample + */ public static final int SAMPLE_FLAG_SYNC = 1; - /** The sample is (at least partially) encrypted, see also the documentation - * for {@link android.media.MediaCodec#queueSecureInputBuffer} - */ + /** + * The sample is (at least partially) encrypted, see also the documentation + * for {@link android.media.MediaCodec#queueSecureInputBuffer} + */ public static final int SAMPLE_FLAG_ENCRYPTED = 2; - /** Returns the current sample's flags. */ + /** + * Returns the current sample's flags. + */ public native int getSampleFlags(); - /** If the sample flags indicate that the current sample is at least - * partially encrypted, this call returns relevant information about - * the structure of the sample data required for decryption. - * @param info The android.media.MediaCodec.CryptoInfo structure - * to be filled in. - * @return true iff the sample flags contain {@link #SAMPLE_FLAG_ENCRYPTED} - */ + /** + * If the sample flags indicate that the current sample is at least + * partially encrypted, this call returns relevant information about + * the structure of the sample data required for decryption. + * @param info The android.media.MediaCodec.CryptoInfo structure + * to be filled in. + * @return true iff the sample flags contain {@link #SAMPLE_FLAG_ENCRYPTED} + */ public native boolean getSampleCryptoInfo(MediaCodec.CryptoInfo info); - /** Returns an estimate of how much data is presently cached in memory - expressed in microseconds. Returns -1 if that information is unavailable - or not applicable (no cache). + /** + * Returns an estimate of how much data is presently cached in memory + * expressed in microseconds. Returns -1 if that information is unavailable + * or not applicable (no cache). */ public native long getCachedDuration(); - /** Returns true iff we are caching data and the cache has reached the - * end of the data stream (for now, a future seek may of course restart - * the fetching of data). - * This API only returns a meaningful result if {link #getCachedDuration} - * indicates the presence of a cache, i.e. does NOT return -1. - */ + /** + * Returns true iff we are caching data and the cache has reached the + * end of the data stream (for now, a future seek may of course restart + * the fetching of data). + * This API only returns a meaningful result if {link #getCachedDuration} + * indicates the presence of a cache, i.e. does NOT return -1. + */ public native boolean hasCacheReachedEndOfStream(); private static native final void native_init(); diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java new file mode 100644 index 000000000000..df77c9e8e98e --- /dev/null +++ b/media/java/android/media/MediaFormat.java @@ -0,0 +1,290 @@ +/* + * Copyright (C) 2012 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 android.media; + +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.Map; + +/** + * Encapsulates the information describing the format of media data, + * be it audio or video. + * + * The format of the media data is specified as string/value pairs. + * + * Keys common to all formats: + * + * <table> + * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr> + * <tr><td>{@link #KEY_MIME}</td><td>String</td><td>The type of the format.</td></tr> + * <tr><td>{@link #KEY_MAX_INPUT_SIZE}</td><td>Integer</td><td>optional, maximum size of a buffer of input data</td></tr> + * <tr><td>{@link #KEY_BIT_RATE}</td><td>Integer</td><td><b>encoder-only</b>, desired bitrate in bits/second</td></tr> + * </table> + * + * Video formats have the following keys: + * <table> + * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr> + * <tr><td>{@link #KEY_WIDTH}</td><td>Integer</td><td></td></tr> + * <tr><td>{@link #KEY_HEIGHT}</td><td>Integer</td><td></td></tr> + * <tr><td>{@link #KEY_COLOR_FORMAT}</td><td>Integer</td><td><b>encoder-only</b></td></tr> + * <tr><td>{@link #KEY_FRAME_RATE}</td><td>Integer or Float</td><td><b>encoder-only</b></td></tr> + * <tr><td>{@link #KEY_I_FRAME_INTERVAL}</td><td>Integer</td><td><b>encoder-only</b></td></tr> + * </table> + * + * Audio formats have the following keys: + * <table> + * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr> + * <tr><td>{@link #KEY_CHANNEL_COUNT}</td><td>Integer</td><td></td></tr> + * <tr><td>{@link #KEY_SAMPLE_RATE}</td><td>Integer</td><td></td></tr> + * <tr><td>{@link #KEY_IS_ADTS}</td><td>Integer</td><td>optional, if content is AAC audio, setting this key to 1 indicates that each audio frame is prefixed by the ADTS header.</td></tr> + * <tr><td>{@link #KEY_AAC_PROFILE}</td><td>Integer</td><td><b>encoder-only</b>, optional, if content is AAC audio, specifies the desired profile.</td></tr> + * <tr><td>{@link #KEY_CHANNEL_MASK}</td><td>Integer</td><td>A mask of audio channel assignments</td></tr> + * </table> + * + */ +public final class MediaFormat { + private Map<String, Object> mMap; + + /** + * A key describing the mime type of the MediaFormat. + * The associated value is a string. + */ + public static final String KEY_MIME = "mime"; + + /** + * A key describing the sample rate of an audio format. + * The associated value is an integer + */ + public static final String KEY_SAMPLE_RATE = "sample-rate"; + + /** + * A key describing the number of channels in an audio format. + * The associated value is an integer + */ + public static final String KEY_CHANNEL_COUNT = "channel-count"; + + /** + * A key describing the width of the content in a video format. + * The associated value is an integer + */ + public static final String KEY_WIDTH = "width"; + + /** + * A key describing the height of the content in a video format. + * The associated value is an integer + */ + public static final String KEY_HEIGHT = "height"; + + /** A key describing the maximum size in bytes of a buffer of data + * described by this MediaFormat. + * The associated value is an integer + */ + public static final String KEY_MAX_INPUT_SIZE = "max-input-size"; + + /** + * A key describing the bitrate in bits/sec. + * The associated value is an integer + */ + public static final String KEY_BIT_RATE = "bitrate"; + + /** + * A key describing the color format of the content in a video format. + * Constants are declared in {@link android.media.MediaCodecInfo.CodecCapabilities}. + */ + public static final String KEY_COLOR_FORMAT = "color-format"; + + /** + * A key describing the frame rate of a video format in frames/sec. + * The associated value is an integer or a float. + */ + public static final String KEY_FRAME_RATE = "frame-rate"; + + /** + * A key describing the frequency of I frames expressed in secs + * between I frames. + * The associated value is an integer. + */ + public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval"; + + /** + * @hide + */ + public static final String KEY_STRIDE = "stride"; + /** + * @hide + */ + public static final String KEY_SLICE_HEIGHT = "slice-height"; + + /** + * A key describing the duration (in microseconds) of the content. + * The associated value is a long. + */ + public static final String KEY_DURATION = "durationUs"; + + /** + * A key mapping to a value of 1 if the content is AAC audio and + * audio frames are prefixed with an ADTS header. + * The associated value is an integer (0 or 1). + */ + public static final String KEY_IS_ADTS = "is-adts"; + + /** + * A key describing the channel composition of audio content. This mask + * is composed of bits drawn from channel mask definitions in {@link android.media.AudioFormat}. + * The associated value is an integer. + */ + public static final String KEY_CHANNEL_MASK = "channel-mask"; + + /** + * A key describing the AAC profile to be used (AAC audio formats only). + * Constants are declared in {@link android.media.MediaCodecInfo.CodecCapabilities}. + */ + public static final String KEY_AAC_PROFILE = "aac-profile"; + + /* package private */ MediaFormat(Map<String, Object> map) { + mMap = map; + } + + /** + * Creates an empty MediaFormat + */ + public MediaFormat() { + mMap = new HashMap(); + } + + /* package private */ Map<String, Object> getMap() { + return mMap; + } + + /** + * Returns true iff a key of the given name exists in the format. + */ + public final boolean containsKey(String name) { + return mMap.containsKey(name); + } + + /** + * Returns the value of an integer key. + */ + public final int getInteger(String name) { + return ((Integer)mMap.get(name)).intValue(); + } + + /** + * Returns the value of a long key. + */ + public final long getLong(String name) { + return ((Long)mMap.get(name)).longValue(); + } + + /** + * Returns the value of a float key. + */ + public final float getFloat(String name) { + return ((Float)mMap.get(name)).floatValue(); + } + + /** + * Returns the value of a string key. + */ + public final String getString(String name) { + return (String)mMap.get(name); + } + + /** + * Returns the value of a ByteBuffer key. + */ + public final ByteBuffer getByteBuffer(String name) { + return (ByteBuffer)mMap.get(name); + } + + /** + * Sets the value of an integer key. + */ + public final void setInteger(String name, int value) { + mMap.put(name, new Integer(value)); + } + + /** + * Sets the value of a long key. + */ + public final void setLong(String name, long value) { + mMap.put(name, new Long(value)); + } + + /** + * Sets the value of a float key. + */ + public final void setFloat(String name, float value) { + mMap.put(name, new Float(value)); + } + + /** + * Sets the value of a string key. + */ + public final void setString(String name, String value) { + mMap.put(name, value); + } + + /** + * Sets the value of a ByteBuffer key. + */ + public final void setByteBuffer(String name, ByteBuffer bytes) { + mMap.put(name, bytes); + } + + /** + * Creates a minimal audio format. + * @param mime The mime type of the content. + * @param sampleRate The sampling rate of the content. + * @param channelCount The number of audio channels in the content. + */ + public static final MediaFormat createAudioFormat( + String mime, + int sampleRate, + int channelCount) { + MediaFormat format = new MediaFormat(); + format.setString(KEY_MIME, mime); + format.setInteger(KEY_SAMPLE_RATE, sampleRate); + format.setInteger(KEY_CHANNEL_COUNT, channelCount); + + return format; + } + + /** + * Creates a minimal video format. + * @param mime The mime type of the content. + * @param width The width of the content (in pixels) + * @param height The height of the content (in pixels) + */ + public static final MediaFormat createVideoFormat( + String mime, + int width, + int height) { + MediaFormat format = new MediaFormat(); + format.setString(KEY_MIME, mime); + format.setInteger(KEY_WIDTH, width); + format.setInteger(KEY_HEIGHT, height); + + return format; + } + + @Override + public String toString() { + return mMap.toString(); + } +} diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index fae7d0b44541..7540c6f79072 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -394,6 +394,10 @@ import java.lang.ref.WeakReference; * <td>{} </p></td> * <td>This method can be called in any state and calling it does not change * the object state. </p></td></tr> + * <tr><td>setVideoScalingMode </p></td> + * <td>{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted} </p></td> + * <td>{Idle, Error}</p></td> + * <td>Successful invoke of this method does not change the state.</p></td></tr> * <tr><td>setLooping </p></td> * <td>{Idle, Initialized, Stopped, Prepared, Started, Paused, * PlaybackCompleted}</p></td> @@ -462,7 +466,7 @@ import java.lang.ref.WeakReference; * <td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td> * <td>{Idle, Initialized, Error}</p></td> * <td>Successful invoke of this method does not change the state.</p></td></tr> - * <tr><td>addExternalSource </p></td> + * <tr><td>addTimedTextSource </p></td> * <td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td> * <td>{Idle, Initialized, Error}</p></td> * <td>Successful invoke of this method does not change the state.</p></td></tr> @@ -470,7 +474,7 @@ import java.lang.ref.WeakReference; * <td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td> * <td>{Idle, Initialized, Error}</p></td> * <td>Successful invoke of this method does not change the state.</p></td></tr> - * <tr><td>disableTrack </p></td> + * <tr><td>deselectTrack </p></td> * <td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td> * <td>{Idle, Initialized, Error}</p></td> * <td>Successful invoke of this method does not change the state.</p></td></tr> @@ -598,7 +602,8 @@ public class MediaPlayer private static final int INVOKE_ID_ADD_EXTERNAL_SOURCE = 2; private static final int INVOKE_ID_ADD_EXTERNAL_SOURCE_FD = 3; private static final int INVOKE_ID_SELECT_TRACK = 4; - private static final int INVOKE_ID_UNSELECT_TRACK = 5; + private static final int INVOKE_ID_DESELECT_TRACK = 5; + private static final int INVOKE_ID_SET_VIDEO_SCALE_MODE = 6; /** * Create a request parcel which can be routed to the native media @@ -622,7 +627,7 @@ public class MediaPlayer * parcels for the request and reply. Both payloads' format is a * convention between the java caller and the native player. * Must be called after setDataSource to make sure a native player - * exists. + * exists. On failure, a RuntimeException is thrown. * * @param request Parcel with the data for the extension. The * caller must use {@link #newRequest()} to get one. @@ -630,13 +635,14 @@ public class MediaPlayer * @param reply Output parcel with the data returned by the * native player. * - * @return The status code see utils/Errors.h * {@hide} */ - public int invoke(Parcel request, Parcel reply) { + public void invoke(Parcel request, Parcel reply) { int retcode = native_invoke(request, reply); reply.setDataPosition(0); - return retcode; + if (retcode != 0) { + throw new RuntimeException("failure code: " + retcode); + } } /** @@ -690,6 +696,58 @@ public class MediaPlayer updateSurfaceScreenOn(); } + /* Do not change these video scaling mode values below without updating + * their counterparts in system/window.h! Please do not forget to update + * {@link #isVideoScalingModeSupported} when new video scaling modes + * are added. + */ + /** + * Specifies a video scaling mode. The content is stretched to the + * surface rendering area. When the surface has the same aspect ratio + * as the content, the aspect ratio of the content is maintained; + * otherwise, the aspect ratio of the content is not maintained when video + * is being rendered. Unlike {@ #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}, + * there is no content cropping with this video scaling mode. + */ + public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; + + /** + * Specifies a video scaling mode. The content is scaled, maintaining + * its aspect ratio. The whole surface area is always used. When the + * aspect ratio of the content is the same as the surface, no content + * is cropped; otherwise, content is cropped to fit the surface. + */ + public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; + /** + * Sets video scaling mode. To make the target video scaling mode + * effective during playback, this method must be called after + * data source is set. If not called, the default video + * scaling mode is {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT}. + * + * <p> The supported video scaling modes are: + * <ul> + * <li> {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT} + * <li> {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING} + * </ul> + * + * @param mode target video scaling mode. Most be one of the supported + * video scaling modes; otherwise, IllegalArgumentException will be thrown. + * + * @see MediaPlayer#VIDEO_SCALING_MODE_SCALE_TO_FIT + * @see MediaPlayer#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING + */ + public void setVideoScalingMode(int mode) { + if (isVideoScalingModeSupported(mode)) { + final String msg = "Scaling mode " + mode + " is not supported"; + throw new IllegalArgumentException(msg); + } + Parcel request = Parcel.obtain(); + Parcel reply = Parcel.obtain(); + request.writeInterfaceToken(IMEDIA_PLAYER); + request.writeInt(INVOKE_ID_SET_VIDEO_SCALE_MODE); + invoke(request, reply); + } + /** * Convenience method to create a MediaPlayer for a given Uri. * On success, {@link #prepare()} will already have been called and must not be called again. @@ -1504,8 +1562,7 @@ public class MediaPlayer /** * Class for MediaPlayer to return each audio/video/subtitle track's metadata. * - * {@see #getTrackInfo()}. - * {@hide} + * @see android.media.MediaPlayer#getTrackInfo */ static public class TrackInfo implements Parcelable { /** @@ -1539,17 +1596,16 @@ public class MediaPlayer mLanguage = in.readString(); } - /* - * No special parcel contents. Keep it as hide. - * {@hide} + /** + * {@inheritDoc} */ @Override public int describeContents() { return 0; } - /* - * {@hide} + /** + * {@inheritDoc} */ @Override public void writeToParcel(Parcel dest, int flags) { @@ -1577,22 +1633,18 @@ public class MediaPlayer /** * Returns an array of track information. - * If it is called in an invalid state, IllegalStateException will be thrown. * * @return Array of track info. The total number of tracks is the array length. - * Must be called again if an external source has been added after any of the - * addExternalSource methods are called. - * {@hide} + * Must be called again if an external timed text source has been added after any of the + * addTimedTextSource methods are called. + * @throws IllegalStateException if it is called in an invalid state. */ - public TrackInfo[] getTrackInfo() { + public TrackInfo[] getTrackInfo() throws IllegalStateException { Parcel request = Parcel.obtain(); Parcel reply = Parcel.obtain(); request.writeInterfaceToken(IMEDIA_PLAYER); request.writeInt(INVOKE_ID_GET_TRACK_INFO); - int status = invoke(request, reply); - if (status != 0) { - throw new IllegalStateException(); - } + invoke(request, reply); TrackInfo trackInfo[] = reply.createTypedArray(TrackInfo.CREATOR); return trackInfo; } @@ -1601,8 +1653,7 @@ public class MediaPlayer * in include/media/stagefright/MediaDefs.h and media/libstagefright/MediaDefs.cpp! */ /** - * MIME type for SubRip (SRT) container. Used in addExternalSource APIs. - * {@hide} + * MIME type for SubRip (SRT) container. Used in addTimedTextSource APIs. */ public static final String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip"; @@ -1619,23 +1670,23 @@ public class MediaPlayer /* TODO: Limit the total number of external timed text source to a reasonable number. */ /** - * Adds an external source file. + * Adds an external timed text source file. * * Currently supported format is SubRip with the file extension .srt, case insensitive. - * Note that a single external source may contain multiple tracks in it. + * Note that a single external timed text source may contain multiple tracks in it. * One can find the total number of available tracks using {@link #getTrackInfo()} to see what * additional tracks become available after this method call. * - * @param path The file path of external source file. + * @param path The file path of external timed text source file. * @param mimeType The mime type of the file. Must be one of the mime types listed above. * @throws IOException if the file cannot be accessed or is corrupted. * @throws IllegalArgumentException if the mimeType is not supported. - * {@hide} + * @throws IllegalStateException if called in an invalid state. */ - public void addExternalSource(String path, String mimeType) - throws IOException, IllegalArgumentException { + public void addTimedTextSource(String path, String mimeType) + throws IOException, IllegalArgumentException, IllegalStateException { if (!availableMimeTypeForExternalSource(mimeType)) { - final String msg = "Illegal mimeType for external source: " + mimeType; + final String msg = "Illegal mimeType for timed text source: " + mimeType; throw new IllegalArgumentException(msg); } @@ -1643,7 +1694,7 @@ public class MediaPlayer if (file.exists()) { FileInputStream is = new FileInputStream(file); FileDescriptor fd = is.getFD(); - addExternalSource(fd, mimeType); + addTimedTextSource(fd, mimeType); is.close(); } else { // We do not support the case where the path is not a file. @@ -1652,10 +1703,10 @@ public class MediaPlayer } /** - * Adds an external source file (Uri). + * Adds an external timed text source file (Uri). * * Currently supported format is SubRip with the file extension .srt, case insensitive. - * Note that a single external source may contain multiple tracks in it. + * Note that a single external timed text source may contain multiple tracks in it. * One can find the total number of available tracks using {@link #getTrackInfo()} to see what * additional tracks become available after this method call. * @@ -1664,13 +1715,13 @@ public class MediaPlayer * @param mimeType The mime type of the file. Must be one of the mime types listed above. * @throws IOException if the file cannot be accessed or is corrupted. * @throws IllegalArgumentException if the mimeType is not supported. - * {@hide} + * @throws IllegalStateException if called in an invalid state. */ - public void addExternalSource(Context context, Uri uri, String mimeType) - throws IOException, IllegalArgumentException { + public void addTimedTextSource(Context context, Uri uri, String mimeType) + throws IOException, IllegalArgumentException, IllegalStateException { String scheme = uri.getScheme(); if(scheme == null || scheme.equals("file")) { - addExternalSource(uri.getPath(), mimeType); + addTimedTextSource(uri.getPath(), mimeType); return; } @@ -1681,7 +1732,7 @@ public class MediaPlayer if (fd == null) { return; } - addExternalSource(fd.getFileDescriptor(), mimeType); + addTimedTextSource(fd.getFileDescriptor(), mimeType); return; } catch (SecurityException ex) { } catch (IOException ex) { @@ -1693,47 +1744,49 @@ public class MediaPlayer } /** - * Adds an external source file (FileDescriptor). + * Adds an external timed text source file (FileDescriptor). + * * It is the caller's responsibility to close the file descriptor. * It is safe to do so as soon as this call returns. * - * Currently supported format is SubRip with the file extension .srt, case insensitive. - * Note that a single external source may contain multiple tracks in it. - * One can find the total number of available tracks using {@link #getTrackInfo()} to see what - * additional tracks become available after this method call. + * Currently supported format is SubRip. Note that a single external timed text source may + * contain multiple tracks in it. One can find the total number of available tracks + * using {@link #getTrackInfo()} to see what additional tracks become available + * after this method call. * * @param fd the FileDescriptor for the file you want to play * @param mimeType The mime type of the file. Must be one of the mime types listed above. * @throws IllegalArgumentException if the mimeType is not supported. - * {@hide} + * @throws IllegalStateException if called in an invalid state. */ - public void addExternalSource(FileDescriptor fd, String mimeType) - throws IllegalArgumentException { + public void addTimedTextSource(FileDescriptor fd, String mimeType) + throws IllegalArgumentException, IllegalStateException { // intentionally less than LONG_MAX - addExternalSource(fd, 0, 0x7ffffffffffffffL, mimeType); + addTimedTextSource(fd, 0, 0x7ffffffffffffffL, mimeType); } /** * Adds an external timed text file (FileDescriptor). + * * It is the caller's responsibility to close the file descriptor. * It is safe to do so as soon as this call returns. * - * Currently supported format is SubRip with the file extension .srt, case insensitive. - * Note that a single external source may contain multiple tracks in it. - * One can find the total number of available tracks using {@link #getTrackInfo()} to see what - * additional tracks become available after this method call. + * Currently supported format is SubRip. Note that a single external timed text source may + * contain multiple tracks in it. One can find the total number of available tracks + * using {@link #getTrackInfo()} to see what additional tracks become available + * after this method call. * * @param fd the FileDescriptor for the file you want to play * @param offset the offset into the file where the data to be played starts, in bytes * @param length the length in bytes of the data to be played * @param mimeType The mime type of the file. Must be one of the mime types listed above. * @throws IllegalArgumentException if the mimeType is not supported. - * {@hide} + * @throws IllegalStateException if called in an invalid state. */ - public void addExternalSource(FileDescriptor fd, long offset, long length, String mimeType) - throws IllegalArgumentException { + public void addTimedTextSource(FileDescriptor fd, long offset, long length, String mimeType) + throws IllegalArgumentException, IllegalStateException { if (!availableMimeTypeForExternalSource(mimeType)) { - throw new IllegalArgumentException("Illegal mimeType for external source: " + mimeType); + throw new IllegalArgumentException("Illegal mimeType for timed text source: " + mimeType); } Parcel request = Parcel.obtain(); @@ -1771,43 +1824,40 @@ public class MediaPlayer * @param index the index of the track to be selected. The valid range of the index * is 0..total number of track - 1. The total number of tracks as well as the type of * each individual track can be found by calling {@link #getTrackInfo()} method. - * @see android.media.MediaPlayer.getTrackInfo - * {@hide} + * @throws IllegalStateException if called in an invalid state. + * + * @see android.media.MediaPlayer#getTrackInfo */ - public void selectTrack(int index) { - selectOrUnselectTrack(index, true /* select */); + public void selectTrack(int index) throws IllegalStateException { + selectOrDeselectTrack(index, true /* select */); } /** - * Unselect a track. + * Deselect a track. * <p> * Currently, the track must be a timed text track and no audio or video tracks can be - * unselected. If the timed text track identified by index has not been + * deselected. If the timed text track identified by index has not been * selected before, it throws an exception. * </p> - * @param index the index of the track to be unselected. The valid range of the index + * @param index the index of the track to be deselected. The valid range of the index * is 0..total number of tracks - 1. The total number of tracks as well as the type of * each individual track can be found by calling {@link #getTrackInfo()} method. + * @throws IllegalStateException if called in an invalid state. * - * @see android.media.MediaPlayer.getTrackInfo - * {@hide} + * @see android.media.MediaPlayer#getTrackInfo */ - public void unselectTrack(int index) { - selectOrUnselectTrack(index, false /* select */); + public void deselectTrack(int index) throws IllegalStateException { + selectOrDeselectTrack(index, false /* select */); } - private void selectOrUnselectTrack(int index, boolean select) { + private void selectOrDeselectTrack(int index, boolean select) + throws IllegalStateException { Parcel request = Parcel.obtain(); Parcel reply = Parcel.obtain(); request.writeInterfaceToken(IMEDIA_PLAYER); - request.writeInt(select? INVOKE_ID_SELECT_TRACK: INVOKE_ID_UNSELECT_TRACK); + request.writeInt(select? INVOKE_ID_SELECT_TRACK: INVOKE_ID_DESELECT_TRACK); request.writeInt(index); - int status = invoke(request, reply); - if (status != 0) { - String msg = select? "selectTrack ": "unselectTrack "; - msg += "failed for track index: " + index; - throw new RuntimeException(msg); - } + invoke(request, reply); } @@ -2142,7 +2192,6 @@ public class MediaPlayer /** * Interface definition of a callback to be invoked when a * timed text is available for display. - * {@hide} */ public interface OnTimedTextListener { @@ -2152,7 +2201,6 @@ public class MediaPlayer * @param mp the MediaPlayer associated with this callback * @param text the timed text sample which contains the text * needed to be displayed and the display format. - * {@hide} */ public void onTimedText(MediaPlayer mp, TimedText text); } @@ -2162,7 +2210,6 @@ public class MediaPlayer * for display. * * @param listener the callback that will be run - * {@hide} */ public void setOnTimedTextListener(OnTimedTextListener listener) { @@ -2329,4 +2376,11 @@ public class MediaPlayer private OnInfoListener mOnInfoListener; + /* + * Test whether a given video scaling mode is supported. + */ + private boolean isVideoScalingModeSupported(int mode) { + return (mode == VIDEO_SCALING_MODE_SCALE_TO_FIT || + mode == VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); + } } diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 2175131d5e28..9af201dba60f 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -251,12 +251,12 @@ public class MediaRecorder public static final int AMR_NB = 1; /** AMR (Wideband) audio codec */ public static final int AMR_WB = 2; - /** AAC audio codec */ + /** AAC Low Complexity (AAC-LC) audio codec */ public static final int AAC = 3; - /** @hide enhanced AAC audio codec */ - public static final int AAC_PLUS = 4; - /** @hide enhanced AAC plus audio codec */ - public static final int EAAC_PLUS = 5; + /** High Efficiency AAC (HE-AAC) audio codec */ + public static final int HE_AAC = 4; + /** Enhanced Low Delay AAC (AAC-ELD) audio codec */ + public static final int AAC_ELD = 5; } /** diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java index f16ba368d443..57139d28e643 100644 --- a/media/java/android/media/Ringtone.java +++ b/media/java/android/media/Ringtone.java @@ -18,17 +18,15 @@ package android.media; import android.content.ContentResolver; import android.content.Context; -import android.content.res.AssetFileDescriptor; import android.database.Cursor; -import android.media.AudioManager; -import android.media.MediaPlayer; import android.net.Uri; +import android.os.Binder; +import android.os.RemoteException; import android.provider.DrmStore; import android.provider.MediaStore; import android.provider.Settings; import android.util.Log; -import java.io.FileDescriptor; import java.io.IOException; /** @@ -41,7 +39,8 @@ import java.io.IOException; * @see RingtoneManager */ public class Ringtone { - private static String TAG = "Ringtone"; + private static final String TAG = "Ringtone"; + private static final boolean LOGD = true; private static final String[] MEDIA_COLUMNS = new String[] { MediaStore.Audio.Media._ID, @@ -55,21 +54,26 @@ public class Ringtone { DrmStore.Audio.TITLE }; - private MediaPlayer mAudio; + private final Context mContext; + private final AudioManager mAudioManager; + private final boolean mAllowRemote; + private final IRingtonePlayer mRemotePlayer; + private final Binder mRemoteToken; + + private MediaPlayer mLocalPlayer; private Uri mUri; private String mTitle; - private FileDescriptor mFileDescriptor; - private AssetFileDescriptor mAssetFileDescriptor; private int mStreamType = AudioManager.STREAM_RING; - private AudioManager mAudioManager; - - private Context mContext; - Ringtone(Context context) { + /** {@hide} */ + public Ringtone(Context context, boolean allowRemote) { mContext = context; mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); + mAllowRemote = allowRemote; + mRemotePlayer = allowRemote ? mAudioManager.getRingtonePlayer() : null; + mRemoteToken = allowRemote ? new Binder() : null; } /** @@ -79,18 +83,10 @@ public class Ringtone { */ public void setStreamType(int streamType) { mStreamType = streamType; - - if (mAudio != null) { - /* - * The stream type has to be set before the media player is - * prepared. Re-initialize it. - */ - try { - openMediaPlayer(); - } catch (IOException e) { - Log.w(TAG, "Couldn't set the stream type", e); - } - } + + // The stream type has to be set before the media player is prepared. + // Re-initialize it. + setUri(mUri); } /** @@ -164,67 +160,75 @@ public class Ringtone { return title; } - - private void openMediaPlayer() throws IOException { - if (mAudio != null) { - mAudio.release(); + + /** + * Set {@link Uri} to be used for ringtone playback. Attempts to open + * locally, otherwise will delegate playback to remote + * {@link IRingtonePlayer}. + * + * @hide + */ + public void setUri(Uri uri) { + destroyLocalPlayer(); + + mUri = uri; + if (mUri == null) { + return; } - mAudio = new MediaPlayer(); - if (mUri != null) { - mAudio.setDataSource(mContext, mUri); - } else if (mFileDescriptor != null) { - mAudio.setDataSource(mFileDescriptor); - } else if (mAssetFileDescriptor != null) { - // Note: using getDeclaredLength so that our behavior is the same - // as previous versions when the content provider is returning - // a full file. - if (mAssetFileDescriptor.getDeclaredLength() < 0) { - mAudio.setDataSource(mAssetFileDescriptor.getFileDescriptor()); - } else { - mAudio.setDataSource(mAssetFileDescriptor.getFileDescriptor(), - mAssetFileDescriptor.getStartOffset(), - mAssetFileDescriptor.getDeclaredLength()); + + // TODO: detect READ_EXTERNAL and specific content provider case, instead of relying on throwing + + // try opening uri locally before delegating to remote player + mLocalPlayer = new MediaPlayer(); + try { + mLocalPlayer.setDataSource(mContext, mUri); + mLocalPlayer.setAudioStreamType(mStreamType); + mLocalPlayer.prepare(); + + } catch (SecurityException e) { + destroyLocalPlayer(); + if (!mAllowRemote) { + throw new IllegalStateException("Remote playback not allowed", e); + } + } catch (IOException e) { + destroyLocalPlayer(); + if (!mAllowRemote) { + throw new IllegalStateException("Remote playback not allowed", e); } - } else { - throw new IOException("No data source set."); } - mAudio.setAudioStreamType(mStreamType); - mAudio.prepare(); - } - - void open(FileDescriptor fd) throws IOException { - mFileDescriptor = fd; - openMediaPlayer(); - } - void open(AssetFileDescriptor fd) throws IOException { - mAssetFileDescriptor = fd; - openMediaPlayer(); + if (LOGD) { + if (mLocalPlayer != null) { + Log.d(TAG, "Successfully created local player"); + } else { + Log.d(TAG, "Problem opening; delegating to remote player"); + } + } } - void open(Uri uri) throws IOException { - mUri = uri; - openMediaPlayer(); + /** {@hide} */ + public Uri getUri() { + return mUri; } /** * Plays the ringtone. */ public void play() { - if (mAudio == null) { - try { - openMediaPlayer(); - } catch (Exception ex) { - Log.e(TAG, "play() caught ", ex); - mAudio = null; - } - } - if (mAudio != null) { - // do not ringtones if stream volume is 0 + if (mLocalPlayer != null) { + // do not play ringtones if stream volume is 0 // (typically because ringer mode is silent). if (mAudioManager.getStreamVolume(mStreamType) != 0) { - mAudio.start(); + mLocalPlayer.start(); + } + } else if (mAllowRemote) { + try { + mRemotePlayer.play(mRemoteToken, mUri, mStreamType); + } catch (RemoteException e) { + Log.w(TAG, "Problem playing ringtone: " + e); } + } else { + throw new IllegalStateException("Neither local nor remote playback available"); } } @@ -232,10 +236,22 @@ public class Ringtone { * Stops a playing ringtone. */ public void stop() { - if (mAudio != null) { - mAudio.reset(); - mAudio.release(); - mAudio = null; + if (mLocalPlayer != null) { + destroyLocalPlayer(); + } else if (mAllowRemote) { + try { + mRemotePlayer.stop(mRemoteToken); + } catch (RemoteException e) { + Log.w(TAG, "Problem stopping ringtone: " + e); + } + } + } + + private void destroyLocalPlayer() { + if (mLocalPlayer != null) { + mLocalPlayer.reset(); + mLocalPlayer.release(); + mLocalPlayer = null; } } @@ -245,7 +261,18 @@ public class Ringtone { * @return True if playing, false otherwise. */ public boolean isPlaying() { - return mAudio != null && mAudio.isPlaying(); + if (mLocalPlayer != null) { + return mLocalPlayer.isPlaying(); + } else if (mAllowRemote) { + try { + return mRemotePlayer.isPlaying(mRemoteToken); + } catch (RemoteException e) { + Log.w(TAG, "Problem checking ringtone: " + e); + return false; + } + } else { + throw new IllegalStateException("Neither local nor remote playback available"); + } } void setTitle(String title) { diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java index a5b1f45cf978..5e18bfad0c1b 100644 --- a/media/java/android/media/RingtoneManager.java +++ b/media/java/android/media/RingtoneManager.java @@ -606,16 +606,15 @@ public class RingtoneManager { * @see #getRingtone(Context, Uri) */ private static Ringtone getRingtone(final Context context, Uri ringtoneUri, int streamType) { - try { - Ringtone r = new Ringtone(context); + final Ringtone r = new Ringtone(context, true); if (streamType >= 0) { r.setStreamType(streamType); } - r.open(ringtoneUri); + r.setUri(ringtoneUri); return r; } catch (Exception ex) { - Log.e(TAG, "Failed to open ringtone " + ringtoneUri); + Log.e(TAG, "Failed to open ringtone " + ringtoneUri + ": " + ex); } return null; diff --git a/media/java/android/media/TimedText.java b/media/java/android/media/TimedText.java index a055c8bac874..1d7c9682b5fd 100644 --- a/media/java/android/media/TimedText.java +++ b/media/java/android/media/TimedText.java @@ -16,6 +16,7 @@ package android.media; +import android.graphics.Rect; import android.os.Parcel; import android.util.Log; import java.util.HashMap; @@ -24,31 +25,48 @@ import java.util.List; import java.util.ArrayList; /** - * Class to hold the timed text's metadata. + * Class to hold the timed text's metadata, including: + * <ul> + * <li> The characters for rendering</li> + * <li> The rendering postion for the timed text</li> + * </ul> * - * {@hide} + * <p> To render the timed text, applications need to do the following: + * + * <ul> + * <li> Implement the {@link MediaPlayer.OnTimedTextListener} interface</li> + * <li> Register the {@link MediaPlayer.OnTimedTextListener} callback on a MediaPlayer object that is used for playback</li> + * <li> When a onTimedText callback is received, do the following: + * <ul> + * <li> call {@link #getText} to get the characters for rendering</li> + * <li> call {@link #getBounds} to get the text rendering area/region</li> + * </ul> + * </li> + * </ul> + * + * @see android.media.MediaPlayer */ -public class TimedText +public final class TimedText { private static final int FIRST_PUBLIC_KEY = 1; // These keys must be in sync with the keys in TextDescription.h - public static final int KEY_DISPLAY_FLAGS = 1; // int - public static final int KEY_STYLE_FLAGS = 2; // int - public static final int KEY_BACKGROUND_COLOR_RGBA = 3; // int - public static final int KEY_HIGHLIGHT_COLOR_RGBA = 4; // int - public static final int KEY_SCROLL_DELAY = 5; // int - public static final int KEY_WRAP_TEXT = 6; // int - public static final int KEY_START_TIME = 7; // int - public static final int KEY_STRUCT_BLINKING_TEXT_LIST = 8; // List<CharPos> - public static final int KEY_STRUCT_FONT_LIST = 9; // List<Font> - public static final int KEY_STRUCT_HIGHLIGHT_LIST = 10; // List<CharPos> - public static final int KEY_STRUCT_HYPER_TEXT_LIST = 11; // List<HyperText> - public static final int KEY_STRUCT_KARAOKE_LIST = 12; // List<Karaoke> - public static final int KEY_STRUCT_STYLE_LIST = 13; // List<Style> - public static final int KEY_STRUCT_TEXT_POS = 14; // TextPos - public static final int KEY_STRUCT_JUSTIFICATION = 15; // Justification - public static final int KEY_STRUCT_TEXT = 16; // Text + private static final int KEY_DISPLAY_FLAGS = 1; // int + private static final int KEY_STYLE_FLAGS = 2; // int + private static final int KEY_BACKGROUND_COLOR_RGBA = 3; // int + private static final int KEY_HIGHLIGHT_COLOR_RGBA = 4; // int + private static final int KEY_SCROLL_DELAY = 5; // int + private static final int KEY_WRAP_TEXT = 6; // int + private static final int KEY_START_TIME = 7; // int + private static final int KEY_STRUCT_BLINKING_TEXT_LIST = 8; // List<CharPos> + private static final int KEY_STRUCT_FONT_LIST = 9; // List<Font> + private static final int KEY_STRUCT_HIGHLIGHT_LIST = 10; // List<CharPos> + private static final int KEY_STRUCT_HYPER_TEXT_LIST = 11; // List<HyperText> + private static final int KEY_STRUCT_KARAOKE_LIST = 12; // List<Karaoke> + private static final int KEY_STRUCT_STYLE_LIST = 13; // List<Style> + private static final int KEY_STRUCT_TEXT_POS = 14; // TextPos + private static final int KEY_STRUCT_JUSTIFICATION = 15; // Justification + private static final int KEY_STRUCT_TEXT = 16; // Text private static final int LAST_PUBLIC_KEY = 16; @@ -85,219 +103,252 @@ public class TimedText private List<Style> mStyleList = null; private List<HyperText> mHyperTextList = null; - private TextPos mTextPos; - private Justification mJustification; - private Text mTextStruct; - - /** - * Helper class to hold the text length and text content of - * one text sample. The member variables in this class are - * read-only. - */ - public class Text { - /** - * The byte-count of this text sample - */ - public int textLen; - - /** - * The text sample - */ - public byte[] text; + private Rect mTextBounds = null; + private String mTextChars = null; - public Text() { } - } + private Justification mJustification; /** * Helper class to hold the start char offset and end char offset * for Blinking Text or Highlight Text. endChar is the end offset * of the text (startChar + number of characters to be highlighted * or blinked). The member variables in this class are read-only. + * {@hide} */ - public class CharPos { + public static final class CharPos { /** * The offset of the start character */ - public int startChar = -1; + public final int startChar; /** * The offset of the end character */ - public int endChar = -1; - - public CharPos() { } - } + public final int endChar; - /** - * Helper class to hold the box position to display the text sample. - * The member variables in this class are read-only. - */ - public class TextPos { /** - * The top position of the text + * Constuctor + * @param startChar the offset of the start character. + * @param endChar the offset of the end character. */ - public int top = -1; - - /** - * The left position of the text - */ - public int left = -1; - - /** - * The bottom position of the text - */ - public int bottom = -1; - - /** - * The right position of the text - */ - public int right = -1; - - public TextPos() { } + public CharPos(int startChar, int endChar) { + this.startChar = startChar; + this.endChar = endChar; + } } /** * Helper class to hold the justification for text display in the text box. * The member variables in this class are read-only. + * {@hide} */ - public class Justification { + public static final class Justification { /** - * horizontalJustification 0: left, 1: centered, -1: right + * horizontal justification 0: left, 1: centered, -1: right */ - public int horizontalJustification = -1; + public final int horizontalJustification; /** - * verticalJustification 0: top, 1: centered, -1: bottom + * vertical justification 0: top, 1: centered, -1: bottom */ - public int verticalJustification = -1; + public final int verticalJustification; - public Justification() { } + /** + * Constructor + * @param horizontal the horizontal justification of the text. + * @param vertical the vertical justification of the text. + */ + public Justification(int horizontal, int vertical) { + this.horizontalJustification = horizontal; + this.verticalJustification = vertical; + } } /** * Helper class to hold the style information to display the text. * The member variables in this class are read-only. + * {@hide} */ - public class Style { + public static final class Style { /** * The offset of the start character which applys this style */ - public int startChar = -1; + public final int startChar; /** * The offset of the end character which applys this style */ - public int endChar = -1; + public final int endChar; /** * ID of the font. This ID will be used to choose the font * to be used from the font list. */ - public int fontID = -1; + public final int fontID; /** * True if the characters should be bold */ - public boolean isBold = false; + public final boolean isBold; /** * True if the characters should be italic */ - public boolean isItalic = false; + public final boolean isItalic; /** * True if the characters should be underlined */ - public boolean isUnderlined = false; + public final boolean isUnderlined; /** * The size of the font */ - public int fontSize = -1; + public final int fontSize; /** * To specify the RGBA color: 8 bits each of red, green, blue, * and an alpha(transparency) value */ - public int colorRGBA = -1; + public final int colorRGBA; - public Style() { } + /** + * Constructor + * @param startChar the offset of the start character which applys this style + * @param endChar the offset of the end character which applys this style + * @param fontId the ID of the font. + * @param isBold whether the characters should be bold. + * @param isItalic whether the characters should be italic. + * @param isUnderlined whether the characters should be underlined. + * @param fontSize the size of the font. + * @param colorRGBA red, green, blue, and alpha value for color. + */ + public Style(int startChar, int endChar, int fontId, + boolean isBold, boolean isItalic, boolean isUnderlined, + int fontSize, int colorRGBA) { + this.startChar = startChar; + this.endChar = endChar; + this.fontID = fontId; + this.isBold = isBold; + this.isItalic = isItalic; + this.isUnderlined = isUnderlined; + this.fontSize = fontSize; + this.colorRGBA = colorRGBA; + } } /** * Helper class to hold the font ID and name. * The member variables in this class are read-only. + * {@hide} */ - public class Font { + public static final class Font { /** * The font ID */ - public int ID = -1; + public final int ID; /** * The font name */ - public String name; + public final String name; - public Font() { } + /** + * Constructor + * @param id the font ID. + * @param name the font name. + */ + public Font(int id, String name) { + this.ID = id; + this.name = name; + } } /** * Helper class to hold the karaoke information. * The member variables in this class are read-only. + * {@hide} */ - public class Karaoke { + public static final class Karaoke { /** * The start time (in milliseconds) to highlight the characters * specified by startChar and endChar. */ - public int startTimeMs = -1; + public final int startTimeMs; /** * The end time (in milliseconds) to highlight the characters * specified by startChar and endChar. */ - public int endTimeMs = -1; + public final int endTimeMs; /** * The offset of the start character to be highlighted */ - public int startChar = -1; + public final int startChar; /** * The offset of the end character to be highlighted */ - public int endChar = -1; + public final int endChar; - public Karaoke() { } + /** + * Constructor + * @param startTimeMs the start time (in milliseconds) to highlight + * the characters between startChar and endChar. + * @param endTimeMs the end time (in milliseconds) to highlight + * the characters between startChar and endChar. + * @param startChar the offset of the start character to be highlighted. + * @param endChar the offset of the end character to be highlighted. + */ + public Karaoke(int startTimeMs, int endTimeMs, int startChar, int endChar) { + this.startTimeMs = startTimeMs; + this.endTimeMs = endTimeMs; + this.startChar = startChar; + this.endChar = endChar; + } } /** * Helper class to hold the hyper text information. * The member variables in this class are read-only. + * {@hide} */ - public class HyperText { + public static final class HyperText { /** * The offset of the start character */ - public int startChar = -1; + public final int startChar; /** * The offset of the end character */ - public int endChar = -1; + public final int endChar; /** * The linked-to URL */ - public String URL; + public final String URL; /** * The "alt" string for user display */ - public String altString; + public final String altString; + - public HyperText() { } + /** + * Constructor + * @param startChar the offset of the start character. + * @param endChar the offset of the end character. + * @param url the linked-to URL. + * @param alt the "alt" string for display. + */ + public HyperText(int startChar, int endChar, String url, String alt) { + this.startChar = startChar; + this.endChar = endChar; + this.URL = url; + this.altString = alt; + } } /** @@ -315,6 +366,29 @@ public class TimedText } /** + * Get the characters in the timed text. + * + * @return the characters as a String object in the TimedText. Applications + * should stop rendering previous timed text at the current rendering region if + * a null is returned, until the next non-null timed text is received. + */ + public String getText() { + return mTextChars; + } + + /** + * Get the rectangle area or region for rendering the timed text as specified + * by a Rect object. + * + * @return the rectangle region to render the characters in the timed text. + * If no bounds information is available (a null is returned), render the + * timed text at the center bottom of the display. + */ + public Rect getBounds() { + return mTextBounds; + } + + /* * Go over all the records, collecting metadata keys and fields in the * Parcel. These are stored in mKeyObjectMap for application to retrieve. * @return false if an error occurred during parsing. Otherwise, true. @@ -339,11 +413,13 @@ public class TimedText return false; } - mTextStruct = new Text(); - mTextStruct.textLen = mParcel.readInt(); - - mTextStruct.text = mParcel.createByteArray(); - mKeyObjectMap.put(type, mTextStruct); + int textLen = mParcel.readInt(); + byte[] text = mParcel.createByteArray(); + if (text == null || text.length == 0) { + mTextChars = null; + } else { + mTextChars = new String(text); + } } else if (type != KEY_GLOBAL_SETTING) { Log.w(TAG, "Invalid timed text key found: " + type); @@ -408,10 +484,10 @@ public class TimedText break; } case KEY_STRUCT_JUSTIFICATION: { - mJustification = new Justification(); - mJustification.horizontalJustification = mParcel.readInt(); - mJustification.verticalJustification = mParcel.readInt(); + int horizontal = mParcel.readInt(); + int vertical = mParcel.readInt(); + mJustification = new Justification(horizontal, vertical); object = mJustification; break; @@ -422,14 +498,12 @@ public class TimedText break; } case KEY_STRUCT_TEXT_POS: { - mTextPos = new TextPos(); + int top = mParcel.readInt(); + int left = mParcel.readInt(); + int bottom = mParcel.readInt(); + int right = mParcel.readInt(); + mTextBounds = new Rect(left, top, right, bottom); - mTextPos.top = mParcel.readInt(); - mTextPos.left = mParcel.readInt(); - mTextPos.bottom = mParcel.readInt(); - mTextPos.right = mParcel.readInt(); - - object = mTextPos; break; } case KEY_SCROLL_DELAY: { @@ -454,43 +528,49 @@ public class TimedText return true; } - /** + /* * To parse and store the Style list. */ private void readStyle() { - Style style = new Style(); boolean endOfStyle = false; - + int startChar = -1; + int endChar = -1; + int fontId = -1; + boolean isBold = false; + boolean isItalic = false; + boolean isUnderlined = false; + int fontSize = -1; + int colorRGBA = -1; while (!endOfStyle && (mParcel.dataAvail() > 0)) { int key = mParcel.readInt(); switch (key) { case KEY_START_CHAR: { - style.startChar = mParcel.readInt(); + startChar = mParcel.readInt(); break; } case KEY_END_CHAR: { - style.endChar = mParcel.readInt(); + endChar = mParcel.readInt(); break; } case KEY_FONT_ID: { - style.fontID = mParcel.readInt(); + fontId = mParcel.readInt(); break; } case KEY_STYLE_FLAGS: { int flags = mParcel.readInt(); // In the absence of any bits set in flags, the text // is plain. Otherwise, 1: bold, 2: italic, 4: underline - style.isBold = ((flags % 2) == 1); - style.isItalic = ((flags % 4) >= 2); - style.isUnderlined = ((flags / 4) == 1); + isBold = ((flags % 2) == 1); + isItalic = ((flags % 4) >= 2); + isUnderlined = ((flags / 4) == 1); break; } case KEY_FONT_SIZE: { - style.fontSize = mParcel.readInt(); + fontSize = mParcel.readInt(); break; } case KEY_TEXT_COLOR_RGBA: { - style.colorRGBA = mParcel.readInt(); + colorRGBA = mParcel.readInt(); break; } default: { @@ -503,26 +583,28 @@ public class TimedText } } + Style style = new Style(startChar, endChar, fontId, isBold, + isItalic, isUnderlined, fontSize, colorRGBA); if (mStyleList == null) { mStyleList = new ArrayList<Style>(); } mStyleList.add(style); } - /** + /* * To parse and store the Font list */ private void readFont() { int entryCount = mParcel.readInt(); for (int i = 0; i < entryCount; i++) { - Font font = new Font(); - - font.ID = mParcel.readInt(); + int id = mParcel.readInt(); int nameLen = mParcel.readInt(); byte[] text = mParcel.createByteArray(); - font.name = new String(text, 0, nameLen); + final String name = new String(text, 0, nameLen); + + Font font = new Font(id, name); if (mFontList == null) { mFontList = new ArrayList<Font>(); @@ -531,14 +613,13 @@ public class TimedText } } - /** + /* * To parse and store the Highlight list */ private void readHighlight() { - CharPos pos = new CharPos(); - - pos.startChar = mParcel.readInt(); - pos.endChar = mParcel.readInt(); + int startChar = mParcel.readInt(); + int endChar = mParcel.readInt(); + CharPos pos = new CharPos(startChar, endChar); if (mHighlightPosList == null) { mHighlightPosList = new ArrayList<CharPos>(); @@ -546,19 +627,19 @@ public class TimedText mHighlightPosList.add(pos); } - /** + /* * To parse and store the Karaoke list */ private void readKaraoke() { int entryCount = mParcel.readInt(); for (int i = 0; i < entryCount; i++) { - Karaoke kara = new Karaoke(); - - kara.startTimeMs = mParcel.readInt(); - kara.endTimeMs = mParcel.readInt(); - kara.startChar = mParcel.readInt(); - kara.endChar = mParcel.readInt(); + int startTimeMs = mParcel.readInt(); + int endTimeMs = mParcel.readInt(); + int startChar = mParcel.readInt(); + int endChar = mParcel.readInt(); + Karaoke kara = new Karaoke(startTimeMs, endTimeMs, + startChar, endChar); if (mKaraokeList == null) { mKaraokeList = new ArrayList<Karaoke>(); @@ -567,22 +648,22 @@ public class TimedText } } - /** + /* * To parse and store HyperText list */ private void readHyperText() { - HyperText hyperText = new HyperText(); - - hyperText.startChar = mParcel.readInt(); - hyperText.endChar = mParcel.readInt(); + int startChar = mParcel.readInt(); + int endChar = mParcel.readInt(); int len = mParcel.readInt(); byte[] url = mParcel.createByteArray(); - hyperText.URL = new String(url, 0, len); + final String urlString = new String(url, 0, len); len = mParcel.readInt(); byte[] alt = mParcel.createByteArray(); - hyperText.altString = new String(alt, 0, len); + final String altString = new String(alt, 0, len); + HyperText hyperText = new HyperText(startChar, endChar, urlString, altString); + if (mHyperTextList == null) { mHyperTextList = new ArrayList<HyperText>(); @@ -590,14 +671,13 @@ public class TimedText mHyperTextList.add(hyperText); } - /** + /* * To parse and store blinking text list */ private void readBlinkingText() { - CharPos blinkingPos = new CharPos(); - - blinkingPos.startChar = mParcel.readInt(); - blinkingPos.endChar = mParcel.readInt(); + int startChar = mParcel.readInt(); + int endChar = mParcel.readInt(); + CharPos blinkingPos = new CharPos(startChar, endChar); if (mBlinkingPosList == null) { mBlinkingPosList = new ArrayList<CharPos>(); @@ -605,12 +685,12 @@ public class TimedText mBlinkingPosList.add(blinkingPos); } - /** + /* * To check whether the given key is valid. * @param key the key to be checked. * @return true if the key is a valid one. Otherwise, false. */ - public boolean isValidKey(final int key) { + private boolean isValidKey(final int key) { if (!((key >= FIRST_PUBLIC_KEY) && (key <= LAST_PUBLIC_KEY)) && !((key >= FIRST_PRIVATE_KEY) && (key <= LAST_PRIVATE_KEY))) { return false; @@ -618,34 +698,36 @@ public class TimedText return true; } - /** + /* * To check whether the given key is contained in this TimedText object. * @param key the key to be checked. * @return true if the key is contained in this TimedText object. * Otherwise, false. */ - public boolean containsKey(final int key) { + private boolean containsKey(final int key) { if (isValidKey(key) && mKeyObjectMap.containsKey(key)) { return true; } return false; } - /** + + /* * @return a set of the keys contained in this TimedText object. */ - public Set keySet() { + private Set keySet() { return mKeyObjectMap.keySet(); } - /** + /* * To retrieve the object associated with the key. Caller must make sure * the key is present using the containsKey method otherwise a * RuntimeException will occur. * @param key the key used to retrieve the object. - * @return an object. The object could be an instanceof Integer, List, or - * any of the helper classes such as TextPos, Justification, and Text. + * @return an object. The object could be 1) an instance of Integer; 2) a + * List of CharPos, Karaoke, Font, Style, and HyperText, or 3) an instance of + * Justification. */ - public Object getObject(final int key) { + private Object getObject(final int key) { if (containsKey(key)) { return mKeyObjectMap.get(key); } else { diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 8009fb5d73de..acd81e1d591e 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -39,6 +39,8 @@ #include <media/stagefright/foundation/AString.h> #include <media/stagefright/MediaErrors.h> +#include <system/window.h> + namespace android { // Keep these in sync with their equivalents in MediaCodec.java !!! @@ -111,9 +113,12 @@ status_t JMediaCodec::configure( int flags) { sp<SurfaceTextureClient> client; if (surfaceTexture != NULL) { - client = new SurfaceTextureClient(surfaceTexture); + mSurfaceTextureClient = new SurfaceTextureClient(surfaceTexture); + } else { + mSurfaceTextureClient.clear(); } - return mCodec->configure(format, client, crypto, flags); + + return mCodec->configure(format, mSurfaceTextureClient, crypto, flags); } status_t JMediaCodec::start() { @@ -121,6 +126,8 @@ status_t JMediaCodec::start() { } status_t JMediaCodec::stop() { + mSurfaceTextureClient.clear(); + return mCodec->stop(); } @@ -227,6 +234,12 @@ status_t JMediaCodec::getBuffers( return OK; } +void JMediaCodec::setVideoScalingMode(int mode) { + if (mSurfaceTextureClient != NULL) { + native_window_set_scaling_mode(mSurfaceTextureClient.get(), mode); + } +} + } // namespace android //////////////////////////////////////////////////////////////////////////////// @@ -617,9 +630,9 @@ static void android_media_MediaCodec_releaseOutputBuffer( throwExceptionAsNecessary(env, err); } -static jobject android_media_MediaCodec_getOutputFormat( +static jobject android_media_MediaCodec_getOutputFormatNative( JNIEnv *env, jobject thiz) { - ALOGV("android_media_MediaCodec_getOutputFormat"); + ALOGV("android_media_MediaCodec_getOutputFormatNative"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); @@ -663,6 +676,24 @@ static jobjectArray android_media_MediaCodec_getBuffers( return NULL; } +static void android_media_MediaCodec_setVideoScalingMode( + JNIEnv *env, jobject thiz, jint mode) { + sp<JMediaCodec> codec = getMediaCodec(env, thiz); + + if (codec == NULL) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return; + } + + if (mode != NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW + && mode != NATIVE_WINDOW_SCALING_MODE_SCALE_CROP) { + jniThrowException(env, "java/lang/InvalidArgumentException", NULL); + return; + } + + codec->setVideoScalingMode(mode); +} + static void android_media_MediaCodec_native_init(JNIEnv *env) { jclass clazz = env->FindClass("android/media/MediaCodec"); CHECK(clazz != NULL); @@ -759,12 +790,15 @@ static JNINativeMethod gMethods[] = { { "releaseOutputBuffer", "(IZ)V", (void *)android_media_MediaCodec_releaseOutputBuffer }, - { "getOutputFormat", "()Ljava/util/Map;", - (void *)android_media_MediaCodec_getOutputFormat }, + { "getOutputFormatNative", "()Ljava/util/Map;", + (void *)android_media_MediaCodec_getOutputFormatNative }, { "getBuffers", "(Z)[Ljava/nio/ByteBuffer;", (void *)android_media_MediaCodec_getBuffers }, + { "setVideoScalingMode", "(I)V", + (void *)android_media_MediaCodec_setVideoScalingMode }, + { "native_init", "()V", (void *)android_media_MediaCodec_native_init }, { "native_setup", "(Ljava/lang/String;ZZ)V", diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h index e2688bec3746..4936b53b978f 100644 --- a/media/jni/android_media_MediaCodec.h +++ b/media/jni/android_media_MediaCodec.h @@ -32,6 +32,7 @@ struct AString; struct ICrypto; struct ISurfaceTexture; struct MediaCodec; +struct SurfaceTextureClient; struct JMediaCodec : public RefBase { JMediaCodec( @@ -80,12 +81,15 @@ struct JMediaCodec : public RefBase { status_t getBuffers( JNIEnv *env, bool input, jobjectArray *bufArray) const; + void setVideoScalingMode(int mode); + protected: virtual ~JMediaCodec(); private: jclass mClass; jweak mObject; + sp<SurfaceTextureClient> mSurfaceTextureClient; sp<ALooper> mLooper; sp<MediaCodec> mCodec; diff --git a/media/jni/android_media_MediaCodecList.cpp b/media/jni/android_media_MediaCodecList.cpp index 7139560af4b8..0638b4ab7dda 100644 --- a/media/jni/android_media_MediaCodecList.cpp +++ b/media/jni/android_media_MediaCodecList.cpp @@ -27,7 +27,7 @@ using namespace android; -static jint android_media_MediaCodecList_countCodecs( +static jint android_media_MediaCodecList_getCodecCount( JNIEnv *env, jobject thiz) { return MediaCodecList::getInstance()->countCodecs(); } @@ -105,13 +105,13 @@ static jobject android_media_MediaCodecList_getCodecCapabilities( } jclass capsClazz = - env->FindClass("android/media/MediaCodecList$CodecCapabilities"); + env->FindClass("android/media/MediaCodecInfo$CodecCapabilities"); CHECK(capsClazz != NULL); jobject caps = env->AllocObject(capsClazz); jclass profileLevelClazz = - env->FindClass("android/media/MediaCodecList$CodecProfileLevel"); + env->FindClass("android/media/MediaCodecInfo$CodecProfileLevel"); CHECK(profileLevelClazz != NULL); jobjectArray profileLevelArray = @@ -140,7 +140,7 @@ static jobject android_media_MediaCodecList_getCodecCapabilities( jfieldID profileLevelsField = env->GetFieldID( capsClazz, "profileLevels", - "[Landroid/media/MediaCodecList$CodecProfileLevel;"); + "[Landroid/media/MediaCodecInfo$CodecProfileLevel;"); env->SetObjectField(caps, profileLevelsField, profileLevelArray); @@ -169,7 +169,7 @@ static void android_media_MediaCodecList_native_init(JNIEnv *env) { } static JNINativeMethod gMethods[] = { - { "countCodecs", "()I", (void *)android_media_MediaCodecList_countCodecs }, + { "getCodecCount", "()I", (void *)android_media_MediaCodecList_getCodecCount }, { "getCodecName", "(I)Ljava/lang/String;", (void *)android_media_MediaCodecList_getCodecName }, { "isEncoder", "(I)Z", (void *)android_media_MediaCodecList_isEncoder }, @@ -177,7 +177,7 @@ static JNINativeMethod gMethods[] = { (void *)android_media_MediaCodecList_getSupportedTypes }, { "getCodecCapabilities", - "(ILjava/lang/String;)Landroid/media/MediaCodecList$CodecCapabilities;", + "(ILjava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;", (void *)android_media_MediaCodecList_getCodecCapabilities }, { "native_init", "()V", (void *)android_media_MediaCodecList_native_init }, diff --git a/media/jni/android_media_MediaCrypto.cpp b/media/jni/android_media_MediaCrypto.cpp index f4f095365717..517a293535a0 100644 --- a/media/jni/android_media_MediaCrypto.cpp +++ b/media/jni/android_media_MediaCrypto.cpp @@ -210,7 +210,7 @@ static void android_media_MediaCrypto_native_setup( if (err != OK) { jniThrowException( env, - "java/lang/RuntimeException", + "android/media/MediaCryptoException", "Failed to instantiate crypto object."); return; } @@ -223,7 +223,7 @@ static void android_media_MediaCrypto_native_finalize( android_media_MediaCrypto_release(env, thiz); } -static jboolean android_media_MediaCrypto_isCryptoSchemeSupported( +static jboolean android_media_MediaCrypto_isCryptoSchemeSupportedNative( JNIEnv *env, jobject thiz, jbyteArray uuidObj) { jsize uuidLength = env->GetArrayLength(uuidObj); @@ -284,8 +284,8 @@ static JNINativeMethod gMethods[] = { { "native_finalize", "()V", (void *)android_media_MediaCrypto_native_finalize }, - { "isCryptoSchemeSupported", "([B)Z", - (void *)android_media_MediaCrypto_isCryptoSchemeSupported }, + { "isCryptoSchemeSupportedNative", "([B)Z", + (void *)android_media_MediaCrypto_isCryptoSchemeSupportedNative }, { "requiresSecureDecoderComponent", "(Ljava/lang/String;)Z", (void *)android_media_MediaCrypto_requiresSecureDecoderComponent }, diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp index 051833161c23..c93baf1e4726 100644 --- a/media/jni/android_media_MediaExtractor.cpp +++ b/media/jni/android_media_MediaExtractor.cpp @@ -96,8 +96,13 @@ status_t JMediaExtractor::selectTrack(size_t index) { return mImpl->selectTrack(index); } -status_t JMediaExtractor::seekTo(int64_t timeUs) { - return mImpl->seekTo(timeUs); +status_t JMediaExtractor::unselectTrack(size_t index) { + return mImpl->unselectTrack(index); +} + +status_t JMediaExtractor::seekTo( + int64_t timeUs, MediaSource::ReadOptions::SeekMode mode) { + return mImpl->seekTo(timeUs, mode); } status_t JMediaExtractor::advance() { @@ -232,7 +237,7 @@ static void android_media_MediaExtractor_release(JNIEnv *env, jobject thiz) { setMediaExtractor(env, thiz, NULL); } -static jint android_media_MediaExtractor_countTracks( +static jint android_media_MediaExtractor_getTrackCount( JNIEnv *env, jobject thiz) { sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz); @@ -244,7 +249,7 @@ static jint android_media_MediaExtractor_countTracks( return extractor->countTracks(); } -static jobject android_media_MediaExtractor_getTrackFormat( +static jobject android_media_MediaExtractor_getTrackFormatNative( JNIEnv *env, jobject thiz, jint index) { sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz); @@ -281,8 +286,25 @@ static void android_media_MediaExtractor_selectTrack( } } +static void android_media_MediaExtractor_unselectTrack( + JNIEnv *env, jobject thiz, jint index) { + sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz); + + if (extractor == NULL) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return; + } + + status_t err = extractor->unselectTrack(index); + + if (err != OK) { + jniThrowException(env, "java/lang/IllegalArgumentException", NULL); + return; + } +} + static void android_media_MediaExtractor_seekTo( - JNIEnv *env, jobject thiz, jlong timeUs) { + JNIEnv *env, jobject thiz, jlong timeUs, jint mode) { sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz); if (extractor == NULL) { @@ -290,7 +312,13 @@ static void android_media_MediaExtractor_seekTo( return; } - extractor->seekTo(timeUs); + if (mode < MediaSource::ReadOptions::SEEK_PREVIOUS_SYNC + || mode > MediaSource::ReadOptions::SEEK_CLOSEST) { + jniThrowException(env, "java/lang/IllegalArgumentException", NULL); + return; + } + + extractor->seekTo(timeUs, (MediaSource::ReadOptions::SeekMode)mode); } static jboolean android_media_MediaExtractor_advance( @@ -641,14 +669,17 @@ static void android_media_MediaExtractor_native_finalize( static JNINativeMethod gMethods[] = { { "release", "()V", (void *)android_media_MediaExtractor_release }, - { "countTracks", "()I", (void *)android_media_MediaExtractor_countTracks }, + { "getTrackCount", "()I", (void *)android_media_MediaExtractor_getTrackCount }, - { "getTrackFormat", "(I)Ljava/util/Map;", - (void *)android_media_MediaExtractor_getTrackFormat }, + { "getTrackFormatNative", "(I)Ljava/util/Map;", + (void *)android_media_MediaExtractor_getTrackFormatNative }, { "selectTrack", "(I)V", (void *)android_media_MediaExtractor_selectTrack }, - { "seekTo", "(J)V", (void *)android_media_MediaExtractor_seekTo }, + { "unselectTrack", "(I)V", + (void *)android_media_MediaExtractor_unselectTrack }, + + { "seekTo", "(JI)V", (void *)android_media_MediaExtractor_seekTo }, { "advance", "()Z", (void *)android_media_MediaExtractor_advance }, diff --git a/media/jni/android_media_MediaExtractor.h b/media/jni/android_media_MediaExtractor.h index ef0c48b3a3c4..2d4627ef4cec 100644 --- a/media/jni/android_media_MediaExtractor.h +++ b/media/jni/android_media_MediaExtractor.h @@ -18,6 +18,7 @@ #define _ANDROID_MEDIA_MEDIAEXTRACTOR_H_ #include <media/stagefright/foundation/ABase.h> +#include <media/stagefright/MediaSource.h> #include <utils/Errors.h> #include <utils/KeyedVector.h> #include <utils/RefBase.h> @@ -43,8 +44,9 @@ struct JMediaExtractor : public RefBase { status_t getTrackFormat(size_t index, jobject *format) const; status_t selectTrack(size_t index); + status_t unselectTrack(size_t index); - status_t seekTo(int64_t timeUs); + status_t seekTo(int64_t timeUs, MediaSource::ReadOptions::SeekMode mode); status_t advance(); status_t readSampleData(jobject byteBuf, size_t offset, size_t *sampleSize); diff --git a/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java b/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java index fcf5f5dcbd29..19d564c9a4d0 100644 --- a/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java +++ b/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java @@ -31,6 +31,8 @@ public class GLEnvironment { private int glEnvId; + private boolean mManageContext = true; + public GLEnvironment() { nativeAllocate(); } @@ -51,12 +53,14 @@ public class GLEnvironment { } public void initWithNewContext() { + mManageContext = true; if (!nativeInitWithNewContext()) { throw new RuntimeException("Could not initialize GLEnvironment with new context!"); } } public void initWithCurrentContext() { + mManageContext = false; if (!nativeInitWithCurrentContext()) { throw new RuntimeException("Could not initialize GLEnvironment with current context!"); } @@ -78,13 +82,13 @@ public class GLEnvironment { if (Looper.myLooper() != null && Looper.myLooper().equals(Looper.getMainLooper())) { Log.e("FilterFramework", "Activating GL context in UI thread!"); } - if (!nativeActivate()) { + if (mManageContext && !nativeActivate()) { throw new RuntimeException("Could not activate GLEnvironment!"); } } public void deactivate() { - if (!nativeDeactivate()) { + if (mManageContext && !nativeDeactivate()) { throw new RuntimeException("Could not deactivate GLEnvironment!"); } } diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java index a1cec01b8bbe..9e40d37548a8 100644 --- a/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java +++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java @@ -47,20 +47,19 @@ public class BlackWhiteFilter extends Filter { private int mHeight = 0; private int mTarget = FrameFormat.TARGET_UNSPECIFIED; - private Frame mNoiseFrame = null; - private Random mRandom; - private final String mBlackWhiteShader = "precision mediump float;\n" + "uniform sampler2D tex_sampler_0;\n" + - "uniform sampler2D tex_sampler_1;\n" + "uniform float black;\n" + "uniform float scale;\n" + "uniform float stepsize;\n" + "varying vec2 v_texcoord;\n" + + "float rand(vec2 loc) {\n" + + " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" + + "}\n" + "void main() {\n" + " vec4 color = texture2D(tex_sampler_0, v_texcoord);\n" + - " float dither = texture2D(tex_sampler_1, v_texcoord).r;\n" + + " float dither = rand(v_texcoord);\n" + " vec3 xform = clamp((color.rgb - black) * scale, 0.0, 1.0);\n" + " vec3 temp = clamp((color.rgb + stepsize - black) * scale, 0.0, 1.0);\n" + " vec3 new_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" + @@ -69,8 +68,6 @@ public class BlackWhiteFilter extends Filter { public BlackWhiteFilter(String name) { super(name); - - mRandom = new Random(); } @Override @@ -84,14 +81,6 @@ public class BlackWhiteFilter extends Filter { return inputFormat; } - @Override - public void tearDown(FilterContext context) { - if (mNoiseFrame != null) { - mNoiseFrame.release(); - mNoiseFrame = null; - } - } - public void initProgram(FilterContext context, int target) { switch (target) { case FrameFormat.TARGET_GPU: @@ -139,33 +128,13 @@ public class BlackWhiteFilter extends Filter { if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) { mWidth = inputFormat.getWidth(); mHeight = inputFormat.getHeight(); - - if (mNoiseFrame != null) { - mNoiseFrame.release(); - } - - int[] buffer = new int[mWidth * mHeight]; - for (int i = 0; i < mWidth * mHeight; ++i) { - buffer[i] = mRandom.nextInt(255); - } - FrameFormat format = ImageFormat.create(mWidth, mHeight, - ImageFormat.COLORSPACE_RGBA, - FrameFormat.TARGET_GPU); - mNoiseFrame = context.getFrameManager().newFrame(format); - mNoiseFrame.setInts(buffer); - } - - if (mNoiseFrame != null && (mNoiseFrame.getFormat().getWidth() != mWidth || - mNoiseFrame.getFormat().getHeight() != mHeight)) { - throw new RuntimeException("Random map and imput image size mismatch!"); } // Create output frame Frame output = context.getFrameManager().newFrame(inputFormat); // Process - Frame[] inputs = {input, mNoiseFrame}; - mProgram.process(inputs, output); + mProgram.process(input, output); // Push output pushOutput("image", output); diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java index 3c7b8465d131..0144d4e62277 100644 --- a/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java +++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java @@ -41,21 +41,20 @@ public class DocumentaryFilter extends Filter { private int mHeight = 0; private int mTarget = FrameFormat.TARGET_UNSPECIFIED; - private Frame mNoiseFrame; - private Random mRandom; - private final String mDocumentaryShader = "precision mediump float;\n" + "uniform sampler2D tex_sampler_0;\n" + - "uniform sampler2D tex_sampler_1;\n" + "uniform float stepsize;\n" + "uniform float inv_max_dist;\n" + "uniform vec2 center;\n" + "varying vec2 v_texcoord;\n" + + "float rand(vec2 loc) {\n" + + " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" + + "}\n" + "void main() {\n" + // black white " vec4 color = texture2D(tex_sampler_0, v_texcoord);\n" + - " float dither = texture2D(tex_sampler_1, v_texcoord).r;\n" + + " float dither = rand(v_texcoord);\n" + " vec3 xform = clamp(2.0 * color.rgb, 0.0, 1.0);\n" + " vec3 temp = clamp(2.0 * (color.rgb + stepsize), 0.0, 1.0);\n" + " vec3 new_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" + @@ -70,8 +69,6 @@ public class DocumentaryFilter extends Filter { public DocumentaryFilter(String name) { super(name); - - mRandom = new Random(); } @Override @@ -85,14 +82,6 @@ public class DocumentaryFilter extends Filter { return inputFormat; } - @Override - public void tearDown(FilterContext context) { - if (mNoiseFrame != null) { - mNoiseFrame.release(); - mNoiseFrame = null; - } - } - public void initProgram(FilterContext context, int target) { switch (target) { case FrameFormat.TARGET_GPU: @@ -123,34 +112,14 @@ public class DocumentaryFilter extends Filter { if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) { mWidth = inputFormat.getWidth(); mHeight = inputFormat.getHeight(); - - int[] buffer = new int[mWidth * mHeight]; - for (int i = 0; i < mWidth * mHeight; ++i) { - buffer[i] = mRandom.nextInt(255); - } - FrameFormat format = ImageFormat.create(mWidth, mHeight, - ImageFormat.COLORSPACE_RGBA, - FrameFormat.TARGET_GPU); - if (mNoiseFrame != null) { - mNoiseFrame.release(); - } - mNoiseFrame = context.getFrameManager().newFrame(format); - mNoiseFrame.setInts(buffer); - initParameters(); } - if (mNoiseFrame != null && (mNoiseFrame.getFormat().getWidth() != mWidth || - mNoiseFrame.getFormat().getHeight() != mHeight)) { - throw new RuntimeException("Random map and imput image size mismatch!"); - } - // Create output frame Frame output = context.getFrameManager().newFrame(inputFormat); // Process - Frame[] inputs = {input, mNoiseFrame}; - mProgram.process(inputs, output); + mProgram.process(input, output); // Push output pushOutput("image", output); diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java index 168a9c675f44..318554607941 100644 --- a/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java +++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java @@ -42,14 +42,25 @@ public class GrainFilter extends Filter { @GenerateFieldPort(name = "tile_size", hasDefault = true) private int mTileSize = 640; - private Program mProgram; + private Program mGrainProgram; + private Program mNoiseProgram; private int mWidth = 0; private int mHeight = 0; private int mTarget = FrameFormat.TARGET_UNSPECIFIED; - private Frame mNoiseFrame = null; - private Random mRandom; + private Random mRandom = new Random(); + + private final String mNoiseShader = + "precision mediump float;\n" + + "uniform vec2 seed;\n" + + "varying vec2 v_texcoord;\n" + + "float rand(vec2 loc) {\n" + + " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" + + "}\n" + + "void main() {\n" + + " gl_FragColor = vec4(rand(v_texcoord + seed), 0.0, 0.0, 1.0);\n" + + "}\n"; private final String mGrainShader = "precision mediump float;\n" + @@ -75,8 +86,6 @@ public class GrainFilter extends Filter { public GrainFilter(String name) { super(name); - - mRandom = new Random(); } @Override @@ -93,9 +102,13 @@ public class GrainFilter extends Filter { public void initProgram(FilterContext context, int target) { switch (target) { case FrameFormat.TARGET_GPU: - ShaderProgram shaderProgram = new ShaderProgram(context, mGrainShader); + ShaderProgram shaderProgram = new ShaderProgram(context, mNoiseShader); + shaderProgram.setMaximumTileSize(mTileSize); + mNoiseProgram = shaderProgram; + + shaderProgram = new ShaderProgram(context, mGrainShader); shaderProgram.setMaximumTileSize(mTileSize); - mProgram = shaderProgram; + mGrainProgram = shaderProgram; break; default: @@ -106,46 +119,49 @@ public class GrainFilter extends Filter { } private void updateParameters() { - mProgram.setHostValue("scale", mScale); + float seed[] = { mRandom.nextFloat(), mRandom.nextFloat() }; + mNoiseProgram.setHostValue("seed", seed); + + mGrainProgram.setHostValue("scale", mScale); } private void updateFrameSize(int width, int height) { mWidth = width; mHeight = height; - if (mProgram != null) { - mProgram.setHostValue("stepX", 0.5f / mWidth); - mProgram.setHostValue("stepY", 0.5f / mHeight); + if (mGrainProgram != null) { + mGrainProgram.setHostValue("stepX", 0.5f / mWidth); + mGrainProgram.setHostValue("stepY", 0.5f / mHeight); updateParameters(); } } @Override public void fieldPortValueUpdated(String name, FilterContext context) { - if (mProgram != null) { + if (mGrainProgram != null && mNoiseProgram != null) { updateParameters(); } } @Override - public void tearDown(FilterContext context) { - if (mNoiseFrame != null) { - mNoiseFrame.release(); - mNoiseFrame = null; - } - } - - @Override public void process(FilterContext context) { // Get input frame Frame input = pullInput("image"); FrameFormat inputFormat = input.getFormat(); + FrameFormat noiseFormat = ImageFormat.create(inputFormat.getWidth() / 2, + inputFormat.getHeight() / 2, + ImageFormat.COLORSPACE_RGBA, + FrameFormat.TARGET_GPU); + + // Create noise frame + Frame noiseFrame = context.getFrameManager().newFrame(inputFormat); + // Create output frame Frame output = context.getFrameManager().newFrame(inputFormat); // Create program if not created already - if (mProgram == null || inputFormat.getTarget() != mTarget) { + if (mNoiseProgram == null || mGrainProgram == null || inputFormat.getTarget() != mTarget) { initProgram(context, inputFormat.getTarget()); updateParameters(); } @@ -153,35 +169,20 @@ public class GrainFilter extends Filter { // Check if the frame size has changed if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) { updateFrameSize(inputFormat.getWidth(), inputFormat.getHeight()); - - int[] buffer = new int[mWidth * mHeight]; - for (int i = 0; i < mWidth * mHeight; ++i) { - buffer[i] = (mRandom.nextInt(256) < RAND_THRESHOLD) ? - mRandom.nextInt(256) : 0; - } - FrameFormat format = ImageFormat.create(mWidth, mHeight, - ImageFormat.COLORSPACE_RGBA, - FrameFormat.TARGET_GPU); - if (mNoiseFrame != null) { - mNoiseFrame.release(); - } - mNoiseFrame = context.getFrameManager().newFrame(format); - mNoiseFrame.setInts(buffer); } - if (mNoiseFrame.getFormat().getWidth() != mWidth || - mNoiseFrame.getFormat().getHeight() != mHeight) { - throw new RuntimeException("Random map and imput image size mismatch!"); - } + Frame[] empty = {}; + mNoiseProgram.process(empty, noiseFrame); // Process - Frame[] inputs = {input, mNoiseFrame}; - mProgram.process(inputs, output); + Frame[] inputs = {input, noiseFrame}; + mGrainProgram.process(inputs, output); // Push output pushOutput("image", output); // Release pushed frame output.release(); + noiseFrame.release(); } } diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java index 452a833da626..0814ba543eaf 100644 --- a/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java +++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java @@ -28,8 +28,6 @@ import android.filterfw.core.Program; import android.filterfw.core.ShaderProgram; import android.filterfw.format.ImageFormat; -import java.util.Random; - public class LomoishFilter extends Filter { @GenerateFieldPort(name = "tile_size", hasDefault = true) @@ -41,19 +39,18 @@ public class LomoishFilter extends Filter { private int mHeight = 0; private int mTarget = FrameFormat.TARGET_UNSPECIFIED; - private Frame mNoiseFrame; - private Random mRandom; - private final String mLomoishShader = "precision mediump float;\n" + "uniform sampler2D tex_sampler_0;\n" + - "uniform sampler2D tex_sampler_1;\n" + "uniform float stepsizeX;\n" + "uniform float stepsizeY;\n" + "uniform float stepsize;\n" + "uniform vec2 center;\n" + "uniform float inv_max_dist;\n" + "varying vec2 v_texcoord;\n" + + "float rand(vec2 loc) {\n" + + " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" + + "}\n" + "void main() {\n" + // sharpen " vec3 nbr_color = vec3(0.0, 0.0, 0.0);\n" + @@ -99,7 +96,7 @@ public class LomoishFilter extends Filter { " }\n" + " c_color.b = s_color.b * 0.5 + 0.25;\n" + // blackwhite - " float dither = texture2D(tex_sampler_1, v_texcoord).r;\n" + + " float dither = rand(v_texcoord);\n" + " vec3 xform = clamp((c_color.rgb - 0.15) * 1.53846, 0.0, 1.0);\n" + " vec3 temp = clamp((color.rgb + stepsize - 0.15) * 1.53846, 0.0, 1.0);\n" + " vec3 bw_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" + @@ -111,8 +108,6 @@ public class LomoishFilter extends Filter { public LomoishFilter(String name) { super(name); - - mRandom = new Random(); } @Override @@ -126,14 +121,6 @@ public class LomoishFilter extends Filter { return inputFormat; } - @Override - public void tearDown(FilterContext context) { - if (mNoiseFrame != null) { - mNoiseFrame.release(); - mNoiseFrame = null; - } - } - public void initProgram(FilterContext context, int target) { switch (target) { case FrameFormat.TARGET_GPU: @@ -180,34 +167,14 @@ public class LomoishFilter extends Filter { if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) { mWidth = inputFormat.getWidth(); mHeight = inputFormat.getHeight(); - - int[] buffer = new int[mWidth * mHeight]; - for (int i = 0; i < mWidth * mHeight; ++i) { - buffer[i] = mRandom.nextInt(255); - } - FrameFormat format = ImageFormat.create(mWidth, mHeight, - ImageFormat.COLORSPACE_RGBA, - FrameFormat.TARGET_GPU); - if (mNoiseFrame != null) { - mNoiseFrame.release(); - } - mNoiseFrame = context.getFrameManager().newFrame(format); - mNoiseFrame.setInts(buffer); - initParameters(); } - if (mNoiseFrame != null && (mNoiseFrame.getFormat().getWidth() != mWidth || - mNoiseFrame.getFormat().getHeight() != mHeight)) { - throw new RuntimeException("Random map and imput image size mismatch!"); - } - // Create output frame Frame output = context.getFrameManager().newFrame(inputFormat); // Process - Frame[] inputs = {input, mNoiseFrame}; - mProgram.process(inputs, output); + mProgram.process(input, output); // Push output pushOutput("image", output); diff --git a/media/mca/filterpacks/java/android/filterpacks/videosrc/SurfaceTextureTarget.java b/media/mca/filterpacks/java/android/filterpacks/videosrc/SurfaceTextureTarget.java index 436caab0dcae..20e4b32058bd 100644 --- a/media/mca/filterpacks/java/android/filterpacks/videosrc/SurfaceTextureTarget.java +++ b/media/mca/filterpacks/java/android/filterpacks/videosrc/SurfaceTextureTarget.java @@ -160,9 +160,22 @@ public class SurfaceTextureTarget extends Filter { @Override public void open(FilterContext context) { // Set up SurfaceTexture internals - mSurfaceId = context.getGLEnvironment().registerSurfaceTexture(mSurfaceTexture, mScreenWidth, mScreenHeight); + mSurfaceId = context.getGLEnvironment().registerSurfaceTexture( + mSurfaceTexture, mScreenWidth, mScreenHeight); + if (mSurfaceId <= 0) { + throw new RuntimeException("Could not register SurfaceTexture: " + mSurfaceTexture); + } } + + @Override + public void close(FilterContext context) { + if (mSurfaceId > 0) { + context.getGLEnvironment().unregisterSurfaceId(mSurfaceId); + } + } + + @Override public void process(FilterContext context) { if (mLogVerbose) Log.v(TAG, "Starting frame processing"); @@ -173,9 +186,11 @@ public class SurfaceTextureTarget extends Filter { Frame input = pullInput("frame"); boolean createdFrame = false; - float currentAspectRatio = (float)input.getFormat().getWidth() / input.getFormat().getHeight(); + float currentAspectRatio = + (float)input.getFormat().getWidth() / input.getFormat().getHeight(); if (currentAspectRatio != mAspectRatio) { - if (mLogVerbose) Log.v(TAG, "New aspect ratio: " + currentAspectRatio +", previously: " + mAspectRatio); + if (mLogVerbose) Log.v(TAG, "New aspect ratio: " + currentAspectRatio + + ", previously: " + mAspectRatio); mAspectRatio = currentAspectRatio; updateTargetRect(); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java index b1d049ed1b5d..abe8b8c45c39 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java @@ -88,8 +88,7 @@ public class MediaProfileReader if (audioEncoder != MediaRecorder.AudioEncoder.AMR_NB && audioEncoder != MediaRecorder.AudioEncoder.AMR_WB && audioEncoder != MediaRecorder.AudioEncoder.AAC && - audioEncoder != MediaRecorder.AudioEncoder.AAC_PLUS && - audioEncoder != MediaRecorder.AudioEncoder.EAAC_PLUS) { + audioEncoder != MediaRecorder.AudioEncoder.HE_AAC) { throw new IllegalArgumentException("Unsupported audio encodeer " + audioEncoder); } return audioEncoderMap.get(audioEncoder); @@ -128,7 +127,6 @@ public class MediaProfileReader audioEncoderMap.put(MediaRecorder.AudioEncoder.AMR_NB, "amrnb"); audioEncoderMap.put(MediaRecorder.AudioEncoder.AMR_WB, "amrwb"); audioEncoderMap.put(MediaRecorder.AudioEncoder.AAC, "aac"); - audioEncoderMap.put(MediaRecorder.AudioEncoder.AAC_PLUS, "aacplus"); - audioEncoderMap.put(MediaRecorder.AudioEncoder.EAAC_PLUS, "eaacplus"); + audioEncoderMap.put(MediaRecorder.AudioEncoder.HE_AAC, "heaac"); } } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java index bbd6bea6bf24..2f864d7fa906 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java @@ -47,6 +47,7 @@ public class CameraTest extends ActivityInstrumentationTestCase<MediaFrameworkTe private boolean jpegPictureCallbackResult = false; private static int WAIT_FOR_COMMAND_TO_COMPLETE = 10000; // Milliseconds. + private static final int CAMERA_ID = 0; private RawPreviewCallback mRawPreviewCallback = new RawPreviewCallback(); private TestShutterCallback mShutterCallback = new TestShutterCallback(); @@ -85,7 +86,7 @@ public class CameraTest extends ActivityInstrumentationTestCase<MediaFrameworkTe // Save the looper so that we can terminate this thread // after we are done with it. mLooper = Looper.myLooper(); - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); startDone.open(); Looper.loop(); // Blocks forever until Looper.quit() is called. Log.v(TAG, "initializeMessageLooper: quit."); diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerInvokeTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerInvokeTest.java index 0b96bae4029c..55a1545422fd 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerInvokeTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerInvokeTest.java @@ -65,7 +65,7 @@ public class MediaPlayerInvokeTest extends ActivityInstrumentationTestCase2<Medi int val = rnd.nextInt(); request.writeInt(val); - assertEquals(0, mPlayer.invoke(request, reply)); + mPlayer.invoke(request, reply); assertEquals(val, reply.readInt()); } } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediarecorder/MediaRecorderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediarecorder/MediaRecorderTest.java index 0684946617c0..8e6d5cb44577 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediarecorder/MediaRecorderTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediarecorder/MediaRecorderTest.java @@ -54,6 +54,8 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra private int MIN_VIDEO_FPS = 5; + private static final int CAMERA_ID = 0; + Context mContext; Camera mCamera; @@ -247,7 +249,7 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra public void testPortraitH263() throws Exception { boolean videoRecordedResult = false; try { - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); Camera.Parameters parameters = mCamera.getParameters(); parameters.setPreviewSize(352, 288); parameters.set("orientation", "portrait"); diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java index db64b94b8ec5..ccb0638de4af 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java @@ -72,6 +72,7 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase2<Med "/sdcard/mediaMemOutput.txt"; private static final String MEDIA_PROCMEM_OUTPUT = "/sdcard/mediaProcmemOutput.txt"; + private static final int CAMERA_ID = 0; private static int mStartMemory = 0; private static int mEndMemory = 0; @@ -132,7 +133,7 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase2<Med Looper.prepare(); Log.v(TAG, "start loopRun"); mLooper = Looper.myLooper(); - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); startDone.open(); Looper.loop(); Log.v(TAG, "initializeMessageLooper: quit."); diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/CameraStressTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/CameraStressTest.java index a9c6119bd116..ab9e36c3a30a 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/CameraStressTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/CameraStressTest.java @@ -60,6 +60,7 @@ public class CameraStressTest extends ActivityInstrumentationTestCase2<MediaFram private static final long WAIT_ZOOM_ANIMATION = 5 * 1000; // 5 seconds private static final String CAMERA_STRESS_OUTPUT = "/sdcard/cameraStressOutput.txt"; + private static final int CAMERA_ID = 0; private final CameraErrorCallback mCameraErrorCallback = new CameraErrorCallback(); private Thread mLooperThread; @@ -213,7 +214,7 @@ public class CameraStressTest extends ActivityInstrumentationTestCase2<MediaFram Log.v(TAG, "Start preview"); output.write("No of loop: "); - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); Camera.Parameters params = mCamera.getParameters(); mCamera.release(); @@ -230,7 +231,7 @@ public class CameraStressTest extends ActivityInstrumentationTestCase2<MediaFram runOnLooper(new Runnable() { @Override public void run() { - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); } }); diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaRecorderStressTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaRecorderStressTest.java index e9bc6f005e39..62462bdd18d9 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaRecorderStressTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaRecorderStressTest.java @@ -60,6 +60,8 @@ public class MediaRecorderStressTest extends ActivityInstrumentationTestCase2<Me private static final String OUTPUT_FILE_EXT = ".3gp"; private static final String MEDIA_STRESS_OUTPUT = "/sdcard/mediaStressOutput.txt"; + private static final int CAMERA_ID = 0; + private final CameraErrorCallback mCameraErrorCallback = new CameraErrorCallback(); private final RecorderErrorCallback mRecorderErrorCallback = new RecorderErrorCallback(); @@ -162,7 +164,7 @@ public class MediaRecorderStressTest extends ActivityInstrumentationTestCase2<Me runOnLooper(new Runnable() { @Override public void run() { - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); } }); mCamera.setErrorCallback(mCameraErrorCallback); @@ -250,7 +252,7 @@ public class MediaRecorderStressTest extends ActivityInstrumentationTestCase2<Me runOnLooper(new Runnable() { @Override public void run() { - mCamera = Camera.open(); + mCamera = Camera.open(CAMERA_ID); } }); mCamera.setErrorCallback(mCameraErrorCallback); diff --git a/native/android/Android.mk b/native/android/Android.mk index e2c99ee72b62..00d11daade07 100644 --- a/native/android/Android.mk +++ b/native/android/Android.mk @@ -30,8 +30,7 @@ LOCAL_STATIC_LIBRARIES := \ LOCAL_C_INCLUDES += \ frameworks/base/native/include \ - frameworks/base/core/jni/android \ - dalvik/libnativehelper/include/nativehelper + frameworks/base/core/jni/android LOCAL_MODULE:= libandroid diff --git a/native/graphics/jni/Android.mk b/native/graphics/jni/Android.mk index 7b741db7fc14..8b333e729454 100644 --- a/native/graphics/jni/Android.mk +++ b/native/graphics/jni/Android.mk @@ -25,8 +25,7 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_C_INCLUDES += \ external/skia/include/core \ frameworks/base/native/include \ - frameworks/base/core/jni/android/graphics \ - dalvik/libnativehelper/include/nativehelper + frameworks/base/core/jni/android/graphics LOCAL_MODULE:= libjnigraphics diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index 3eec18c1b58e..c709e4012deb 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -311,6 +311,14 @@ public class DefaultContainerService extends IntentService { return null; } + try { + Libcore.os.chmod(resFile.getAbsolutePath(), 0640); + } catch (ErrnoException e) { + Slog.e(TAG, "Could not chown APK: " + e.getMessage()); + PackageHelper.destroySdDir(newCid); + return null; + } + if (isForwardLocked) { File publicZipFile = new File(newCachePath, publicResFileName); try { @@ -326,10 +334,9 @@ public class DefaultContainerService extends IntentService { } try { - Libcore.os.chmod(resFile.getAbsolutePath(), 0640); Libcore.os.chmod(publicZipFile.getAbsolutePath(), 0644); } catch (ErrnoException e) { - Slog.e(TAG, "Could not chown APK or resource file: " + e.getMessage()); + Slog.e(TAG, "Could not chown public resource file: " + e.getMessage()); PackageHelper.destroySdDir(newCid); return null; } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java index 244482915490..50aaa9ad737f 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java @@ -681,10 +681,15 @@ public class SettingsBackupAgent extends BackupAgentHelper { } private int enableWifi(boolean enable) { + if (mWfm == null) { + mWfm = (WifiManager) getSystemService(Context.WIFI_SERVICE); + } if (mWfm != null) { int state = mWfm.getWifiState(); mWfm.setWifiEnabled(enable); return state; + } else { + Log.e(TAG, "Failed to fetch WifiManager instance"); } return WifiManager.WIFI_STATE_UNKNOWN; } diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index a31c2641312f..9d3a942f9ad9 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -5,6 +5,7 @@ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.INJECT_EVENTS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> @@ -12,6 +13,7 @@ <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" /> <uses-permission android:name="android.permission.STATUS_BAR" /> <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> + <uses-permission android:name="android.permission.REMOTE_AUDIO_PLAYBACK" /> <!-- Networking and telephony --> <uses-permission android:name="android.permission.BLUETOOTH" /> @@ -20,12 +22,14 @@ <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> + <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" /> <!-- Physical hardware --> <uses-permission android:name="android.permission.MANAGE_USB" /> <uses-permission android:name="android.permission.DEVICE_POWER" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> + <uses-permission android:name="android.permission.MASTER_CLEAR" /> <!-- ActivityManager --> <uses-permission android:name="android.permission.GET_TASKS" /> diff --git a/packages/SystemUI/res/drawable/recents_thumbnail_fg.xml b/packages/SystemUI/res/drawable/recents_thumbnail_fg.xml index 70330779ccfe..d683af95900c 100644 --- a/packages/SystemUI/res/drawable/recents_thumbnail_fg.xml +++ b/packages/SystemUI/res/drawable/recents_thumbnail_fg.xml @@ -16,6 +16,5 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/recents_thumbnail_bg_press" android:state_selected="true" /> <item android:drawable="@drawable/recents_thumbnail_bg_press" android:state_pressed="true" /> - <item android:drawable="@drawable/recents_thumbnail_bg_dragging" android:state_activated="true" /> <item android:drawable="@*android:color/transparent"/> </selector> diff --git a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml index 662c18681a87..67e13eb7af96 100644 --- a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml +++ b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml @@ -41,17 +41,18 @@ > <!-- navigation controls --> - <Space - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_weight="1" - /> <View android:layout_width="48dp" android:layout_height="match_parent" android:layout_weight="0" + android:layout_marginLeft="2dp" android:visibility="invisible" /> + <Space + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp" android:layout_height="match_parent" @@ -79,21 +80,22 @@ systemui:glowBackground="@drawable/ic_sysbar_highlight" android:contentDescription="@string/accessibility_recent" /> + <Space + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" android:layout_width="48dp" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_menu" + android:layout_marginRight="2dp" systemui:keyCode="82" android:layout_weight="0" android:visibility="invisible" android:contentDescription="@string/accessibility_menu" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> - <Space - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_weight="1" - /> </LinearLayout> <!-- lights out layout to match exactly --> @@ -165,17 +167,18 @@ > <!-- navigation controls --> - <Space - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_weight="1" - /> <View android:layout_width="48dp" android:layout_height="match_parent" android:layout_weight="0" + android:layout_marginLeft="2dp" android:visibility="invisible" /> + <Space + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" android:layout_width="162dp" android:paddingLeft="42dp" android:paddingRight="42dp" android:layout_height="match_parent" @@ -203,9 +206,15 @@ systemui:glowBackground="@drawable/ic_sysbar_highlight" android:contentDescription="@string/accessibility_recent" /> + <Space + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" android:layout_width="48dp" android:layout_height="match_parent" + android:layout_marginRight="2dp" android:src="@drawable/ic_sysbar_menu" systemui:keyCode="82" android:layout_weight="0" @@ -213,11 +222,6 @@ android:contentDescription="@string/accessibility_menu" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> - <Space - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_weight="1" - /> </LinearLayout> <!-- lights out layout to match exactly --> diff --git a/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml new file mode 100644 index 000000000000..b9af3a965766 --- /dev/null +++ b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, 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. +*/ +--> + +<!-- This is the combined status bar / notification panel window. --> +<com.android.systemui.statusbar.phone.StatusBarWindowView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui" + android:focusable="true" + android:descendantFocusability="afterDescendants" + android:fitsSystemWindows="true" + > + + <include layout="@layout/status_bar_expanded" + android:layout_width="@dimen/notification_panel_width" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal|top" + /> + + <include layout="@layout/status_bar" + android:layout_width="match_parent" + android:layout_height="@*android:dimen/status_bar_height" + /> + +</com.android.systemui.statusbar.phone.StatusBarWindowView> diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml index 8fbab7441330..b905db3f2efe 100644 --- a/packages/SystemUI/res/layout/navigation_bar.xml +++ b/packages/SystemUI/res/layout/navigation_bar.xml @@ -54,6 +54,7 @@ android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" android:layout_weight="0" + android:scaleType="center" systemui:glowBackground="@drawable/ic_sysbar_highlight" android:contentDescription="@string/accessibility_back" /> @@ -214,6 +215,7 @@ android:layout_height="80dp" android:layout_width="match_parent" android:src="@drawable/ic_sysbar_back_land" + android:scaleType="center" systemui:keyCode="4" android:layout_weight="0" android:contentDescription="@string/accessibility_back" diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index 0ba8cce05542..6ed5fb775afe 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -22,6 +22,7 @@ <com.android.systemui.statusbar.phone.PhoneStatusBarView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui" + android:id="@+id/status_bar" android:background="@drawable/status_bar_background" android:orientation="vertical" android:focusable="true" @@ -29,6 +30,17 @@ android:fitsSystemWindows="true" > + <ImageView + android:id="@+id/notification_lights_out" + android:layout_width="@dimen/status_bar_icon_size" + android:layout_height="match_parent" + android:paddingLeft="6dip" + android:paddingBottom="2dip" + android:src="@drawable/ic_sysbar_lights_out_dot_small" + android:scaleType="center" + android:visibility="gone" + /> + <LinearLayout android:id="@+id/icons" android:layout_width="match_parent" android:layout_height="match_parent" @@ -38,6 +50,7 @@ > <LinearLayout + android:id="@+id/notification_icon_area" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index c64aabe619f1..1de4ab8d9e39 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -21,120 +21,114 @@ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui" - android:focusable="true" - android:descendantFocusability="afterDescendants" + android:id="@+id/notification_panel" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:background="@drawable/notification_tracking_bg" + android:paddingTop="@*android:dimen/status_bar_height" + android:layout_marginLeft="@dimen/notification_panel_margin_left" > - <FrameLayout + <RelativeLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:id="@+id/notification_panel" - android:background="@drawable/notification_tracking_bg" - android:paddingTop="@*android:dimen/status_bar_height" + android:layout_height="52dp" + android:paddingTop="3dp" + android:paddingBottom="5dp" + android:paddingRight="3dp" + android:background="@drawable/notification_header_bg" > + <com.android.systemui.statusbar.policy.DateView android:id="@+id/date" + android:textAppearance="@style/TextAppearance.StatusBar.Date" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_alignParentLeft="true" + android:singleLine="true" + android:gravity="center_vertical|left" + android:paddingLeft="16dp" + /> + <!-- + <com.android.systemui.statusbar.phone.CarrierLabel + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginTop="1dp" + android:layout_marginLeft="5dp" + android:layout_gravity="center_vertical" + android:paddingBottom="1dp" + android:paddingLeft="4dp" + android:textAppearance="?android:attr/textAppearanceLarge" + android:textColor="?android:attr/textColorSecondary" + /> + --> - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="52dp" - android:paddingTop="3dp" - android:paddingBottom="5dp" - android:paddingRight="3dp" - android:background="@drawable/notification_header_bg" - > - <com.android.systemui.statusbar.policy.DateView android:id="@+id/date" - android:textAppearance="@style/TextAppearance.StatusBar.Date" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_alignParentLeft="true" - android:singleLine="true" - android:gravity="center_vertical|left" - android:paddingLeft="16dp" - /> - <!-- - <com.android.systemui.statusbar.phone.CarrierLabel - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:layout_marginTop="1dp" - android:layout_marginLeft="5dp" - android:layout_gravity="center_vertical" - android:paddingBottom="1dp" - android:paddingLeft="4dp" - android:textAppearance="?android:attr/textAppearanceLarge" - android:textColor="?android:attr/textColorSecondary" - /> - --> - - <ImageView android:id="@+id/settings_button" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_toRightOf="@id/date" - android:paddingLeft="8dp" - android:paddingRight="8dp" - android:src="@drawable/ic_notify_quicksettings" - android:contentDescription="@string/accessibility_settings_button" - /> - - <ImageView android:id="@+id/clear_all_button" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_alignParentRight="true" - android:paddingLeft="8dp" - android:paddingRight="8dp" - android:src="@drawable/ic_notify_clear" - android:contentDescription="@string/accessibility_clear_all" - /> - </RelativeLayout> - - <View - android:layout_width="match_parent" - android:layout_height="2dp" - android:layout_marginTop="52dp" - android:background="@drawable/status_bar_hr" + <ImageView android:id="@+id/settings_button" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_toRightOf="@id/date" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:src="@drawable/ic_notify_quicksettings" + android:contentDescription="@string/accessibility_settings_button" /> - - <ScrollView - android:id="@+id/scroll" - android:layout_width="match_parent" + + <ImageView android:id="@+id/clear_all_button" + android:layout_width="wrap_content" android:layout_height="match_parent" - android:fadingEdge="none" - android:overScrollMode="ifContentScrolls" - android:layout_marginTop="54dp" - android:layout_marginBottom="34dp" - > - <com.android.systemui.statusbar.policy.NotificationRowLayout - android:id="@+id/latestItems" - android:layout_width="match_parent" - android:layout_height="wrap_content" - systemui:rowHeight="@dimen/notification_height" - /> - </ScrollView> - - <ImageView + android:layout_alignParentRight="true" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:src="@drawable/ic_notify_clear" + android:contentDescription="@string/accessibility_clear_all" + /> + </RelativeLayout> + + <View + android:layout_width="match_parent" + android:layout_height="2dp" + android:layout_marginTop="52dp" + android:background="@drawable/status_bar_hr" + /> + + <ScrollView + android:id="@+id/scroll" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fadingEdge="none" + android:overScrollMode="ifContentScrolls" + android:layout_marginTop="54dp" + android:layout_marginBottom="34dp" + > + <com.android.systemui.statusbar.policy.NotificationRowLayout + android:id="@+id/latestItems" android:layout_width="match_parent" android:layout_height="wrap_content" - android:src="@drawable/title_bar_shadow" - android:layout_marginTop="54dp" - android:scaleType="fitXY" - /> - - <com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close" + systemui:rowHeight="@dimen/notification_height" + /> + </ScrollView> + + <ImageView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:src="@drawable/title_bar_shadow" + android:layout_marginTop="54dp" + android:scaleType="fitXY" + /> + + <com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close" + android:layout_width="match_parent" + android:layout_height="@dimen/close_handle_height" + android:layout_gravity="bottom" + android:orientation="vertical" + > + <ImageView android:layout_width="match_parent" android:layout_height="34dp" android:layout_gravity="bottom" - android:orientation="vertical" - > - <ImageView - android:layout_width="match_parent" - android:layout_height="34dp" - android:layout_gravity="bottom" - android:scaleType="fitXY" - android:src="@drawable/status_bar_close_on" - /> - - </com.android.systemui.statusbar.phone.CloseDragHandle> - - </FrameLayout><!-- end of sliding panel --> + android:scaleType="fitXY" + android:src="@drawable/status_bar_close_on" + /> + + </com.android.systemui.statusbar.phone.CloseDragHandle> -</FrameLayout><!-- end of window -->
\ No newline at end of file +</FrameLayout><!-- end of sliding panel -->
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/super_status_bar.xml b/packages/SystemUI/res/layout/super_status_bar.xml new file mode 100644 index 000000000000..6c31ff4c3b33 --- /dev/null +++ b/packages/SystemUI/res/layout/super_status_bar.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, 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. +*/ +--> + +<!-- This is the combined status bar / notification panel window. --> +<com.android.systemui.statusbar.phone.StatusBarWindowView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui" + android:focusable="true" + android:descendantFocusability="afterDescendants" + android:fitsSystemWindows="true" + > + + <include layout="@layout/status_bar_expanded" + android:layout_width="match_parent" + android:layout_height="match_parent" + /> + + <include layout="@layout/status_bar" + android:layout_width="match_parent" + android:layout_height="@*android:dimen/status_bar_height" + /> + +</com.android.systemui.statusbar.phone.StatusBarWindowView> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 3981701fc325..9fd8d35a7416 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -114,7 +114,7 @@ <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</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_no_sim" msgid="8274017118472455155">"Žádná karta SIM."</string> + <string name="accessibility_no_sim" msgid="8274017118472455155">"Žádná SIM karta."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering přes Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim V letadle."</string> <!-- String.format failed for translation --> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 39832fcb415f..ac07e9bcc711 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -141,5 +141,5 @@ <string name="gps_notification_found_text" msgid="4619274244146446464">"Standort durch GPS festgelegt"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string> <string name="dreams_dock_launcher" msgid="3541196417659166245">"Bildschirmschoner aktivieren"</string> - <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Info"</string> + <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Details"</string> </resources> diff --git a/packages/SystemUI/res/values-large-port/dimens.xml b/packages/SystemUI/res/values-large-port/dimens.xml deleted file mode 100644 index 56effa3cd32a..000000000000 --- a/packages/SystemUI/res/values-large-port/dimens.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (c) 2010, 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. -*/ ---> -<resources> - <!-- gap on either side of status bar notification icons --> - <dimen name="status_bar_icon_padding">2dp</dimen> -</resources> - - - diff --git a/packages/SystemUI/res/values-large/colors.xml b/packages/SystemUI/res/values-large/colors.xml deleted file mode 100644 index a7a70c3f41e9..000000000000 --- a/packages/SystemUI/res/values-large/colors.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <drawable name="status_bar_background">#000000</drawable> - <drawable name="notification_icon_area_smoke">#aa000000</drawable> -</resources> - diff --git a/packages/SystemUI/res/values-large/config.xml b/packages/SystemUI/res/values-large/config.xml deleted file mode 100644 index 4014f8d64b94..000000000000 --- a/packages/SystemUI/res/values-large/config.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** Copyright 2010, 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. -*/ ---> - -<!-- These resources are around just to allow their values to be customized - for different hardware and product builds. --> -<resources> - <!-- Whether or not we show the number in the bar. --> - <bool name="config_statusBarShowNumber">false</bool> -</resources> - diff --git a/packages/SystemUI/res/values-large/dimens.xml b/packages/SystemUI/res/values-large/dimens.xml deleted file mode 100644 index 9d89e21761ab..000000000000 --- a/packages/SystemUI/res/values-large/dimens.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (c) 2010, 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. -*/ ---> -<resources> - <!-- The width of the ticker, including the icon --> - <dimen name="notification_ticker_width">360dp</dimen> - <!-- Status bar panel bottom offset (height of status bar - overlap) --> - <dimen name="status_bar_panel_bottom_offset">36dp</dimen> - <!-- gap on either side of status bar notification icons --> - <dimen name="status_bar_icon_padding">8dp</dimen> -</resources> - - diff --git a/packages/SystemUI/res/values-large/strings.xml b/packages/SystemUI/res/values-large/strings.xml deleted file mode 100644 index f04dc04ed530..000000000000 --- a/packages/SystemUI/res/values-large/strings.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2010, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- The text for the button in the notification window-shade that clears - all of the currently visible notifications. [CHAR LIMIT=10]--> - <string name="status_bar_clear_all_button">Clear all</string> - - <!-- Separator for PLMN and SPN in network name. --> - <string name="status_bar_network_name_separator" translatable="false">" – "</string> - - <!-- Title for the pseudo-notification shown when notifications are disabled (do-not-disturb - mode) --> - <string name="notifications_off_title">Notifications off</string> - - <!-- Content text for do-not-disturb mode notification --> - <string name="notifications_off_text">Tap here to turn notifications back on.</string> -</resources> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 008ed3365acc..0fdbe2bdd7ed 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -138,7 +138,7 @@ <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="gps_notification_searching_text" msgid="8574247005642736060">"Поиск GPS"</string> - <string name="gps_notification_found_text" msgid="4619274244146446464">"Местоположение установлено с помощью GPS"</string> + <string name="gps_notification_found_text" msgid="4619274244146446464">"Координаты по GPS"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string> <string name="dreams_dock_launcher" msgid="3541196417659166245">"Активация заставки экрана"</string> <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"О приложении"</string> diff --git a/packages/SystemUI/res/values-sw600dp-land/dimens.xml b/packages/SystemUI/res/values-sw600dp-land/dimens.xml new file mode 100644 index 000000000000..afa0b2078554 --- /dev/null +++ b/packages/SystemUI/res/values-sw600dp-land/dimens.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + * Copyright (c) 2012, 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. +*/ +--> +<resources> + <!-- Layout parameters for the notification panel --> + <dimen name="notification_panel_margin_bottom">0dp</dimen> + <dimen name="notification_panel_margin_left">32dp</dimen> + + <!-- Gravity for the notification panel --> + <!-- 0x33 = left|top --> + <integer name="notification_panel_layout_gravity">0x33</integer> +</resources> diff --git a/packages/SystemUI/res/values-sw600dp-port/config.xml b/packages/SystemUI/res/values-sw600dp-port/config.xml deleted file mode 100644 index ab7661a4b6c4..000000000000 --- a/packages/SystemUI/res/values-sw600dp-port/config.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** Copyright 2011, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<!-- These resources are around just to allow their values to be customized - for different hardware and product builds. --> -<resources> - <integer name="config_maxNotificationIcons">3</integer> -</resources> - diff --git a/packages/SystemUI/res/values-sw600dp-port/dimens.xml b/packages/SystemUI/res/values-sw600dp-port/dimens.xml deleted file mode 100644 index 39eade6104a6..000000000000 --- a/packages/SystemUI/res/values-sw600dp-port/dimens.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (c) 2011, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ ---> -<resources> - <!-- gap on either side of status bar notification icons --> - <dimen name="status_bar_icon_padding">0dp</dimen> - - <!-- The width of the view containing non-menu status bar icons --> - <dimen name="navigation_key_width">70dip</dimen> - - <!-- The width of the view containing the menu status bar icon --> - <dimen name="navigation_menu_key_width">40dip</dimen> -</resources> - diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml new file mode 100644 index 000000000000..43ae55766bbc --- /dev/null +++ b/packages/SystemUI/res/values-sw600dp/dimens.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + * Copyright (c) 2012, 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. +*/ +--> +<resources> + <!-- The width of the notification panel window --> + <dimen name="notification_panel_width">446dp</dimen> + + <!-- Layout parameters for the notification panel --> + <dimen name="notification_panel_margin_bottom">192dp</dimen> + <dimen name="notification_panel_margin_left">0dp</dimen> + + <!-- Gravity for the notification panel --> + <!-- 0x33 = center_horizontal|top --> + <integer name="notification_panel_layout_gravity">0x31</integer> +</resources> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index f5ac4d4ce2ee..6ad380a31fe5 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -139,5 +139,5 @@ <string name="gps_notification_found_text" msgid="4619274244146446464">"ตำแหน่งที่กำหนดโดย GPS"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string> <string name="dreams_dock_launcher" msgid="3541196417659166245">"เปิดโปรแกรมรักษาหน้าจอ"</string> - <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ข้อมูลแอปพลิเคชัน"</string> + <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ข้อมูลแอป"</string> </resources> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 6c29c6e7c179..e92dbc55275b 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -118,4 +118,14 @@ <!-- Diameter of outer shape drawable shown in navbar search--> <dimen name="navbar_search_outerring_diameter">300dip</dimen> + <!-- Height of the draggable handle at the bottom of the phone notification panel --> + <dimen name="close_handle_height">34dp</dimen> + + <!-- Layout parameters for the notification panel --> + <dimen name="notification_panel_margin_bottom">0dp</dimen> + <dimen name="notification_panel_margin_left">0dp</dimen> + + <!-- Gravity for the notification panel --> + <!-- 0x37 = fill_horizontal|top --> + <integer name="notification_panel_layout_gravity">0x37</integer> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java index f3b9e30d8e2a..185ca5b24d5a 100644 --- a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java @@ -52,7 +52,6 @@ public class SearchPanelView extends FrameLayout implements private boolean mShowing; private View mSearchTargetsContainer; private MultiWaveView mMultiWaveView; - private SearchManager mSearchManager; public SearchPanelView(Context context, AttributeSet attrs) { this(context, attrs, 0); @@ -67,10 +66,30 @@ public class SearchPanelView extends FrameLayout implements } } - public boolean isSearchAvailable() { + private SearchManager mSearchManager; + + public boolean isAssistantAvailable() { return mSearchManager != null && mSearchManager.getGlobalSearchActivity() != null; } + private void startAssistActivity() { + if (mSearchManager != null) { + ComponentName globalSearchActivity = mSearchManager.getGlobalSearchActivity(); + if (globalSearchActivity != null) { + Intent intent = new Intent(Intent.ACTION_ASSIST); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setPackage(globalSearchActivity.getPackageName()); + try { + mContext.startActivity(intent); + } catch (ActivityNotFoundException e) { + Slog.w(TAG, "Activity not found for " + intent.getAction()); + } + } else { + Slog.w(TAG, "No global search activity"); + } + } + } + final MultiWaveView.OnTriggerListener mMultiWaveViewListener = new MultiWaveView.OnTriggerListener() { @@ -90,29 +109,11 @@ public class SearchPanelView extends FrameLayout implements final int resId = mMultiWaveView.getResourceIdForTarget(target); switch (resId) { case com.android.internal.R.drawable.ic_lockscreen_search: - startGlobalSearch(); + startAssistActivity(); break; } mBar.hideSearchPanel(); } - - private void startGlobalSearch() { - if (mSearchManager != null) { - ComponentName globalSearchActivity = mSearchManager.getGlobalSearchActivity(); - if (globalSearchActivity != null) { - Intent intent = new Intent(SearchManager.INTENT_ACTION_GLOBAL_SEARCH); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setComponent(globalSearchActivity); - try { - mContext.startActivity(intent); - } catch (ActivityNotFoundException e) { - Slog.w(TAG, "Application not found for action " + intent.getAction()); - } - } else { - Slog.w(TAG, "No global search activity"); - } - } - } }; @Override diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIService.java b/packages/SystemUI/src/com/android/systemui/SystemUIService.java index 1ae15be8a4ea..0a5749938aec 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIService.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIService.java @@ -41,6 +41,7 @@ public class SystemUIService extends Service { final Object[] SERVICES = new Object[] { 0, // system bar or status bar, filled in below. com.android.systemui.power.PowerUI.class, + com.android.systemui.media.RingtonePlayer.class, }; /** @@ -111,14 +112,6 @@ public class SystemUIService extends Service { @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - if (checkCallingOrSelfPermission(android.Manifest.permission.DUMP) - != PackageManager.PERMISSION_GRANTED) { - pw.println("Permission Denial: can't dump StatusBar from from pid=" - + Binder.getCallingPid() - + ", uid=" + Binder.getCallingUid()); - return; - } - if (args == null || args.length == 0) { for (SystemUI ui: mServices) { pw.println("dumping service: " + ui.getClass().getName()); diff --git a/services/java/com/android/server/NotificationPlayer.java b/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java index 52d23810b15a..6a12eb1916aa 100644 --- a/services/java/com/android/server/NotificationPlayer.java +++ b/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server; +package com.android.systemui.media; import android.content.Context; import android.media.AudioManager; @@ -36,7 +36,7 @@ import java.util.LinkedList; /** * @hide * This class is provides the same interface and functionality as android.media.AsyncPlayer - * with the following differences: + * with the following differences: * - whenever audio is played, audio focus is requested, * - whenever audio playback is stopped or the playback completed, audio focus is abandoned. */ @@ -338,4 +338,3 @@ public class NotificationPlayer implements OnCompletionListener { } } } - diff --git a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java new file mode 100644 index 000000000000..9e273d4db12e --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2012 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.media; + +import android.content.Context; +import android.media.IAudioService; +import android.media.IRingtonePlayer; +import android.media.Ringtone; +import android.net.Uri; +import android.os.Binder; +import android.os.IBinder; +import android.os.Process; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.util.Slog; + +import com.android.systemui.SystemUI; +import com.google.android.collect.Maps; + +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.HashMap; + +/** + * Service that offers to play ringtones by {@link Uri}, since our process has + * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}. + */ +public class RingtonePlayer extends SystemUI { + private static final String TAG = "RingtonePlayer"; + private static final boolean LOGD = true; + + // TODO: support Uri switching under same IBinder + + private IAudioService mAudioService; + + private final NotificationPlayer mAsyncPlayer = new NotificationPlayer(TAG); + private final HashMap<IBinder, Client> mClients = Maps.newHashMap(); + + @Override + public void start() { + mAsyncPlayer.setUsesWakeLock(mContext); + + mAudioService = IAudioService.Stub.asInterface( + ServiceManager.getService(Context.AUDIO_SERVICE)); + try { + mAudioService.setRingtonePlayer(mCallback); + } catch (RemoteException e) { + Slog.e(TAG, "Problem registering RingtonePlayer: " + e); + } + } + + /** + * Represents an active remote {@link Ringtone} client. + */ + private class Client implements IBinder.DeathRecipient { + private final IBinder mToken; + private final Ringtone mRingtone; + + public Client(IBinder token, Uri uri, int streamType) { + mToken = token; + mRingtone = new Ringtone(mContext, false); + mRingtone.setStreamType(streamType); + mRingtone.setUri(uri); + } + + @Override + public void binderDied() { + if (LOGD) Slog.d(TAG, "binderDied() token=" + mToken); + synchronized (mClients) { + mClients.remove(mToken); + } + mRingtone.stop(); + } + } + + private IRingtonePlayer mCallback = new IRingtonePlayer.Stub() { + @Override + public void play(IBinder token, Uri uri, int streamType) throws RemoteException { + if (LOGD) Slog.d(TAG, "play(token=" + token + ", uri=" + uri + ")"); + Client client; + synchronized (mClients) { + client = mClients.get(token); + if (client == null) { + client = new Client(token, uri, streamType); + token.linkToDeath(client, 0); + mClients.put(token, client); + } + } + client.mRingtone.play(); + } + + @Override + public void stop(IBinder token) { + if (LOGD) Slog.d(TAG, "stop(token=" + token + ")"); + Client client; + synchronized (mClients) { + client = mClients.remove(token); + } + if (client != null) { + client.mToken.unlinkToDeath(client, 0); + client.mRingtone.stop(); + } + } + + @Override + public boolean isPlaying(IBinder token) { + if (LOGD) Slog.d(TAG, "isPlaying(token=" + token + ")"); + Client client; + synchronized (mClients) { + client = mClients.get(token); + } + if (client != null) { + return client.mRingtone.isPlaying(); + } else { + return false; + } + } + + @Override + public void playAsync(Uri uri, boolean looping, int streamType) { + if (LOGD) Slog.d(TAG, "playAsync(uri=" + uri + ")"); + if (Binder.getCallingUid() != Process.SYSTEM_UID) { + throw new SecurityException("Async playback only available from system UID."); + } + mAsyncPlayer.play(mContext, uri, looping, streamType); + } + + @Override + public void stopAsync() { + if (LOGD) Slog.d(TAG, "stopAsync()"); + if (Binder.getCallingUid() != Process.SYSTEM_UID) { + throw new SecurityException("Async playback only available from system UID."); + } + mAsyncPlayer.stop(); + } + }; + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println("Clients:"); + synchronized (mClients) { + for (Client client : mClients.values()) { + pw.print(" mToken="); + pw.print(client.mToken); + pw.print(" mUri="); + pw.println(client.mRingtone.getUri()); + } + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index fe7d5aaa2c18..3c30f5dd77b3 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -241,7 +241,7 @@ public class PowerUI extends SystemUI { if (soundUri != null) { final Ringtone sfx = RingtoneManager.getRingtone(mContext, soundUri); if (sfx != null) { - sfx.setStreamType(AudioManager.STREAM_NOTIFICATION); + sfx.setStreamType(AudioManager.STREAM_SYSTEM); sfx.play(); } } diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java index 97c9553267eb..9f801b0246dc 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java @@ -184,7 +184,6 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView mRecycledViews.add(v); mLinearLayout.removeView(v); mCallback.handleSwipe(v); - v.setActivated(false); // Restore the alpha/translation parameters to what they were before swiping // (for when these items are recycled) View contentView = getChildContentView(v); @@ -196,11 +195,9 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView // We do this so the underlying ScrollView knows that it won't get // the chance to intercept events anymore requestDisallowInterceptTouchEvent(true); - v.setActivated(true); } public void onDragCancelled(View v) { - v.setActivated(false); } public View getChildAtPosition(MotionEvent ev) { diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java index f19ab24cc94c..e865b9c00542 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java @@ -713,6 +713,11 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener public void handleSwipe(View view) { TaskDescription ad = ((ViewHolder) view.getTag()).taskDescription; + if (ad == null) { + Log.v(TAG, "Not able to find activity description for swiped task; view=" + view + + " tag=" + view.getTag()); + return; + } if (DEBUG) Log.v(TAG, "Jettison " + ad.getLabel()); mRecentTaskDescriptions.remove(ad); @@ -727,13 +732,15 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener // the task. final ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); - am.removeTask(ad.persistentTaskId, ActivityManager.REMOVE_TASK_KILL_PROCESS); + if (am != null) { + am.removeTask(ad.persistentTaskId, ActivityManager.REMOVE_TASK_KILL_PROCESS); - // Accessibility feedback - setContentDescription( - mContext.getString(R.string.accessibility_recents_item_dismissed, ad.getLabel())); - sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); - setContentDescription(null); + // Accessibility feedback + setContentDescription( + mContext.getString(R.string.accessibility_recents_item_dismissed, ad.getLabel())); + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); + setContentDescription(null); + } } private void startApplicationDetailsActivity(String packageName) { diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java index f4e516c19867..c1597e051567 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java @@ -191,7 +191,6 @@ public class RecentsVerticalScrollView extends ScrollView mRecycledViews.add(v); mLinearLayout.removeView(v); mCallback.handleSwipe(v); - v.setActivated(false); // Restore the alpha/translation parameters to what they were before swiping // (for when these items are recycled) View contentView = getChildContentView(v); @@ -203,11 +202,9 @@ public class RecentsVerticalScrollView extends ScrollView // We do this so the underlying ScrollView knows that it won't get // the chance to intercept events anymore requestDisallowInterceptTouchEvent(true); - v.setActivated(true); } public void onDragCancelled(View v) { - v.setActivated(false); } public View getChildAtPosition(MotionEvent ev) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 028fcbee7ac0..7317c5c1b7f5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -237,6 +237,7 @@ public abstract class BaseStatusBar extends SystemUI implements public boolean onLongClick(View v) { final String packageNameF = (String) v.getTag(); if (packageNameF == null) return false; + if (v.getWindowToken() == null) return false; PopupMenu popup = new PopupMenu(mContext, v); popup.getMenuInflater().inflate(R.menu.notification_popup_menu, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @@ -396,7 +397,7 @@ public abstract class BaseStatusBar extends SystemUI implements break; case MSG_OPEN_SEARCH_PANEL: if (DEBUG) Slog.d(TAG, "opening search panel"); - if (mSearchPanelView != null && mSearchPanelView.isSearchAvailable()) { + if (mSearchPanelView != null && mSearchPanelView.isAssistantAvailable()) { mSearchPanelView.show(true, true); } break; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 73c5d3a5c02b..4bb2d1d4036f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -23,6 +23,7 @@ import android.app.StatusBarManager; import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; import android.os.ServiceManager; @@ -35,6 +36,7 @@ import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.Surface; +import android.view.Window; import android.view.WindowManager; import android.view.WindowManagerImpl; import android.widget.ImageView; @@ -71,6 +73,8 @@ public class NavigationBarView extends LinearLayout { int mDisabledFlags = 0; int mNavigationIconHints = 0; + private Drawable mBackIcon, mBackLandIcon, mBackAltIcon, mBackAltLandIcon; + private DelegateViewHelper mDelegateHelper; // workaround for LayoutTransitions leaving the nav buttons in a weird state (bug 5549288) @@ -146,6 +150,11 @@ public class NavigationBarView extends LinearLayout { mVertical = false; mShowMenu = false; mDelegateHelper = new DelegateViewHelper(this); + + mBackIcon = res.getDrawable(R.drawable.ic_sysbar_back); + mBackLandIcon = res.getDrawable(R.drawable.ic_sysbar_back_land); + mBackAltIcon = res.getDrawable(R.drawable.ic_sysbar_back_ime); + mBackAltLandIcon = res.getDrawable(R.drawable.ic_sysbar_back_ime); } View.OnTouchListener mLightsOutListener = new View.OnTouchListener() { @@ -188,10 +197,10 @@ public class NavigationBarView extends LinearLayout { getRecentsButton().setAlpha( (0 != (hints & StatusBarManager.NAVIGATION_HINT_RECENT_NOP)) ? 0.5f : 1.0f); - ((ImageView)getBackButton()).setImageResource( + ((ImageView)getBackButton()).setImageDrawable( (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT)) - ? R.drawable.ic_sysbar_back_ime - : R.drawable.ic_sysbar_back); + ? (mVertical ? mBackAltLandIcon : mBackAltIcon) + : (mVertical ? mBackLandIcon : mBackIcon)); } public void setDisabledFlags(int disabledFlags) { @@ -250,7 +259,7 @@ public class NavigationBarView extends LinearLayout { } else { navButtons.animate() .alpha(lightsOut ? 0f : 1f) - .setDuration(lightsOut ? 600 : 200) + .setDuration(lightsOut ? 750 : 250) .start(); lowLights.setOnTouchListener(mLightsOutListener); @@ -260,8 +269,7 @@ public class NavigationBarView extends LinearLayout { } lowLights.animate() .alpha(lightsOut ? 1f : 0f) - .setStartDelay(lightsOut ? 500 : 0) - .setDuration(lightsOut ? 1000 : 300) + .setDuration(lightsOut ? 750 : 250) .setInterpolator(new AccelerateInterpolator(2.0f)) .setListener(lightsOut ? null : new AnimatorListenerAdapter() { @Override @@ -304,7 +312,6 @@ public class NavigationBarView extends LinearLayout { } mCurrentView = mRotatedViews[rot]; mCurrentView.setVisibility(View.VISIBLE); - mVertical = (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270); // force the low profile & disabled states into compliance setLowProfile(mLowProfile, false, true /* force */); @@ -326,6 +333,14 @@ public class NavigationBarView extends LinearLayout { protected void onSizeChanged(int w, int h, int oldw, int oldh) { if (DEBUG) Slog.d(TAG, String.format( "onSizeChanged: (%dx%d) old: (%dx%d)", w, h, oldw, oldh)); + + final boolean newVertical = w > 0 && h > w; + if (newVertical != mVertical) { + mVertical = newVertical; + //Slog.v(TAG, String.format("onSizeChanged: h=%d, w=%d, vert=%s", h, w, mVertical?"y":"n")); + reorient(); + } + postCheckForInvalidLayout("sizeChanged"); super.onSizeChanged(w, h, oldw, oldh); } 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 80ee64f99bb8..3b00300dc464 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -16,6 +16,9 @@ package com.android.systemui.statusbar.phone; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.ActivityManager; import android.app.ActivityManagerNative; @@ -43,6 +46,8 @@ import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; import android.util.Slog; +import android.util.TypedValue; +import android.view.Choreographer; import android.view.Display; import android.view.Gravity; import android.view.IWindowManager; @@ -55,8 +60,10 @@ import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; import android.view.WindowManagerImpl; +import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; import android.view.animation.AnimationUtils; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RemoteViews; @@ -69,6 +76,7 @@ import com.android.systemui.R; import com.android.systemui.recent.RecentTasksLoader; import com.android.systemui.statusbar.BaseStatusBar; import com.android.systemui.statusbar.NotificationData; +import com.android.systemui.statusbar.NotificationData.Entry; import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.policy.BatteryController; @@ -99,8 +107,6 @@ public class PhoneStatusBar extends BaseStatusBar { static final int EXPANDED_LEAVE_ALONE = -10000; static final int EXPANDED_FULL_OPEN = -10001; - private static final int MSG_ANIMATE = 100; - private static final int MSG_ANIMATE_REVEAL = 101; private static final int MSG_OPEN_NOTIFICATION_PANEL = 1000; private static final int MSG_CLOSE_NOTIFICATION_PANEL = 1001; private static final int MSG_SHOW_INTRUDER = 1002; @@ -112,6 +118,9 @@ public class PhoneStatusBar extends BaseStatusBar { private static final boolean CLOSE_PANEL_WHEN_EMPTIED = true; + private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10; // see NotificationManagerService + private static final int HIDE_ICONS_BELOW_SCORE = Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER; + // fling gesture tuning parameters, scaled to display density private float mSelfExpandVelocityPx; // classic value: 2000px/s private float mSelfCollapseVelocityPx; // classic value: 2000px/s (will be negated to collapse "up") @@ -138,7 +147,9 @@ public class PhoneStatusBar extends BaseStatusBar { IWindowManager mWindowManager; + StatusBarWindowView mStatusBarWindow; PhoneStatusBarView mStatusBarView; + int mPixelFormat; Object mQueueLock = new Object(); @@ -149,18 +160,19 @@ public class PhoneStatusBar extends BaseStatusBar { LinearLayout mStatusIcons; // expanded notifications - Dialog mExpandedDialog; - WindowManager.LayoutParams mExpandedParams; - View mExpandedWindowView; View mNotificationPanel; // the sliding/resizing panel within the notification window ScrollView mScrollView; View mExpandedContents; + int mNotificationPanelMarginBottomPx, mNotificationPanelMarginLeftPx; + int mNotificationPanelGravity; + // top bar View mClearButton; View mSettingsButton; // drag bar CloseDragHandle mCloseView; + private int mCloseViewHeight; // all notifications NotificationData mNotificationData = new NotificationData(); @@ -194,19 +206,19 @@ public class PhoneStatusBar extends BaseStatusBar { boolean mTracking; VelocityTracker mVelocityTracker; - static final int ANIM_FRAME_DURATION = (1000/60); - + Choreographer mChoreographer; boolean mAnimating; - long mCurAnimationTime; float mAnimY; float mAnimVel; float mAnimAccel; - long mAnimLastTime; + long mAnimLastTimeNanos; boolean mAnimatingReveal = false; int mViewDelta; int[] mAbsPos = new int[2]; Runnable mPostCollapseCleanup = null; + private AnimatorSet mLightsOutAnimation; + private AnimatorSet mLightsOnAnimation; // for disabling the status bar int mDisabled = 0; @@ -268,12 +280,25 @@ public class PhoneStatusBar extends BaseStatusBar { mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size); - final View expanded = mExpandedWindowView = View.inflate(context, - R.layout.status_bar_expanded, null); + mStatusBarWindow = (StatusBarWindowView) View.inflate(context, + R.layout.super_status_bar, null); if (DEBUG) { - expanded.setBackgroundColor(0x6000FF80); - } - mNotificationPanel = expanded.findViewById(R.id.notification_panel); + mStatusBarWindow.setBackgroundColor(0x6000FF80); + } + mStatusBarWindow.mService = this; + mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (mExpanded && !mAnimating) { + animateCollapse(); + } + } + return true; + }}); + + mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar); + mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel); if (ENABLE_INTRUDERS) { mIntruderAlertView = (IntruderAlertView) View.inflate(context, R.layout.intruder_alert, null); @@ -281,10 +306,9 @@ public class PhoneStatusBar extends BaseStatusBar { mIntruderAlertView.setBar(this); } - PhoneStatusBarView sb = (PhoneStatusBarView)View.inflate(context, - R.layout.status_bar, null); - sb.mService = this; - mStatusBarView = sb; + mStatusBarView.mService = this; + + mChoreographer = Choreographer.getInstance(); try { boolean showNav = mWindowManager.hasNavigationBar(); @@ -302,35 +326,35 @@ public class PhoneStatusBar extends BaseStatusBar { // figure out which pixel-format to use for the status bar. mPixelFormat = PixelFormat.OPAQUE; - mStatusIcons = (LinearLayout)sb.findViewById(R.id.statusIcons); - mNotificationIcons = (IconMerger)sb.findViewById(R.id.notificationIcons); - mMoreIcon = sb.findViewById(R.id.moreIcon); + mStatusIcons = (LinearLayout)mStatusBarView.findViewById(R.id.statusIcons); + mNotificationIcons = (IconMerger)mStatusBarView.findViewById(R.id.notificationIcons); + mMoreIcon = mStatusBarView.findViewById(R.id.moreIcon); mNotificationIcons.setOverflowIndicator(mMoreIcon); - mIcons = (LinearLayout)sb.findViewById(R.id.icons); - mTickerView = sb.findViewById(R.id.ticker); + mIcons = (LinearLayout)mStatusBarView.findViewById(R.id.icons); + mTickerView = mStatusBarView.findViewById(R.id.ticker); - mExpandedDialog = new ExpandedDialog(context); - mPile = (NotificationRowLayout)expanded.findViewById(R.id.latestItems); + mPile = (NotificationRowLayout)mStatusBarWindow.findViewById(R.id.latestItems); mPile.setLongPressListener(getNotificationLongClicker()); mExpandedContents = mPile; // was: expanded.findViewById(R.id.notificationLinearLayout); - mClearButton = expanded.findViewById(R.id.clear_all_button); + mClearButton = mStatusBarWindow.findViewById(R.id.clear_all_button); mClearButton.setOnClickListener(mClearButtonListener); mClearButton.setAlpha(0f); mClearButton.setEnabled(false); - mDateView = (DateView)expanded.findViewById(R.id.date); - mSettingsButton = expanded.findViewById(R.id.settings_button); + mDateView = (DateView)mStatusBarWindow.findViewById(R.id.date); + mSettingsButton = mStatusBarWindow.findViewById(R.id.settings_button); mSettingsButton.setOnClickListener(mSettingsButtonListener); - mScrollView = (ScrollView)expanded.findViewById(R.id.scroll); + mScrollView = (ScrollView)mStatusBarWindow.findViewById(R.id.scroll); mScrollView.setVerticalScrollBarEnabled(false); // less drawing during pulldowns - mTicker = new MyTicker(context, sb); + mTicker = new MyTicker(context, mStatusBarView); - TickerView tickerView = (TickerView)sb.findViewById(R.id.tickerText); + TickerView tickerView = (TickerView)mStatusBarView.findViewById(R.id.tickerText); tickerView.mTicker = mTicker; - mCloseView = (CloseDragHandle)mExpandedWindowView.findViewById(R.id.close); + mCloseView = (CloseDragHandle)mStatusBarWindow.findViewById(R.id.close); mCloseView.mService = this; + mCloseViewHeight = res.getDimensionPixelSize(R.dimen.close_handle_height); mEdgeBorder = res.getDimensionPixelSize(R.dimen.status_bar_edge_ignore); @@ -340,10 +364,10 @@ public class PhoneStatusBar extends BaseStatusBar { // Other icons mLocationController = new LocationController(mContext); // will post a notification mBatteryController = new BatteryController(mContext); - mBatteryController.addIconView((ImageView)sb.findViewById(R.id.battery)); + mBatteryController.addIconView((ImageView)mStatusBarView.findViewById(R.id.battery)); mNetworkController = new NetworkController(mContext); final SignalClusterView signalCluster = - (SignalClusterView)sb.findViewById(R.id.signal_cluster); + (SignalClusterView)mStatusBarView.findViewById(R.id.signal_cluster); mNetworkController.addSignalCluster(signalCluster); signalCluster.setNetworkController(mNetworkController); // final ImageView wimaxRSSI = @@ -362,7 +386,7 @@ public class PhoneStatusBar extends BaseStatusBar { filter.addAction(Intent.ACTION_SCREEN_OFF); context.registerReceiver(mBroadcastReceiver, filter); - return sb; + return mStatusBarView; } @Override @@ -456,8 +480,16 @@ public class PhoneStatusBar extends BaseStatusBar { } public int getStatusBarHeight() { - final Resources res = mContext.getResources(); - return res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height); + if (mNaturalBarHeight < 0) { + final Resources res = mContext.getResources(); + mNaturalBarHeight = + res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height); + } + return mNaturalBarHeight; + } + + private int getCloseViewHeight() { + return mCloseViewHeight; } private View.OnClickListener mRecentsClickListener = new View.OnClickListener() { @@ -877,7 +909,10 @@ public class PhoneStatusBar extends BaseStatusBar { ArrayList<View> toShow = new ArrayList<View>(); for (int i=0; i<N; i++) { - toShow.add(mNotificationData.get(N-i-1).icon); + Entry ent = mNotificationData.get(N-i-1); + if (ent.notification.score >= HIDE_ICONS_BELOW_SCORE) { + toShow.add(ent.icon); + } } ArrayList<View> toRemove = new ArrayList<View>(); @@ -935,7 +970,26 @@ public class PhoneStatusBar extends BaseStatusBar { mClearButton.setAlpha(clearable ? 1.0f : 0.0f); } mClearButton.setEnabled(clearable); - + + final View nlo = mStatusBarView.findViewById(R.id.notification_lights_out); + final boolean showDot = (any&&!areLightsOn()); + if (showDot != (nlo.getAlpha() == 1.0f)) { + if (showDot) { + nlo.setAlpha(0f); + nlo.setVisibility(View.VISIBLE); + } + nlo.animate() + .alpha(showDot?1:0) + .setDuration(showDot?750:250) + .setInterpolator(new AccelerateInterpolator(2.0f)) + .setListener(showDot ? null : new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator _a) { + nlo.setVisibility(View.GONE); + } + }) + .start(); + } } public void showClock(boolean show) { @@ -1036,12 +1090,6 @@ public class PhoneStatusBar extends BaseStatusBar { public void handleMessage(Message m) { super.handleMessage(m); switch (m.what) { - case MSG_ANIMATE: - doAnimation(); - break; - case MSG_ANIMATE_REVEAL: - doRevealAnimation(); - break; case MSG_OPEN_NOTIFICATION_PANEL: animateExpand(); break; @@ -1059,6 +1107,20 @@ public class PhoneStatusBar extends BaseStatusBar { } } + final Runnable mAnimationCallback = new Runnable() { + @Override + public void run() { + doAnimation(mChoreographer.getFrameTimeNanos()); + } + }; + + final Runnable mRevealAnimationCallback = new Runnable() { + @Override + public void run() { + doRevealAnimation(mChoreographer.getFrameTimeNanos()); + } + }; + View.OnFocusChangeListener mFocusChangeListener = new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { // Because 'v' is a ViewGroup, all its children will be (un)selected @@ -1072,19 +1134,22 @@ public class PhoneStatusBar extends BaseStatusBar { if (mExpandedVisible) { return; } - mExpandedDialog.show(); // XXX HAX + mExpandedVisible = true; - visibilityChanged(true); updateExpandedViewPos(EXPANDED_LEAVE_ALONE); - mExpandedParams.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - mExpandedParams.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; - if (DEBUG) { - Slog.d(TAG, "makeExpandedVisible: expanded params = " + mExpandedParams); - } - mExpandedDialog.getWindow().setAttributes(mExpandedParams); - mExpandedWindowView.requestFocus(View.FOCUS_FORWARD); - mExpandedWindowView.setVisibility(View.VISIBLE); + + // Expand the window to encompass the full screen in anticipation of the drag. + // This is only possible to do atomically because the status bar is at the top of the screen! + WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams(); + lp.flags &= (~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); + lp.height = ViewGroup.LayoutParams.MATCH_PARENT; + final WindowManager wm = WindowManagerImpl.getDefault(); + wm.updateViewLayout(mStatusBarWindow, lp); + + mStatusBarWindow.requestFocus(View.FOCUS_FORWARD); + + visibilityChanged(true); } public void animateExpand() { @@ -1131,7 +1196,7 @@ public class PhoneStatusBar extends BaseStatusBar { if (mAnimating) { y = (int)mAnimY; } else { - y = mDisplayMetrics.heightPixels-1; + y = getExpandedViewMaxHeight()-1; } // Let the fling think that we're open so it goes in the right direction // and doesn't try to re-open the windowshade. @@ -1165,11 +1230,14 @@ public class PhoneStatusBar extends BaseStatusBar { } mExpandedVisible = false; visibilityChanged(false); - mExpandedParams.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - mExpandedParams.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; - mExpandedDialog.getWindow().setAttributes(mExpandedParams); - mExpandedDialog.hide(); // XXX HAX - mExpandedWindowView.setVisibility(View.GONE); + //mNotificationPanel.setVisibility(View.GONE); + + // Shrink the window to the size of the status bar only + WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams(); + lp.height = getStatusBarHeight(); + lp.flags |= (WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); + final WindowManager wm = WindowManagerImpl.getDefault(); + wm.updateViewLayout(mStatusBarWindow, lp); if ((mDisabled & StatusBarManager.DISABLE_NOTIFICATION_ICONS) == 0) { setNotificationIconVisibility(true, com.android.internal.R.anim.fade_in); @@ -1185,29 +1253,42 @@ public class PhoneStatusBar extends BaseStatusBar { } } - void doAnimation() { + void doAnimation(long frameTimeNanos) { if (mAnimating) { if (SPEW) Slog.d(TAG, "doAnimation"); if (SPEW) Slog.d(TAG, "doAnimation before mAnimY=" + mAnimY); - incrementAnim(); + incrementAnim(frameTimeNanos); if (SPEW) Slog.d(TAG, "doAnimation after mAnimY=" + mAnimY); - if (mAnimY >= mDisplayMetrics.heightPixels-1) { + + if (mAnimY >= getExpandedViewMaxHeight()-1) { if (SPEW) Slog.d(TAG, "Animation completed to expanded state."); mAnimating = false; updateExpandedViewPos(EXPANDED_FULL_OPEN); performExpand(); + return; } - else if (mAnimY < mStatusBarView.getHeight()) { + + if (mAnimY == 0 && mAnimAccel == 0 && mAnimVel == 0) { if (SPEW) Slog.d(TAG, "Animation completed to collapsed state."); mAnimating = false; - updateExpandedViewPos(0); performCollapse(); + return; } - else { - updateExpandedViewPos((int)mAnimY); - mCurAnimationTime += ANIM_FRAME_DURATION; - mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE), mCurAnimationTime); + + if (mAnimY < getStatusBarHeight()) { + // Draw one more frame with the bar positioned at the top of the screen + // before ending the animation so that the user sees the bar in + // its final position. The call to performCollapse() causes a window + // relayout which takes time and might cause the animation to skip + // on the very last frame before the bar disappears if we did it now. + mAnimY = 0; + mAnimAccel = 0; + mAnimVel = 0; } + + updateExpandedViewPos((int)mAnimY); + mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, + mAnimationCallback, null); } } @@ -1218,31 +1299,30 @@ public class PhoneStatusBar extends BaseStatusBar { mVelocityTracker = null; } - void incrementAnim() { - long now = SystemClock.uptimeMillis(); - float t = ((float)(now - mAnimLastTime)) / 1000; // ms -> s + void incrementAnim(long frameTimeNanos) { + final long deltaNanos = Math.max(frameTimeNanos - mAnimLastTimeNanos, 0); + final float t = deltaNanos * 0.000000001f; // ns -> s final float y = mAnimY; final float v = mAnimVel; // px/s final float a = mAnimAccel; // px/s/s mAnimY = y + (v*t) + (0.5f*a*t*t); // px mAnimVel = v + (a*t); // px/s - mAnimLastTime = now; // ms + mAnimLastTimeNanos = frameTimeNanos; // ns //Slog.d(TAG, "y=" + y + " v=" + v + " a=" + a + " t=" + t + " mAnimY=" + mAnimY // + " mAnimAccel=" + mAnimAccel); } - - void doRevealAnimation() { - final int h = mCloseView.getHeight() + mStatusBarView.getHeight(); + + void doRevealAnimation(long frameTimeNanos) { + final int h = getCloseViewHeight() + getStatusBarHeight(); if (mAnimatingReveal && mAnimating && mAnimY < h) { - incrementAnim(); + incrementAnim(frameTimeNanos); if (mAnimY >= h) { mAnimY = h; updateExpandedViewPos((int)mAnimY); } else { updateExpandedViewPos((int)mAnimY); - mCurAnimationTime += ANIM_FRAME_DURATION; - mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE_REVEAL), - mCurAnimationTime); + mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, + mRevealAnimationCallback, null); } } } @@ -1252,34 +1332,30 @@ public class PhoneStatusBar extends BaseStatusBar { Slog.d(TAG, "panel: beginning to track the user's touch, y=" + y + " opening=" + opening); } - // there are some race conditions that cause this to be inaccurate; let's recalculate it any - // time we're about to drag the panel - updateExpandedSize(); - mTracking = true; mPile.setLayerType(View.LAYER_TYPE_HARDWARE, null); mVelocityTracker = VelocityTracker.obtain(); if (opening) { mAnimAccel = mExpandAccelPx; mAnimVel = mFlingExpandMinVelocityPx; - mAnimY = mStatusBarView.getHeight(); + mAnimY = getStatusBarHeight(); updateExpandedViewPos((int)mAnimY); mAnimating = true; mAnimatingReveal = true; - mHandler.removeMessages(MSG_ANIMATE); - mHandler.removeMessages(MSG_ANIMATE_REVEAL); - long now = SystemClock.uptimeMillis(); - mAnimLastTime = now; - mCurAnimationTime = now + ANIM_FRAME_DURATION; - mAnimating = true; - mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE_REVEAL), - mCurAnimationTime); + mAnimLastTimeNanos = System.nanoTime(); + mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, + mAnimationCallback, null); + mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, + mRevealAnimationCallback, null); + mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, + mRevealAnimationCallback, null); makeExpandedVisible(); } else { // it's open, close it? if (mAnimating) { mAnimating = false; - mHandler.removeMessages(MSG_ANIMATE); + mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, + mAnimationCallback, null); } updateExpandedViewPos(y + mViewDelta); } @@ -1300,7 +1376,7 @@ public class PhoneStatusBar extends BaseStatusBar { if (mExpanded) { if (!always && ( vel > mFlingCollapseMinVelocityPx - || (y > (mDisplayMetrics.heightPixels*(1f-mCollapseMinDisplayFraction)) && + || (y > (getExpandedViewMaxHeight()*(1f-mCollapseMinDisplayFraction)) && vel > -mFlingExpandMinVelocityPx))) { // We are expanded, but they didn't move sufficiently to cause // us to retract. Animate back to the expanded position. @@ -1319,7 +1395,7 @@ public class PhoneStatusBar extends BaseStatusBar { } else { if (always || ( vel > mFlingExpandMinVelocityPx - || (y > (mDisplayMetrics.heightPixels*(1f-mExpandMinDisplayFraction)) && + || (y > (getExpandedViewMaxHeight()*(1f-mExpandMinDisplayFraction)) && vel > -mFlingCollapseMinVelocityPx))) { // We are collapsed, and they moved enough to allow us to // expand. Animate in the notifications. @@ -1340,13 +1416,15 @@ public class PhoneStatusBar extends BaseStatusBar { //Slog.d(TAG, "mAnimY=" + mAnimY + " mAnimVel=" + mAnimVel // + " mAnimAccel=" + mAnimAccel); - long now = SystemClock.uptimeMillis(); - mAnimLastTime = now; - mCurAnimationTime = now + ANIM_FRAME_DURATION; + mAnimLastTimeNanos = System.nanoTime(); mAnimating = true; - mHandler.removeMessages(MSG_ANIMATE); - mHandler.removeMessages(MSG_ANIMATE_REVEAL); - mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE), mCurAnimationTime); + + mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, + mAnimationCallback, null); + mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, + mRevealAnimationCallback, null); + mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, + mAnimationCallback, null); stopTracking(); } @@ -1368,10 +1446,14 @@ public class PhoneStatusBar extends BaseStatusBar { } final int action = event.getAction(); - final int statusBarSize = mStatusBarView.getHeight(); + final int statusBarSize = getStatusBarHeight(); final int hitSize = statusBarSize*2; final int y = (int)event.getRawY(); if (action == MotionEvent.ACTION_DOWN) { + if (!areLightsOn()) { + setLightsOn(true); + } + if (!mExpanded) { mViewDelta = statusBarSize - y; } else { @@ -1379,7 +1461,8 @@ public class PhoneStatusBar extends BaseStatusBar { // mViewDelta = mAbsPos[1] + mTrackingView.getHeight() - y; } if ((!mExpanded && y < hitSize) || - (mExpanded && y > (mDisplayMetrics.heightPixels-hitSize))) { + // @@ add taps outside the panel if it's not full-screen + (mExpanded && y > (getExpandedViewMaxHeight()-hitSize))) { // We drop events at the edge of the screen to make the windowshade come // down by accident less, especially when pushing open a device with a keyboard @@ -1393,9 +1476,9 @@ public class PhoneStatusBar extends BaseStatusBar { } } else if (mTracking) { trackMovement(event); - final int minY = statusBarSize + mCloseView.getHeight(); + final int minY = statusBarSize + getCloseViewHeight(); if (action == MotionEvent.ACTION_MOVE) { - if (mAnimatingReveal && y < minY) { + if (mAnimatingReveal && (y + mViewDelta) < minY) { // nothing } else { mAnimatingReveal = false; @@ -1470,16 +1553,64 @@ public class PhoneStatusBar extends BaseStatusBar { final boolean lightsOut = (0 != (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE)); if (lightsOut) { animateCollapse(); + if (mTicking) { + mTicker.halt(); + } } + if (mNavigationBarView != null) { mNavigationBarView.setLowProfile(lightsOut); } + + setStatusBarLowProfile(lightsOut); } notifyUiVisibilityChanged(); } } + private void setStatusBarLowProfile(boolean lightsOut) { + if (mLightsOutAnimation == null) { + final View notifications = mStatusBarView.findViewById(R.id.notification_icon_area); + final View systemIcons = mStatusBarView.findViewById(R.id.statusIcons); + final View signal = mStatusBarView.findViewById(R.id.signal_cluster); + final View battery = mStatusBarView.findViewById(R.id.battery); + final View clock = mStatusBarView.findViewById(R.id.clock); + + mLightsOutAnimation = new AnimatorSet(); + mLightsOutAnimation.playTogether( + ObjectAnimator.ofFloat(notifications, View.ALPHA, 0), + ObjectAnimator.ofFloat(systemIcons, View.ALPHA, 0), + ObjectAnimator.ofFloat(signal, View.ALPHA, 0), + ObjectAnimator.ofFloat(battery, View.ALPHA, 0.5f), + ObjectAnimator.ofFloat(clock, View.ALPHA, 0.5f) + ); + mLightsOutAnimation.setDuration(750); + + mLightsOnAnimation = new AnimatorSet(); + mLightsOnAnimation.playTogether( + ObjectAnimator.ofFloat(notifications, View.ALPHA, 1), + ObjectAnimator.ofFloat(systemIcons, View.ALPHA, 1), + ObjectAnimator.ofFloat(signal, View.ALPHA, 1), + ObjectAnimator.ofFloat(battery, View.ALPHA, 1), + ObjectAnimator.ofFloat(clock, View.ALPHA, 1) + ); + mLightsOnAnimation.setDuration(250); + } + + mLightsOutAnimation.cancel(); + mLightsOnAnimation.cancel(); + + final Animator a = lightsOut ? mLightsOutAnimation : mLightsOnAnimation; + a.start(); + + setAreThereNotifications(); + } + + private boolean areLightsOn() { + return 0 == (mSystemUiVisibility & View.SYSTEM_UI_FLAG_LOW_PROFILE); + } + public void setLightsOn(boolean on) { Log.v(TAG, "setLightsOn(" + on + ")"); if (on) { @@ -1580,11 +1711,14 @@ public class PhoneStatusBar extends BaseStatusBar { } private void tick(StatusBarNotification n) { + // no ticking in lights-out mode + if (!areLightsOn()) return; + // Show the ticker if one is requested. Also don't do this // until status bar window is attached to the window manager, // because... well, what's the point otherwise? And trying to // run a ticker without being attached will crash! - if (n.notification.tickerText != null && mStatusBarView.getWindowToken() != null) { + if (n.notification.tickerText != null && mStatusBarWindow.getWindowToken() != null) { if (0 == (mDisabled & (StatusBarManager.DISABLE_NOTIFICATION_ICONS | StatusBarManager.DISABLE_NOTIFICATION_TICKER))) { mTicker.addEntry(n); @@ -1672,14 +1806,10 @@ public class PhoneStatusBar extends BaseStatusBar { pw.println(" mAnimating=" + mAnimating + ", mAnimY=" + mAnimY + ", mAnimVel=" + mAnimVel + ", mAnimAccel=" + mAnimAccel); - pw.println(" mCurAnimationTime=" + mCurAnimationTime - + " mAnimLastTime=" + mAnimLastTime); + pw.println(" mAnimLastTimeNanos=" + mAnimLastTimeNanos); pw.println(" mAnimatingReveal=" + mAnimatingReveal + " mViewDelta=" + mViewDelta); pw.println(" mDisplayMetrics=" + mDisplayMetrics); - pw.println(" mExpandedParams: " + mExpandedParams); - pw.println(" mExpandedView: " + viewInfo(mExpandedWindowView)); - pw.println(" mExpandedDialog: " + mExpandedDialog); pw.println(" mPile: " + viewInfo(mPile)); pw.println(" mCloseView: " + viewInfo(mCloseView)); pw.println(" mTickerView: " + viewInfo(mTickerView)); @@ -1723,14 +1853,8 @@ public class PhoneStatusBar extends BaseStatusBar { mStatusBarView.getLocationOnScreen(mAbsPos); Slog.d(TAG, "mStatusBarView: ----- (" + mAbsPos[0] + "," + mAbsPos[1] + ") " + mStatusBarView.getWidth() + "x" - + mStatusBarView.getHeight()); + + getStatusBarHeight()); mStatusBarView.debug(); - - mExpandedWindowView.getLocationOnScreen(mAbsPos); - Slog.d(TAG, "mExpandedView: ----- (" + mAbsPos[0] + "," + mAbsPos[1] - + ") " + mExpandedWindowView.getWidth() + "x" - + mExpandedWindowView.getHeight()); - mExpandedWindowView.debug(); } }); } @@ -1742,13 +1866,15 @@ public class PhoneStatusBar extends BaseStatusBar { @Override public void createAndAddWindows() { addStatusBarWindow(); - addExpandedWindow(); } private void addStatusBarWindow() { // Put up the view final int height = getStatusBarHeight(); + // Now that the status bar window encompasses the sliding panel and its + // translucent backdrop, the entire thing is made TRANSLUCENT and is + // hardware-accelerated. final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, height, @@ -1756,56 +1882,18 @@ public class PhoneStatusBar extends BaseStatusBar { WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, - // We use a pixel format of RGB565 for the status bar to save memory bandwidth and - // to ensure that the layer can be handled by HWComposer. On some devices the - // HWComposer is unable to handle SW-rendered RGBX_8888 layers. - PixelFormat.RGB_565); + PixelFormat.TRANSLUCENT); - // We explicitly leave FLAG_HARDWARE_ACCELERATED out of the flags. The status bar occupies - // very little screen real-estate and is updated fairly frequently. By using CPU rendering - // for the status bar, we prevent the GPU from having to wake up just to do these small - // updates, which should help keep power consumption down. + if (ActivityManager.isHighEndGfx(mDisplay)) { + lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; + } lp.gravity = getStatusBarGravity(); lp.setTitle("StatusBar"); lp.packageName = mContext.getPackageName(); - mStatusBarView = makeStatusBarView(); - WindowManagerImpl.getDefault().addView(mStatusBarView, lp); - } - - void addExpandedWindow() { - WindowManager.LayoutParams lp; - int pixelFormat; - - /// ---------- Expanded View -------------- - pixelFormat = PixelFormat.TRANSLUCENT; - - lp = mExpandedDialog.getWindow().getAttributes(); - lp.x = 0; - lp.y = 0; - lp.type = WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL; - lp.flags = 0 - | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN - | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS - | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL - | WindowManager.LayoutParams.FLAG_DITHER - | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - if (ActivityManager.isHighEndGfx(mDisplay)) { - lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; - } - lp.format = pixelFormat; - lp.gravity = Gravity.TOP | Gravity.FILL_HORIZONTAL; - lp.setTitle("StatusBarExpanded"); - mExpandedParams = lp; - updateExpandedSize(); - mExpandedDialog.getWindow().setFormat(pixelFormat); - mExpandedDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); - mExpandedDialog.setContentView(mExpandedWindowView, - new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - mExpandedDialog.getWindow().setBackgroundDrawable(null); - //mExpandedDialog.show(); + makeStatusBarView(); + WindowManagerImpl.getDefault().addView(mStatusBarWindow, lp); } void setNotificationIconVisibility(boolean visible, int anim) { @@ -1821,15 +1909,26 @@ public class PhoneStatusBar extends BaseStatusBar { mTrackingPosition = -mDisplayMetrics.heightPixels; } + static final float saturate(float a) { + return a < 0f ? 0f : (a > 1f ? 1f : a); + } + + int getExpandedViewMaxHeight() { + return mDisplayMetrics.heightPixels - mNotificationPanelMarginBottomPx; + } + void updateExpandedViewPos(int expandedPosition) { if (SPEW) { Slog.d(TAG, "updateExpandedViewPos before expandedPosition=" + expandedPosition //+ " mTrackingParams.y=" + ((mTrackingParams == null) ? "?" : mTrackingParams.y) - + " mTrackingPosition=" + mTrackingPosition); + + " mTrackingPosition=" + mTrackingPosition + + " gravity=" + mNotificationPanelGravity); } int panelh = 0; - final int disph = mDisplayMetrics.heightPixels; + final boolean portrait = mDisplayMetrics.heightPixels > mDisplayMetrics.widthPixels; + + final int disph = getExpandedViewMaxHeight(); // If the expanded view is not visible, make sure they're still off screen. // Maybe the view was resized. @@ -1855,117 +1954,31 @@ public class PhoneStatusBar extends BaseStatusBar { } // catch orientation changes and other peculiar cases - if (panelh > disph || (panelh < disph && !mTracking && !mAnimating)) + if (panelh > disph || (panelh < disph && !mTracking && !mAnimating)) { panelh = disph; + } else if (panelh < 0) { + panelh = 0; + } mTrackingPosition = panelh; - // XXX: this is all very WIP - //mNotificationPanel.setY(panelh); - final View cropView = mNotificationPanel; - ViewGroup.LayoutParams lp = cropView.getLayoutParams(); - lp.height = panelh; - cropView.setLayoutParams(lp); - // woo, special effects - final float frac = (float)panelh / disph; - final int color = ((int)(0xB0 * frac * frac)) << 24; - mExpandedWindowView.setBackgroundColor(color); - -// Slog.d(TAG, String.format("updateExpanded: pos=%d frac=%.2f col=0x%08x", pos, frac, color)); - -// if (mExpandedParams != null) { -// if (mCloseView.getWindowVisibility() == View.VISIBLE) { -// mCloseView.getLocationInWindow(mPositionTmp); -// final int closePos = mPositionTmp[1]; -// -// mExpandedContents.getLocationInWindow(mPositionTmp); -// final int contentsBottom = mPositionTmp[1] + mExpandedContents.getHeight(); -// -// mExpandedParams.y = pos + mTrackingView.getHeight() -// - (mTrackingParams.height-closePos) - contentsBottom; -// -// if (SPEW) { -// Slog.d(PhoneStatusBar.TAG, -// "pos=" + pos + -// " trackingHeight=" + mTrackingView.getHeight() + -// " (trackingParams.height - closePos)=" + -// (mTrackingParams.height - closePos) + -// " contentsBottom=" + contentsBottom); -// } -// -// } else { -// // If the tracking view is not yet visible, then we can't have -// // a good value of the close view location. We need to wait for -// // it to be visible to do a layout. -// mExpandedParams.y = -mDisplayMetrics.heightPixels; -// } -// int max = h; -// if (mExpandedParams.y > max) { -// mExpandedParams.y = max; -// } -// int min = mTrackingPosition; -// if (mExpandedParams.y < min) { -// mExpandedParams.y = min; -// } -// -// boolean visible = (mTrackingPosition + mTrackingView.getHeight()) > h; -// if (!visible) { -// // if the contents aren't visible, move the expanded view way off screen -// // because the window itself extends below the content view. -// mExpandedParams.y = -disph; -// } -// mExpandedDialog.getWindow().setAttributes(mExpandedParams); -// -// // As long as this isn't just a repositioning that's not supposed to affect -// // the user's perception of what's showing, call to say that the visibility -// // has changed. (Otherwise, someone else will call to do that). -// if (expandedPosition != EXPANDED_LEAVE_ALONE) { -// if (SPEW) Slog.d(TAG, "updateExpandedViewPos visibilityChanged(" + visible + ")"); -// visibilityChanged(visible); -// } -// } -// -// if (SPEW) { -// Slog.d(TAG, "updateExpandedViewPos after expandedPosition=" + expandedPosition -// + " mTrackingParams.y=" + mTrackingParams.y -// + " mTrackingPosition=" + mTrackingPosition -// + " mExpandedParams.y=" + mExpandedParams.y -// + " mExpandedParams.height=" + mExpandedParams.height); -// } - } - int getExpandedHeight(int disph) { - if (DEBUG) { - Slog.d(TAG, "getExpandedHeight(" + disph + "): sbView=" - + mStatusBarView.getHeight() + " closeView=" + mCloseView.getHeight()); + FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mNotificationPanel.getLayoutParams(); + lp.height = panelh; + lp.gravity = mNotificationPanelGravity; + lp.leftMargin = mNotificationPanelMarginLeftPx; + if (SPEW) { + Slog.v(TAG, "updated cropView height=" + panelh + " grav=" + lp.gravity); } - return disph; // - mStatusBarView.getHeight(); + mNotificationPanel.setLayoutParams(lp); + // woo, special effects + final int barh = getCloseViewHeight() + getStatusBarHeight(); + final float frac = saturate((float)(panelh - barh) / (disph - barh)); + final int color = ((int)(0xB0 * Math.sin(frac * 1.57f))) << 24; + mStatusBarWindow.setBackgroundColor(color); } void updateDisplaySize() { mDisplay.getMetrics(mDisplayMetrics); - if (DEBUG) { - Slog.d(TAG, "updateDisplaySize: " + mDisplayMetrics); - } - updateExpandedSize(); - } - - void updateExpandedSize() { - if (DEBUG) { - Slog.d(TAG, "updateExpandedSize()"); - } - if (mExpandedDialog != null && mExpandedParams != null && mDisplayMetrics != null) { - mExpandedParams.width = mDisplayMetrics.widthPixels; - mExpandedParams.height = getExpandedHeight(mDisplayMetrics.heightPixels); - if (!mExpandedVisible) { - updateExpandedInvisiblePosition(); - } else { - mExpandedDialog.getWindow().setAttributes(mExpandedParams); - } - if (DEBUG) { - Slog.d(TAG, "updateExpandedSize: height=" + mExpandedParams.height + " " + - (mExpandedVisible ? "VISIBLE":"INVISIBLE")); - } - } } void performDisableActions(int net) { @@ -2107,8 +2120,9 @@ public class PhoneStatusBar extends BaseStatusBar { animateCollapse(excludeRecents); } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) { - repositionNavigationBar(); updateResources(); + repositionNavigationBar(); + updateExpandedViewPos(EXPANDED_LEAVE_ALONE); } } }; @@ -2183,6 +2197,15 @@ public class PhoneStatusBar extends BaseStatusBar { mCollapseAccelPx = res.getDimension(R.dimen.collapse_accel); mFlingGestureMaxXVelocityPx = res.getDimension(R.dimen.fling_gesture_max_x_velocity); + + mNotificationPanelMarginBottomPx + = (int) res.getDimension(R.dimen.notification_panel_margin_bottom); + mNotificationPanelMarginLeftPx + = (int) res.getDimension(R.dimen.notification_panel_margin_left); + mNotificationPanelGravity = res.getInteger(R.integer.notification_panel_layout_gravity); + if (mNotificationPanelGravity <= 0) { + mNotificationPanelGravity = Gravity.CENTER_VERTICAL | Gravity.TOP; + } if (false) Slog.v(TAG, "updateResources"); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java index 16071d425956..a8f5c6463c21 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java @@ -22,6 +22,7 @@ import android.graphics.Canvas; import android.graphics.Rect; import android.os.SystemClock; import android.util.AttributeSet; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java new file mode 100644 index 000000000000..0fc5b4d42719 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2012 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.statusbar.phone; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.widget.FrameLayout; +import android.widget.TextSwitcher; + + +public class StatusBarWindowView extends FrameLayout +{ + PhoneStatusBar mService; + + public StatusBarWindowView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + boolean down = event.getAction() == KeyEvent.ACTION_DOWN; + switch (event.getKeyCode()) { + case KeyEvent.KEYCODE_BACK: + if (!down) { + mService.animateCollapse(); + } + return true; + } + return super.dispatchKeyEvent(event); + } +} + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index 3bdefcb2a5ef..6e87dd76b34b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -70,6 +70,7 @@ import com.android.systemui.statusbar.BaseStatusBar; import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarIconView; +import com.android.systemui.statusbar.NotificationData.Entry; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.CompatModeButton; @@ -111,6 +112,9 @@ public class TabletStatusBar extends BaseStatusBar implements final static int NOTIFICATION_PEEK_HOLD_THRESH = 200; // ms final static int NOTIFICATION_PEEK_FADE_DELAY = 3000; // ms + private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10; // see NotificationManagerService + private static final int HIDE_ICONS_BELOW_SCORE = Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER; + // The height of the bar, as definied by the build. It may be taller if we're plugged // into hdmi. int mNaturalBarHeight = -1; @@ -268,7 +272,7 @@ public class TabletStatusBar extends BaseStatusBar implements WindowManager.LayoutParams lp = mNotificationPanelParams = new WindowManager.LayoutParams( res.getDimensionPixelSize(R.dimen.notification_panel_width), getNotificationPanelHeight(), - WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, + WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM @@ -589,9 +593,9 @@ public class TabletStatusBar extends BaseStatusBar implements }); // tuning parameters - final int LIGHTS_GOING_OUT_SYSBAR_DURATION = 600; - final int LIGHTS_GOING_OUT_SHADOW_DURATION = 1000; - final int LIGHTS_GOING_OUT_SHADOW_DELAY = 500; + final int LIGHTS_GOING_OUT_SYSBAR_DURATION = 750; + final int LIGHTS_GOING_OUT_SHADOW_DURATION = 750; + final int LIGHTS_GOING_OUT_SHADOW_DELAY = 0; final int LIGHTS_COMING_UP_SYSBAR_DURATION = 200; // final int LIGHTS_COMING_UP_SYSBAR_DELAY = 50; @@ -636,7 +640,7 @@ public class TabletStatusBar extends BaseStatusBar implements WindowManager.LayoutParams lp = new WindowManager.LayoutParams( (int) mContext.getResources().getDimension(R.dimen.status_bar_recents_width), ViewGroup.LayoutParams.MATCH_PARENT, - WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, + WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH @@ -1713,9 +1717,12 @@ public class TabletStatusBar extends BaseStatusBar implements if (mInputMethodSwitchButton.getVisibility() != View.GONE) maxNotificationIconsCount --; if (mCompatModeButton.getVisibility() != View.GONE) maxNotificationIconsCount --; - for (int i=0; i< maxNotificationIconsCount; i++) { - if (i>=N) break; - toShow.add(mNotificationData.get(N-i-1).icon); + for (int i=0; toShow.size()< maxNotificationIconsCount; i++) { + if (i >= N) break; + Entry ent = mNotificationData.get(N-i-1); + if (ent.notification.score >= HIDE_ICONS_BELOW_SCORE) { + toShow.add(ent.icon); + } } ArrayList<View> toRemove = new ArrayList<View>(); @@ -1764,7 +1771,8 @@ public class TabletStatusBar extends BaseStatusBar implements for (int i=0; i<toShow.size(); i++) { View v = toShow.get(i); if (v.getParent() == null) { - mPile.addView(v, N-1-i); // the notification panel has newest at the bottom + // the notification panel has the most important things at the bottom + mPile.addView(v, N-1-i); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java index 754441c56b49..d4ebe6d1f2a6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java @@ -223,7 +223,7 @@ public class TabletTicker windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; } WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, mLargeIconHeight, - WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, windowFlags, + WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, windowFlags, PixelFormat.TRANSLUCENT); lp.gravity = Gravity.BOTTOM | Gravity.RIGHT; // lp.windowAnimations = com.android.internal.R.style.Animation_Toast; diff --git a/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java b/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java index c36e1481adb0..a13ccc242c96 100644 --- a/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java +++ b/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java @@ -19,33 +19,63 @@ package com.android.internal.policy.impl; import android.view.View; interface BiometricSensorUnlock { - // Returns 'true' if the biometric sensor has started its unlock procedure but has not yet - // accepted or rejected the user. + /** + * Initializes the view provided for the biometric unlock UI to work within. The provided area + * completely covers the backup unlock mechanism. The view is then displayed in the same manner + * as if {@link BiometricSensorUnlock#show(long)} was called with a timeout of 0. + * @param biometricUnlockView View provided for the biometric unlock UI. + */ + public void initializeView(View biometricUnlockView); + + /** + * Indicates whether the biometric unlock is running. Before + * {@link BiometricSensorUnlock#start} is called, isRunning() returns false. After a successful + * call to {@link BiometricSensorUnlock#start}, isRunning() returns true until the biometric + * unlock completes, {@link BiometricSensorUnlock#stop} has been called, or an error has + * forced the biometric unlock to stop. + * @return whether the biometric unlock is currently running. + */ public boolean isRunning(); - // Show the interface, but don't start the unlock procedure. The interface should disappear - // after the specified timeout. If the timeout is 0, the interface shows until another event, - // such as calling hide(), causes it to disappear. - // Called on the UI Thread + /** + * Covers the backup unlock mechanism by showing the contents of the view initialized in + * {@link BiometricSensorUnlock#initializeView(View)}. The view should disappear after the + * specified timeout. If the timeout is 0, the interface shows until another event, such as + * calling {@link BiometricSensorUnlock#hide()}, causes it to disappear. Called on the UI + * thread. + * @param timeoutMilliseconds Amount of time in milliseconds to display the view before + * disappearing. A value of 0 means the view should remain visible. + */ public void show(long timeoutMilliseconds); - // Hide the interface, if any, exposing the lockscreen. + /** + * Uncovers the backup unlock mechanism by hiding the contents of the view initialized in + * {@link BiometricSensorUnlock#initializeView(View)}. + */ public void hide(); - // Stop the unlock procedure if running. Returns 'true' if it was in fact running. - public boolean stop(); - - // Start the unlock procedure. Returns ‘false’ if it can’t be started or if the backup should - // be used. - // Called on the UI thread. - public boolean start(boolean suppressBiometricUnlock); + /** + * Binds to the biometric unlock service and starts the unlock procedure. Called on the UI + * thread. + * @return false if it can't be started or the backup should be used. + */ + public boolean start(); - // Provide a view to work within. - public void initializeAreaView(View topView); + /** + * Stops the biometric unlock procedure and unbinds from the service. Called on the UI thread. + * @return whether the biometric unlock was running when called. + */ + public boolean stop(); - // Clean up any resources used by the biometric unlock. + /** + * Cleans up any resources used by the biometric unlock. + */ public void cleanUp(); - // Returns the Device Policy Manager quality (e.g. PASSWORD_QUALITY_BIOMETRIC_WEAK). + /** + * Gets the Device Policy Manager quality of the biometric unlock sensor + * (e.g., PASSWORD_QUALITY_BIOMETRIC_WEAK). + * @return biometric unlock sensor quality, as defined by Device Policy Manager. + */ public int getQuality(); } diff --git a/policy/src/com/android/internal/policy/impl/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/FaceUnlock.java index ac86141fb413..6e09b7f62375 100644 --- a/policy/src/com/android/internal/policy/impl/FaceUnlock.java +++ b/policy/src/com/android/internal/policy/impl/FaceUnlock.java @@ -40,34 +40,49 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { private static final String TAG = "FULLockscreen"; private final Context mContext; + private final LockPatternUtils mLockPatternUtils; private final KeyguardUpdateMonitor mUpdateMonitor; + // TODO: is mServiceRunning needed or can we just use mIsRunning or check if mService is null? + private boolean mServiceRunning = false; + // TODO: now that the code has been restructure to do almost all operations from a handler, this + // lock may no longer be necessary. + private final Object mServiceRunningLock = new Object(); private IFaceLockInterface mService; private boolean mBoundToService = false; - private View mAreaView; + private View mFaceUnlockView; private Handler mHandler; - private final int MSG_SHOW_AREA_VIEW = 0; - private final int MSG_HIDE_AREA_VIEW = 1; - - private boolean mServiceRunning = false; - private final Object mServiceRunningLock = new Object(); + private final int MSG_SHOW_FACE_UNLOCK_VIEW = 0; + private final int MSG_HIDE_FACE_UNLOCK_VIEW = 1; + private final int MSG_SERVICE_CONNECTED = 2; + private final int MSG_SERVICE_DISCONNECTED = 3; + private final int MSG_UNLOCK = 4; + private final int MSG_CANCEL = 5; + private final int MSG_REPORT_FAILED_ATTEMPT = 6; + private final int MSG_EXPOSE_FALLBACK = 7; + private final int MSG_POKE_WAKELOCK = 8; + + // TODO: This was added for the purpose of adhering to what the biometric interface expects + // the isRunning() function to return. However, it is probably not necessary to have both + // mRunning and mServiceRunning. I'd just rather wait to change that logic. + private volatile boolean mIsRunning = false; // Long enough to stay visible while the service starts // Short enough to not have to wait long for backup if service fails to start or crashes // The service can take a couple of seconds to start on the first try after boot - private final int VIEW_AREA_SERVICE_TIMEOUT = 3000; + private final int SERVICE_STARTUP_VIEW_TIMEOUT = 3000; - // So the user has a consistent amount of time when brought to the backup method from FaceLock + // So the user has a consistent amount of time when brought to the backup method from Face + // Unlock private final int BACKUP_LOCK_TIMEOUT = 5000; - /** - * Used to lookup the state of the lock pattern - */ - private final LockPatternUtils mLockPatternUtils; - KeyguardScreenCallback mKeyguardScreenCallback; + /** + * Stores some of the structures that Face Unlock will need to access and creates the handler + * will be used to execute messages on the UI thread. + */ public FaceUnlock(Context context, KeyguardUpdateMonitor updateMonitor, LockPatternUtils lockPatternUtils, KeyguardScreenCallback keyguardScreenCallback) { mContext = context; @@ -77,102 +92,120 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { mHandler = new Handler(this); } + /** + * Stores and displays the view that Face Unlock is allowed to draw within. + * TODO: since the layout object will eventually be shared by multiple biometric unlock + * methods, we will have to add our other views (background, cancel button) here. + */ + public void initializeView(View biometricUnlockView) { + Log.d(TAG, "initializeView()"); + mFaceUnlockView = biometricUnlockView; + show(0); + } + + /** + * Indicates whether Face Unlock is currently running. + */ public boolean isRunning() { - return mServiceRunning; + return mIsRunning; } - // Shows the FaceLock area for a period of time - // Called on the UI thread + /** + * Sets the Face Unlock view to visible, hiding it after the specified amount of time. If + * timeoutMillis is 0, no hide is performed. + */ public void show(long timeoutMillis) { - removeAreaDisplayMessages(); - showArea(); - if (timeoutMillis > 0) - mHandler.sendEmptyMessageDelayed(MSG_HIDE_AREA_VIEW, timeoutMillis); + if (DEBUG) Log.d(TAG, "show()"); + removeDisplayMessages(); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.VISIBLE); + } + if (timeoutMillis > 0) { + mHandler.sendEmptyMessageDelayed(MSG_HIDE_FACE_UNLOCK_VIEW, timeoutMillis); + } } - // Hides the FaceLock area immediately + /** + * Hides the Face Unlock view. + */ public void hide() { + if (DEBUG) Log.d(TAG, "hide()"); // Remove messages to prevent a delayed show message from undo-ing the hide - removeAreaDisplayMessages(); - mHandler.sendEmptyMessage(MSG_HIDE_AREA_VIEW); + removeDisplayMessages(); + mHandler.sendEmptyMessage(MSG_HIDE_FACE_UNLOCK_VIEW); + } + + /** + * Binds to the Face Unlock service. Face Unlock will be started when the bind completes. The + * Face Unlock view is displayed to hide the backup lock while the service is starting up. + */ + public boolean start() { + if (DEBUG) Log.d(TAG, "start()"); + if (mIsRunning) { + Log.w(TAG, "start() called when already running"); + } + + // Show Face Unlock view, but only for a little bit so lockpattern will become visible if + // Face Unlock fails to start or crashes + // This must show before bind to guarantee that Face Unlock has a place to display + show(SERVICE_STARTUP_VIEW_TIMEOUT); + if (!mBoundToService) { + Log.d(TAG, "Binding to Face Unlock service"); + mContext.bindService(new Intent(IFaceLockInterface.class.getName()), + mConnection, + Context.BIND_AUTO_CREATE, + mLockPatternUtils.getCurrentUser()); + mBoundToService = true; + } else { + Log.w(TAG, "Attempt to bind to Face Unlock when already bound"); + } + + // When switching between portrait and landscape view while Face Unlock is running, the + // screen will eventually go dark unless we poke the wakelock when Face Unlock is + // restarted + mKeyguardScreenCallback.pokeWakelock(); + + mIsRunning = true; + return true; } - // Tells FaceLock to stop and then unbinds from the FaceLock service + /** + * Stops Face Unlock and unbinds from the service. + */ public boolean stop() { - boolean wasRunning = false; + if (DEBUG) Log.d(TAG, "stop()"); + boolean mWasRunning = mIsRunning; stopUi(); if (mBoundToService) { - wasRunning = true; - if (DEBUG) Log.d(TAG, "before unbind from FaceLock service"); if (mService != null) { try { - mService.unregisterCallback(mFaceLockCallback); + mService.unregisterCallback(mFaceUnlockCallback); } catch (RemoteException e) { // Not much we can do } } + Log.d(TAG, "Unbinding from Face Unlock service"); mContext.unbindService(mConnection); - if (DEBUG) Log.d(TAG, "after unbind from FaceLock service"); mBoundToService = false; } else { // This is usually not an error when this happens. Sometimes we will tell it to // unbind multiple times because it's called from both onWindowFocusChanged and // onDetachedFromWindow. - if (DEBUG) Log.d(TAG, "Attempt to unbind from FaceLock when not bound"); + if (DEBUG) Log.d(TAG, "Attempt to unbind from Face Unlock when not bound"); } - - return wasRunning; + mIsRunning = false; + return mWasRunning; } /** - * When screen is turned on and focused, need to bind to FaceLock service if we are using - * FaceLock, but only if we're not dealing with a call - * Called on the UI thread + * Frees up resources used by Face Unlock and stops it if it is still running. */ - public boolean start(boolean suppressBiometricUnlock) { - final boolean tooManyFaceUnlockTries = mUpdateMonitor.getMaxFaceUnlockAttemptsReached(); - final int failedBackupAttempts = mUpdateMonitor.getFailedAttempts(); - final boolean backupIsTimedOut = - (failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT); - if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries); - if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE - && !suppressBiometricUnlock - && !tooManyFaceUnlockTries - && !backupIsTimedOut) { - // Show FaceLock area, but only for a little bit so lockpattern will become visible if - // FaceLock fails to start or crashes - // This must show before bind to guarantee that Face Unlock has a place to display - show(VIEW_AREA_SERVICE_TIMEOUT); - - bind(); - - // When switching between portrait and landscape view while FaceLock is running, the - // screen will eventually go dark unless we poke the wakelock when FaceLock is - // restarted - mKeyguardScreenCallback.pokeWakelock(); - } else { - hide(); - return false; - } - - return true; - } - - // Takes care of FaceLock area when layout is created - public void initializeAreaView(View topView) { - mAreaView = topView.findViewById(R.id.faceLockAreaView); - if (mAreaView == null) { - Log.e(TAG, "Layout does not have areaView and FaceLock is enabled"); - } else { - show(0); - } - } - public void cleanUp() { + if (DEBUG) Log.d(TAG, "cleanUp()"); if (mService != null) { try { - mService.unregisterCallback(mFaceLockCallback); + mService.unregisterCallback(mFaceUnlockCallback); } catch (RemoteException e) { // Not much we can do } @@ -181,184 +214,324 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { } } + /** + * Returns the Device Policy Manager quality for Face Unlock, which is BIOMETRIC_WEAK. + */ public int getQuality() { return DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK; } - // Shows the FaceLock area - // Called on the UI thread - private void showArea() { - if (mAreaView != null) { - mAreaView.setVisibility(View.VISIBLE); - } - } - - // Handles covering or exposing FaceLock area on the client side when FaceLock starts or stops - // This needs to be done in a handler because the call could be coming from a callback from the - // FaceLock service that is in a thread that can't modify the UI + /** + * Handles messages such that everything happens on the UI thread in a deterministic order. + * Calls from the Face Unlock service come from binder threads. Calls from lockscreen typically + * come from the UI thread. This makes sure there are no race conditions between those calls. + */ @Override public boolean handleMessage(Message msg) { switch (msg.what) { - case MSG_SHOW_AREA_VIEW: - showArea(); - break; - case MSG_HIDE_AREA_VIEW: - if (mAreaView != null) { - mAreaView.setVisibility(View.INVISIBLE); - } - break; - default: - Log.w(TAG, "Unhandled message"); - return false; + case MSG_SHOW_FACE_UNLOCK_VIEW: + handleShowFaceUnlockView(); + break; + case MSG_HIDE_FACE_UNLOCK_VIEW: + handleHideFaceUnlockView(); + break; + case MSG_SERVICE_CONNECTED: + handleServiceConnected(); + break; + case MSG_SERVICE_DISCONNECTED: + handleServiceDisconnected(); + break; + case MSG_UNLOCK: + handleUnlock(); + break; + case MSG_CANCEL: + handleCancel(); + break; + case MSG_REPORT_FAILED_ATTEMPT: + handleReportFailedAttempt(); + break; + case MSG_EXPOSE_FALLBACK: + handleExposeFallback(); + break; + case MSG_POKE_WAKELOCK: + handlePokeWakelock(); + break; + default: + Log.e(TAG, "Unhandled message"); + return false; } return true; } - // Removes show and hide messages from the message queue - private void removeAreaDisplayMessages() { - mHandler.removeMessages(MSG_SHOW_AREA_VIEW); - mHandler.removeMessages(MSG_HIDE_AREA_VIEW); + /** + * Sets the Face Unlock view to visible, thus covering the backup lock. + */ + void handleShowFaceUnlockView() { + if (DEBUG) Log.d(TAG, "handleShowFaceUnlockView()"); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.VISIBLE); + } else { + Log.e(TAG, "mFaceUnlockView is null in handleShowFaceUnlockView()"); + } } - // Binds to FaceLock service. This call does not tell it to start, but it causes the service - // to call the onServiceConnected callback, which then starts FaceLock. - private void bind() { - if (!mBoundToService) { - if (DEBUG) Log.d(TAG, "before bind to FaceLock service"); - mContext.bindService(new Intent(IFaceLockInterface.class.getName()), - mConnection, - Context.BIND_AUTO_CREATE, - mLockPatternUtils.getCurrentUser()); - if (DEBUG) Log.d(TAG, "after bind to FaceLock service"); - mBoundToService = true; + /** + * Sets the Face Unlock view to invisible, thus exposing the backup lock. + */ + void handleHideFaceUnlockView() { + if (DEBUG) Log.d(TAG, "handleHideFaceUnlockView()"); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.INVISIBLE); } else { - Log.w(TAG, "Attempt to bind to FaceLock when already bound"); + Log.e(TAG, "mFaceUnlockView is null in handleHideFaceUnlockView()"); } } - private ServiceConnection mConnection = new ServiceConnection() { - // Completes connection, registers callback and starts FaceLock when service is bound - @Override - public void onServiceConnected(ComponentName className, IBinder iservice) { - mService = IFaceLockInterface.Stub.asInterface(iservice); - if (DEBUG) Log.d(TAG, "Connected to FaceLock service"); - try { - mService.registerCallback(mFaceLockCallback); - } catch (RemoteException e) { - Log.e(TAG, "Caught exception connecting to FaceLock: " + e.toString()); - mService = null; - mBoundToService = false; - return; - } + /** + * Tells the service to start its UI via an AIDL interface. Called when the + * onServiceConnected() callback is received. + */ + void handleServiceConnected() { + if (DEBUG) Log.d(TAG, "handleServiceConnected()"); + try { + mService.registerCallback(mFaceUnlockCallback); + } catch (RemoteException e) { + Log.e(TAG, "Caught exception connecting to Face Unlock: " + e.toString()); + mService = null; + mBoundToService = false; + mIsRunning = false; + return; + } - if (mAreaView != null) { + if (mFaceUnlockView != null) { + IBinder windowToken = mFaceUnlockView.getWindowToken(); + if (windowToken != null) { int[] position; position = new int[2]; - mAreaView.getLocationInWindow(position); - startUi(mAreaView.getWindowToken(), position[0], position[1], - mAreaView.getWidth(), mAreaView.getHeight()); + mFaceUnlockView.getLocationInWindow(position); + startUi(windowToken, position[0], position[1], mFaceUnlockView.getWidth(), + mFaceUnlockView.getHeight()); + } else { + Log.e(TAG, "windowToken is null in handleServiceConnected()"); } } + } + + /** + * Called when the onServiceDisconnected() callback is received. This should not happen during + * normal operation. It indicates an error has occurred. + */ + void handleServiceDisconnected() { + Log.e(TAG, "handleServiceDisconnected()"); + // TODO: this lock may no longer be needed now that everything is being called from a + // handler + synchronized (mServiceRunningLock) { + mService = null; + mServiceRunning = false; + } + mBoundToService = false; + mIsRunning = false; + } + + /** + * Stops the Face Unlock service and tells the device to grant access to the user. Shows the + * Face Unlock view to keep the backup lock covered while the device unlocks. + */ + void handleUnlock() { + if (DEBUG) Log.d(TAG, "handleUnlock()"); + removeDisplayMessages(); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.VISIBLE); + } else { + Log.e(TAG, "mFaceUnlockView is null in handleUnlock()"); + } + stop(); + mKeyguardScreenCallback.keyguardDone(true); + mKeyguardScreenCallback.reportSuccessfulUnlockAttempt(); + } + + /** + * Stops the Face Unlock service and exposes the backup lock. Called when the user presses the + * cancel button to skip Face Unlock or no face is detected. + */ + void handleCancel() { + if (DEBUG) Log.d(TAG, "handleCancel()"); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.INVISIBLE); + } else { + Log.e(TAG, "mFaceUnlockView is null in handleCancel()"); + } + stop(); + mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT); + } + + /** + * Stops the Face Unlock service and exposes the backup lock, reporting a failed unlock attempt. + * Called when Face Unlock denies access to the user. + */ + void handleReportFailedAttempt() { + if (DEBUG) Log.d(TAG, "handleReportFailedAttempt()"); + mUpdateMonitor.reportFailedBiometricUnlockAttempt(); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.INVISIBLE); + } else { + Log.e(TAG, "mFaceUnlockView is null in handleReportFailedAttempt()"); + } + stop(); + mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT); + } + + /** + * Hides the Face Unlock view to expose the backup lock. Called when the Face Unlock service UI + * is started, indicating there is no need to continue displaying the underlying view because + * the service UI is now covering the backup lock. + */ + void handleExposeFallback() { + if (DEBUG) Log.d(TAG, "handleExposeFallback()"); + if (mFaceUnlockView != null) { + mFaceUnlockView.setVisibility(View.INVISIBLE); + } else { + Log.e(TAG, "mFaceUnlockView is null in handleExposeFallback()"); + } + } - // Cleans up if FaceLock service unexpectedly disconnects + /** + * Pokes the wakelock to keep the screen alive and active. + */ + void handlePokeWakelock() { + mKeyguardScreenCallback.pokeWakelock(); + } + + /** + * Removes show and hide messages from the message queue. Called to prevent delayed show/hide + * messages from undoing a new message. + */ + private void removeDisplayMessages() { + mHandler.removeMessages(MSG_SHOW_FACE_UNLOCK_VIEW); + mHandler.removeMessages(MSG_HIDE_FACE_UNLOCK_VIEW); + } + + /** + * Implements service connection methods. + */ + private ServiceConnection mConnection = new ServiceConnection() { + /** + * Called when the Face Unlock service connects after calling bind(). + */ + @Override + public void onServiceConnected(ComponentName className, IBinder iservice) { + Log.d(TAG, "Connected to Face Unlock service"); + mService = IFaceLockInterface.Stub.asInterface(iservice); + mHandler.sendEmptyMessage(MSG_SERVICE_CONNECTED); + } + + /** + * Called if the Face Unlock service unexpectedly disconnects. This indicates an error. + */ @Override public void onServiceDisconnected(ComponentName className) { - synchronized(mServiceRunningLock) { - mService = null; - mServiceRunning = false; - } - mBoundToService = false; - Log.w(TAG, "Unexpected disconnect from FaceLock service"); + Log.e(TAG, "Unexpected disconnect from Face Unlock service"); + mHandler.sendEmptyMessage(MSG_SERVICE_DISCONNECTED); } }; - // Tells the FaceLock service to start displaying its UI and perform recognition + /** + * Tells the Face Unlock service to start displaying its UI and start processing. + */ private void startUi(IBinder windowToken, int x, int y, int w, int h) { + if (DEBUG) Log.d(TAG, "startUi()"); synchronized (mServiceRunningLock) { if (!mServiceRunning) { - if (DEBUG) Log.d(TAG, "Starting FaceLock"); + if (DEBUG) Log.d(TAG, "Starting Face Unlock"); try { mService.startUi(windowToken, x, y, w, h, mLockPatternUtils.isBiometricWeakLivelinessEnabled()); } catch (RemoteException e) { - Log.e(TAG, "Caught exception starting FaceLock: " + e.toString()); + Log.e(TAG, "Caught exception starting Face Unlock: " + e.toString()); return; } mServiceRunning = true; } else { - if (DEBUG) Log.w(TAG, "startUi() attempted while running"); + Log.w(TAG, "startUi() attempted while running"); } } } - // Tells the FaceLock service to stop displaying its UI and stop recognition + /** + * Tells the Face Unlock service to stop displaying its UI and stop processing. + */ private void stopUi() { - // Note that attempting to stop FaceLock when it's not running is not an issue. - // FaceLock can return, which stops it and then we try to stop it when the + if (DEBUG) Log.d(TAG, "stopUi()"); + // Note that attempting to stop Face Unlock when it's not running is not an issue. + // Face Unlock can return, which stops it and then we try to stop it when the // screen is turned off. That's why we check. synchronized (mServiceRunningLock) { if (mServiceRunning) { + if (DEBUG) Log.d(TAG, "Stopping Face Unlock"); try { - if (DEBUG) Log.d(TAG, "Stopping FaceLock"); mService.stopUi(); } catch (RemoteException e) { - Log.e(TAG, "Caught exception stopping FaceLock: " + e.toString()); + Log.e(TAG, "Caught exception stopping Face Unlock: " + e.toString()); } mServiceRunning = false; + } else { + // This is usually not an error when this happens. Sometimes we will tell it to + // stop multiple times because it's called from both onWindowFocusChanged and + // onDetachedFromWindow. + if (DEBUG) Log.d(TAG, "stopUi() attempted while not running"); } } } - // Implements the FaceLock service callback interface defined in AIDL - private final IFaceLockCallback mFaceLockCallback = new IFaceLockCallback.Stub() { - // Stops the FaceLock UI and indicates that the phone should be unlocked + /** + * Implements the AIDL biometric unlock service callback interface. + */ + private final IFaceLockCallback mFaceUnlockCallback = new IFaceLockCallback.Stub() { + /** + * Called when Face Unlock wants to grant access to the user. + */ @Override public void unlock() { - if (DEBUG) Log.d(TAG, "FaceLock unlock()"); - - // Keep fallback covered - removeAreaDisplayMessages(); - mHandler.sendEmptyMessage(MSG_SHOW_AREA_VIEW); - - stop(); - - mKeyguardScreenCallback.keyguardDone(true); - mKeyguardScreenCallback.reportSuccessfulUnlockAttempt(); + if (DEBUG) Log.d(TAG, "unlock()"); + mHandler.sendEmptyMessage(MSG_UNLOCK); } - // Stops the FaceLock UI and exposes the backup method without unlocking - // This means the user has cancelled out + /** + * Called when the user presses cancel to skip Face Unlock or a face cannot be found. + */ @Override public void cancel() { - if (DEBUG) Log.d(TAG, "FaceLock cancel()"); - hide(); // Expose fallback - stop(); - mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT); + if (DEBUG) Log.d(TAG, "cancel()"); + mHandler.sendEmptyMessage(MSG_CANCEL); } - // Stops the FaceLock UI and exposes the backup method without unlocking - // This means FaceLock failed to recognize them + /** + * Called when Face Unlock denies access to the user. + */ @Override public void reportFailedAttempt() { - if (DEBUG) Log.d(TAG, "FaceLock reportFailedAttempt()"); - mUpdateMonitor.reportFailedFaceUnlockAttempt(); - hide(); // Expose fallback - stop(); - mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT); + if (DEBUG) Log.d(TAG, "reportFailedAttempt()"); + mHandler.sendEmptyMessage(MSG_REPORT_FAILED_ATTEMPT); } - // Removes the black area that covers the backup unlock method + /** + * Called when the Face Unlock service starts displaying the UI, indicating that the backup + * unlock can be exposed because the Face Unlock service is now covering the backup with its + * UI. + **/ @Override public void exposeFallback() { - if (DEBUG) Log.d(TAG, "FaceLock exposeFallback()"); - hide(); // Expose fallback + if (DEBUG) Log.d(TAG, "exposeFallback()"); + mHandler.sendEmptyMessage(MSG_EXPOSE_FALLBACK); } - // Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive + /** + * Called when Face Unlock wants to keep the screen alive and active. + */ @Override public void pokeWakelock() { - if (DEBUG) Log.d(TAG, "FaceLock pokeWakelock()"); - mKeyguardScreenCallback.pokeWakelock(); + if (DEBUG) Log.d(TAG, "pokeWakelock()"); + mHandler.sendEmptyMessage(MSG_POKE_WAKELOCK); } }; } diff --git a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java index 25af2e6f944b..d0fe42d74dfa 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java @@ -303,8 +303,10 @@ class KeyguardStatusViewManager implements OnClickListener { mUpdateMonitor.registerInfoCallback(mInfoCallback); mUpdateMonitor.registerSimStateCallback(mSimStateCallback); resetStatusInfo(); - //Issue the faceunlock failure message in a centralized place - if (mUpdateMonitor.getMaxFaceUnlockAttemptsReached()) { + // Issue the biometric unlock failure message in a centralized place + // TODO: we either need to make the Face Unlock multiple failures string a more general + // 'biometric unlock' or have each biometric unlock handle this on their own. + if (mUpdateMonitor.getMaxBiometricUnlockAttemptsReached()) { setInstructionText(getContext().getString(R.string.faceunlock_multiple_failures)); } } @@ -507,7 +509,8 @@ class KeyguardStatusViewManager implements OnClickListener { break; case SimPermDisabled: - carrierText = getContext().getText(R.string.lockscreen_missing_sim_message_short); + carrierText = getContext().getText( + R.string.lockscreen_permanent_disabled_sim_message_short); carrierHelpTextId = R.string.lockscreen_permanent_disabled_sim_instructions; mEmergencyButtonEnabledBecauseSimLocked = true; break; diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java index a4723751d74c..7238fdf2e999 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java @@ -72,8 +72,6 @@ public class KeyguardUpdateMonitor { private IccCard.State mSimState = IccCard.State.READY; - private boolean mKeyguardBypassEnabled; - private boolean mDeviceProvisioned; private BatteryStatus mBatteryStatus; @@ -82,8 +80,8 @@ public class KeyguardUpdateMonitor { private CharSequence mTelephonySpn; private int mFailedAttempts = 0; - private int mFailedFaceUnlockAttempts = 0; - private static final int FAILED_FACE_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 15; + private int mFailedBiometricUnlockAttempts = 0; + private static final int FAILED_BIOMETRIC_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 15; private boolean mClockVisible; @@ -217,9 +215,6 @@ public class KeyguardUpdateMonitor { } }; - mKeyguardBypassEnabled = context.getResources().getBoolean( - com.android.internal.R.bool.config_bypass_keyguard_if_slider_open); - mDeviceProvisioned = Settings.Secure.getInt( mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0; @@ -660,10 +655,6 @@ public class KeyguardUpdateMonitor { handleSimStateChange(new SimArgs(IccCard.State.READY)); } - public boolean isKeyguardBypassEnabled() { - return mKeyguardBypassEnabled; - } - public boolean isDevicePluggedIn() { return isPluggedIn(mBatteryStatus); } @@ -703,7 +694,7 @@ public class KeyguardUpdateMonitor { public void clearFailedAttempts() { mFailedAttempts = 0; - mFailedFaceUnlockAttempts = 0; + mFailedBiometricUnlockAttempts = 0; } public void reportFailedAttempt() { @@ -718,12 +709,12 @@ public class KeyguardUpdateMonitor { return mPhoneState; } - public void reportFailedFaceUnlockAttempt() { - mFailedFaceUnlockAttempts++; + public void reportFailedBiometricUnlockAttempt() { + mFailedBiometricUnlockAttempts++; } - public boolean getMaxFaceUnlockAttemptsReached() { - return mFailedFaceUnlockAttempts >= FAILED_FACE_UNLOCK_ATTEMPTS_BEFORE_BACKUP; + public boolean getMaxBiometricUnlockAttemptsReached() { + return mFailedBiometricUnlockAttempts >= FAILED_BIOMETRIC_UNLOCK_ATTEMPTS_BEFORE_BACKUP; } public boolean isSimLocked() { diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java b/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java index 39fdf92acb8d..5aa764b98090 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java @@ -24,12 +24,17 @@ import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.media.AudioManager; +import android.media.IAudioService; +import android.os.RemoteException; +import android.os.ServiceManager; import android.telephony.TelephonyManager; import android.view.KeyEvent; import android.view.View; import android.view.Gravity; import android.widget.FrameLayout; import android.util.AttributeSet; +import android.util.Log; +import android.util.Slog; /** * Base class for keyguard views. {@link #reset} is where you should @@ -194,9 +199,7 @@ public abstract class KeyguardViewBase extends FrameLayout { case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: { - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); - intent.putExtra(Intent.EXTRA_KEY_EVENT, event); - getContext().sendOrderedBroadcast(intent, null); + handleMediaKeyEvent(event); return true; } @@ -240,9 +243,7 @@ public abstract class KeyguardViewBase extends FrameLayout { case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: { - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); - intent.putExtra(Intent.EXTRA_KEY_EVENT, event); - getContext().sendOrderedBroadcast(intent, null); + handleMediaKeyEvent(event); return true; } } @@ -250,6 +251,20 @@ public abstract class KeyguardViewBase extends FrameLayout { return false; } + void handleMediaKeyEvent(KeyEvent keyEvent) { + IAudioService audioService = IAudioService.Stub.asInterface( + ServiceManager.checkService(Context.AUDIO_SERVICE)); + if (audioService != null) { + try { + audioService.dispatchMediaKeyEvent(keyEvent); + } catch (RemoteException e) { + Log.e("KeyguardViewBase", "dispatchMediaKeyEvent threw exception " + e); + } + } else { + Slog.w("KeyguardViewBase", "Unable to find IAudioService for media key event"); + } + } + @Override public void dispatchSystemUiVisibilityChanged(int visibility) { super.dispatchSystemUiVisibilityChanged(visibility); diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java index 5b9160d06a30..11a1cd629660 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -121,13 +121,6 @@ public class KeyguardViewMediator implements KeyguardViewCallback, */ protected static final int AWAKE_INTERVAL_DEFAULT_MS = 10000; - - /** - * The default amount of time we stay awake (used for all key input) when - * the keyboard is open - */ - protected static final int AWAKE_INTERVAL_DEFAULT_KEYBOARD_OPEN_MS = 10000; - /** * How long to wait after the screen turns off due to timeout before * turning on the keyguard (i.e, the user has this much time to turn @@ -149,11 +142,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private static final boolean ENABLE_INSECURE_STATUS_BAR_EXPAND = true; /** The stream type that the lock sounds are tied to. */ - private static final int MASTER_STREAM_TYPE = AudioManager.STREAM_RING; - /** Minimum volume for lock sounds, as a ratio of max MASTER_STREAM_TYPE */ - final float MIN_LOCK_VOLUME = 0.05f; - /** Maximum volume for lock sounds, as a ratio of max MASTER_STREAM_TYPE */ - final float MAX_LOCK_VOLUME = 0.4f; + private int mMasterStreamType; private Context mContext; private AlarmManager mAlarmManager; @@ -241,8 +230,6 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private KeyguardUpdateMonitor mUpdateMonitor; - private boolean mKeyboardOpen = false; - private boolean mScreenOn = false; // last known state of the cellular connection @@ -594,22 +581,6 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } /** - * Returns true if the change is resulting in the keyguard beign dismissed, - * meaning the screen can turn on immediately. Otherwise returns false. - */ - public boolean doLidChangeTq(boolean isLidOpen) { - mKeyboardOpen = isLidOpen; - - if (mUpdateMonitor.isKeyguardBypassEnabled() && mKeyboardOpen - && !mKeyguardViewProperties.isSecure() && mKeyguardViewManager.isShowing()) { - if (DEBUG) Log.d(TAG, "bypassing keyguard on sliding open of keyboard with non-secure keyguard"); - mHandler.sendEmptyMessage(KEYGUARD_DONE_AUTHENTICATING); - return true; - } - return false; - } - - /** * Enable the keyguard if the settings are appropriate. Return true if all * work that will happen is done; returns false if the caller can wait for * the keyguard to be shown. @@ -959,8 +930,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, /** {@inheritDoc} */ public void pokeWakelock() { - pokeWakelock(mKeyboardOpen ? - AWAKE_INTERVAL_DEFAULT_KEYBOARD_OPEN_MS : AWAKE_INTERVAL_DEFAULT_MS); + pokeWakelock(AWAKE_INTERVAL_DEFAULT_MS); } /** {@inheritDoc} */ @@ -1142,24 +1112,12 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (mAudioManager == null) { mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); if (mAudioManager == null) return; - mMasterStreamMaxVolume = mAudioManager.getStreamMaxVolume(MASTER_STREAM_TYPE); + mMasterStreamType = mAudioManager.getMasterStreamType(); } // If the stream is muted, don't play the sound - if (mAudioManager.isStreamMute(MASTER_STREAM_TYPE)) return; - - // Adjust the lock sound volume from a minimum of MIN_LOCK_VOLUME to a maximum - // of MAX_LOCK_VOLUME, relative to the maximum level of the MASTER_STREAM_TYPE volume. - float lockSoundVolume; - int masterStreamVolume = mAudioManager.getStreamVolume(MASTER_STREAM_TYPE); - if (masterStreamVolume == 0) { - return; - } else { - lockSoundVolume = MIN_LOCK_VOLUME + (MAX_LOCK_VOLUME - MIN_LOCK_VOLUME) - * ((float) masterStreamVolume / mMasterStreamMaxVolume); - } + if (mAudioManager.isStreamMute(mMasterStreamType)) return; - mLockSoundStreamId = mLockSounds.play(whichSound, lockSoundVolume, lockSoundVolume, 1, - 0, 1.0f); + mLockSoundStreamId = mLockSounds.play(whichSound, 1.0f, 1.0f, 1, 0, 1.0f); } } diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index 7e2985deb5dc..2408d7fbd1b6 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -117,6 +117,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase { private boolean mHasDialog = false; //True if this device is currently plugged in private boolean mPluggedIn; + // True the first time lockscreen is showing after boot + private static boolean sIsFirstAppearanceAfterBoot = true; // The music control widget private TransportControlView mTransportControlView; @@ -437,7 +439,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase { mUpdateMonitor = updateMonitor; mLockPatternUtils = lockPatternUtils; mWindowController = controller; - mSuppressBiometricUnlock = false; + mSuppressBiometricUnlock = sIsFirstAppearanceAfterBoot; + sIsFirstAppearanceAfterBoot = false; mPluggedIn = mUpdateMonitor.isDevicePluggedIn(); mScreenOn = ((PowerManager)context.getSystemService(Context.POWER_SERVICE)).isScreenOn(); @@ -580,7 +583,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { restoreWidgetState(); if (mBiometricUnlock != null && startBiometricUnlock) { - mBiometricUnlock.start(mSuppressBiometricUnlock); + maybeStartBiometricUnlock(); } } @@ -623,7 +626,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } else { mHasDialog = false; if (mBiometricUnlock != null && startBiometricUnlock) { - mBiometricUnlock.start(mSuppressBiometricUnlock); + maybeStartBiometricUnlock(); } } } @@ -855,7 +858,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } recreateUnlockScreen(unlockMode); if (mBiometricUnlock != null && restartBiometricUnlock) { - mBiometricUnlock.start(mSuppressBiometricUnlock); + maybeStartBiometricUnlock(); } } } @@ -971,7 +974,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase { initializeTransportControlView(unlockView); if (mBiometricUnlock != null) { - mBiometricUnlock.initializeAreaView(unlockView); + // TODO: make faceLockAreaView a more general biometricUnlockView + // We will need to add our Face Unlock specific child views programmatically in + // initializeView rather than having them in the XML files. + mBiometricUnlock.initializeView(unlockView.findViewById(R.id.faceLockAreaView)); } mUnlockScreenMode = unlockMode; @@ -1154,4 +1160,24 @@ public class LockPatternKeyguardView extends KeyguardViewBase { return mBitmap.getHeight(); } } + + /** + * Starts the biometric unlock if it should be started based on a number of factors including + * the mSuppressBiometricUnlock flag. If it should not be started, it hides the biometric + * unlock area. + */ + private void maybeStartBiometricUnlock() { + if (mBiometricUnlock != null) { + final boolean backupIsTimedOut = (mUpdateMonitor.getFailedAttempts() >= + LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT); + if (!mSuppressBiometricUnlock + && mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE + && !mUpdateMonitor.getMaxBiometricUnlockAttemptsReached() + && !backupIsTimedOut) { + mBiometricUnlock.start(); + } else { + mBiometricUnlock.hide(); + } + } + } } diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java index e8ba21da01b3..8b0d858823b3 100644 --- a/policy/src/com/android/internal/policy/impl/LockScreen.java +++ b/policy/src/com/android/internal/policy/impl/LockScreen.java @@ -29,6 +29,7 @@ import android.app.ActivityManager; import android.app.ActivityManagerNative; import android.app.SearchManager; import android.content.ActivityNotFoundException; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -38,8 +39,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.*; -import android.speech.RecognizerIntent; import android.util.Log; +import android.util.Slog; import android.media.AudioManager; import android.os.RemoteException; import android.provider.MediaStore; @@ -69,7 +70,6 @@ class LockScreen extends LinearLayout implements KeyguardScreen { private boolean mEnableRingSilenceFallback = false; // current configuration state of keyboard and display - private int mKeyboardHidden; private int mCreationOrientation; private boolean mSilentMode; @@ -81,6 +81,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen { private View mUnlockWidget; private boolean mCameraDisabled; private boolean mSearchDisabled; + private SearchManager mSearchManager; InfoCallbackImpl mInfoCallback = new InfoCallbackImpl() { @@ -238,6 +239,25 @@ class LockScreen extends LinearLayout implements KeyguardScreen { } } + private Intent getAssistIntent() { + Intent intent = null; + if (mSearchManager == null) { + mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE); + } + if (mSearchManager != null) { + ComponentName globalSearchActivity = mSearchManager.getGlobalSearchActivity(); + if (globalSearchActivity != null) { + intent = new Intent(Intent.ACTION_ASSIST); + intent.setPackage(globalSearchActivity.getPackageName()); + } else { + Slog.w(TAG, "No global search activity"); + } + } else { + Slog.w(TAG, "No SearchManager"); + } + return intent; + } + class MultiWaveViewMethods implements MultiWaveView.OnTriggerListener, UnlockWidgetCommonMethods { private final MultiWaveView mMultiWaveView; @@ -280,7 +300,12 @@ class LockScreen extends LinearLayout implements KeyguardScreen { final int resId = mMultiWaveView.getResourceIdForTarget(target); switch (resId) { case com.android.internal.R.drawable.ic_lockscreen_search: - launchActivity(new Intent(RecognizerIntent.ACTION_WEB_SEARCH)); + Intent assistIntent = getAssistIntent(); + if (assistIntent != null) { + launchActivity(assistIntent); + } else { + Log.w(TAG, "Failed to get intent for assist activity"); + } mCallback.pokeWakelock(); break; @@ -404,7 +429,6 @@ class LockScreen extends LinearLayout implements KeyguardScreen { mCallback = callback; mEnableMenuKeyInLockScreen = shouldEnableMenuKey(); mCreationOrientation = configuration.orientation; - mKeyboardHidden = configuration.hardKeyboardHidden; if (LockPatternKeyguardView.DEBUG_CONFIGURATION) { Log.v(TAG, "***** CREATING LOCK SCREEN", new RuntimeException()); @@ -506,12 +530,6 @@ class LockScreen extends LinearLayout implements KeyguardScreen { Configuration newConfig = getResources().getConfiguration(); if (newConfig.orientation != mCreationOrientation) { mCallback.recreateMe(newConfig); - } else if (newConfig.hardKeyboardHidden != mKeyboardHidden) { - mKeyboardHidden = newConfig.hardKeyboardHidden; - final boolean isKeyboardOpen = mKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO; - if (mUpdateMonitor.isKeyguardBypassEnabled() && isKeyboardOpen) { - mCallback.goToUnlockScreen(); - } } } diff --git a/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java b/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java index 83f77880836d..b88d84bee0fb 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java +++ b/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java @@ -23,8 +23,12 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.media.AudioManager; +import android.media.IAudioService; +import android.os.RemoteException; +import android.os.ServiceManager; import android.telephony.TelephonyManager; import android.util.EventLog; +import android.util.Log; import android.util.Slog; import android.view.View; import android.view.HapticFeedbackConstants; @@ -99,9 +103,7 @@ public class PhoneFallbackEventHandler implements FallbackEventHandler { case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: { - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); - intent.putExtra(Intent.EXTRA_KEY_EVENT, event); - mContext.sendOrderedBroadcast(intent, null); + handleMediaKeyEvent(event); return true; } @@ -213,9 +215,7 @@ public class PhoneFallbackEventHandler implements FallbackEventHandler { case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: { - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); - intent.putExtra(Intent.EXTRA_KEY_EVENT, event); - mContext.sendOrderedBroadcast(intent, null); + handleMediaKeyEvent(event); return true; } @@ -285,5 +285,19 @@ public class PhoneFallbackEventHandler implements FallbackEventHandler { void sendCloseSystemWindows() { PhoneWindowManager.sendCloseSystemWindows(mContext, null); } + + private void handleMediaKeyEvent(KeyEvent keyEvent) { + IAudioService audioService = IAudioService.Stub.asInterface( + ServiceManager.checkService(Context.AUDIO_SERVICE)); + if (audioService != null) { + try { + audioService.dispatchMediaKeyEvent(keyEvent); + } catch (RemoteException e) { + Log.e(TAG, "dispatchMediaKeyEvent threw exception " + e); + } + } else { + Slog.w(TAG, "Unable to find IAudioService for media key event."); + } + } } diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index c3c49b0a5216..4b914227c8f3 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -2108,8 +2108,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { w = 0; } - final int widthSize = MeasureSpec.getSize(widthMeasureSpec); - widthMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(w, widthSize), EXACTLY); + if (w > 0) { + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + widthMeasureSpec = MeasureSpec.makeMeasureSpec( + Math.min(w, widthSize), EXACTLY); + } } } @@ -2125,9 +2128,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { h = 0; } - final int heightSize = MeasureSpec.getSize(heightMeasureSpec); - heightMeasureSpec = - MeasureSpec.makeMeasureSpec(Math.min(h, heightSize), EXACTLY); + if (h > 0) { + final int heightSize = MeasureSpec.getSize(heightMeasureSpec); + heightMeasureSpec = MeasureSpec.makeMeasureSpec( + Math.min(h, heightSize), EXACTLY); + } } } diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 96eaa2812a8f..b3ca171076b1 100755 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -38,6 +38,7 @@ import android.database.ContentObserver; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.RectF; +import android.hardware.input.InputManager; import android.media.AudioManager; import android.media.IAudioService; import android.os.BatteryManager; @@ -323,6 +324,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { volatile boolean mPowerKeyHandled; // accessed from input reader and handler thread boolean mPendingPowerKeyUpCanceled; Handler mHandler; + WindowState mLastInputMethodWindow = null; + WindowState mLastInputMethodTargetWindow = null; static final int RECENT_APPS_BEHAVIOR_SHOW_OR_DISMISS = 0; static final int RECENT_APPS_BEHAVIOR_EXIT_TOUCH_MODE_AND_SHOW = 1; @@ -332,6 +335,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mRecentAppsDialogHeldModifiers; int mLidState = LID_ABSENT; + boolean mHaveBuiltInKeyboard; boolean mSystemReady; boolean mSystemBooted; @@ -353,6 +357,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mDeskDockEnablesAccelerometer; int mLidKeyboardAccessibility; int mLidNavigationAccessibility; + boolean mLidControlsSleep; int mLongPressOnPowerBehavior = -1; boolean mScreenOnEarly = false; boolean mScreenOnFully = false; @@ -407,6 +412,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { // that area of the display from all other windows. int mRestrictedScreenLeft, mRestrictedScreenTop; int mRestrictedScreenWidth, mRestrictedScreenHeight; + // During layout, the current screen borders accounting for any currently + // visible system UI elements. + int mSystemLeft, mSystemTop, mSystemRight, mSystemBottom; // For applications requesting stable content insets, these are them. int mStableLeft, mStableTop, mStableRight, mStableBottom; // During layout, the current screen borders with all outer decoration @@ -423,6 +431,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mDockLeft, mDockTop, mDockRight, mDockBottom; // During layout, the layer at which the doc window is placed. int mDockLayer; + // During layout, this is the layer of the status bar. + int mStatusBarLayer; int mLastSystemUiFlags; // Bits that we are in the process of clearing, so we want to prevent // them from being set by applications until everything has been updated @@ -438,6 +448,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final Rect mTmpParentFrame = new Rect(); static final Rect mTmpDisplayFrame = new Rect(); + static final Rect mTmpSystemFrame = new Rect(); static final Rect mTmpContentFrame = new Rect(); static final Rect mTmpVisibleFrame = new Rect(); static final Rect mTmpNavigationFrame = new Rect(); @@ -891,6 +902,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_lidKeyboardAccessibility); mLidNavigationAccessibility = mContext.getResources().getInteger( com.android.internal.R.integer.config_lidNavigationAccessibility); + mLidControlsSleep = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_lidControlsSleep); // register for dock events IntentFilter filter = new IntentFilter(); filter.addAction(UiModeManager.ACTION_ENTER_CAR_MODE); @@ -977,16 +990,21 @@ public class PhoneWindowManager implements WindowManagerPolicy { mStatusBarHeight = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); - mNavigationBarHeightForRotation[Surface.ROTATION_0] = - mNavigationBarHeightForRotation[Surface.ROTATION_90] = - mNavigationBarHeightForRotation[Surface.ROTATION_180] = - mNavigationBarHeightForRotation[Surface.ROTATION_270] = + // Height of the navigation bar when presented horizontally at bottom + mNavigationBarHeightForRotation[mPortraitRotation] = + mNavigationBarHeightForRotation[mUpsideDownRotation] = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_height); - mNavigationBarWidthForRotation[Surface.ROTATION_0] = - mNavigationBarWidthForRotation[Surface.ROTATION_90] = - mNavigationBarWidthForRotation[Surface.ROTATION_180] = - mNavigationBarWidthForRotation[Surface.ROTATION_270] = + mNavigationBarHeightForRotation[mLandscapeRotation] = + mNavigationBarHeightForRotation[mSeascapeRotation] = + mContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.navigation_bar_height_landscape); + + // Width of the navigation bar when presented vertically along one side + mNavigationBarWidthForRotation[mPortraitRotation] = + mNavigationBarWidthForRotation[mUpsideDownRotation] = + mNavigationBarWidthForRotation[mLandscapeRotation] = + mNavigationBarWidthForRotation[mSeascapeRotation] = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_width); @@ -1251,41 +1269,42 @@ public class PhoneWindowManager implements WindowManagerPolicy { mLidState = mWindowManagerFuncs.getLidState(); } - private int determineHiddenState(int mode, int hiddenValue, int visibleValue) { - if (mLidState != LID_ABSENT) { - switch (mode) { - case 1: - return mLidState == LID_OPEN ? visibleValue : hiddenValue; - case 2: - return mLidState == LID_OPEN ? hiddenValue : visibleValue; - } + private boolean isHidden(int accessibilityMode) { + switch (accessibilityMode) { + case 1: + return mLidState == LID_CLOSED; + case 2: + return mLidState == LID_OPEN; + default: + return false; } - return visibleValue; + } + + private boolean isBuiltInKeyboardVisible() { + return mHaveBuiltInKeyboard && !isHidden(mLidKeyboardAccessibility); } /** {@inheritDoc} */ - public void adjustConfigurationLw(Configuration config) { + public void adjustConfigurationLw(Configuration config, int keyboardPresence, + int navigationPresence) { + mHaveBuiltInKeyboard = (keyboardPresence & PRESENCE_INTERNAL) != 0; + readLidState(); - updateKeyboardVisibility(); + applyLidSwitchState(); - if (config.keyboard == Configuration.KEYBOARD_NOKEYS) { + if (config.keyboard == Configuration.KEYBOARD_NOKEYS + || (keyboardPresence == PRESENCE_INTERNAL + && isHidden(mLidKeyboardAccessibility))) { config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES; - } else { - config.hardKeyboardHidden = determineHiddenState(mLidKeyboardAccessibility, - Configuration.HARDKEYBOARDHIDDEN_YES, Configuration.HARDKEYBOARDHIDDEN_NO); + if (!mHasSoftInput) { + config.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES; + } } - if (config.navigation == Configuration.NAVIGATION_NONAV) { + if (config.navigation == Configuration.NAVIGATION_NONAV + || (navigationPresence == PRESENCE_INTERNAL + && isHidden(mLidNavigationAccessibility))) { config.navigationHidden = Configuration.NAVIGATIONHIDDEN_YES; - } else { - config.navigationHidden = determineHiddenState(mLidNavigationAccessibility, - Configuration.NAVIGATIONHIDDEN_YES, Configuration.NAVIGATIONHIDDEN_NO); - } - - if (mHasSoftInput || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { - config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO; - } else { - config.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES; } } @@ -2163,11 +2182,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { mRestrictedScreenLeft = mRestrictedScreenTop = 0; mRestrictedScreenWidth = displayWidth; mRestrictedScreenHeight = displayHeight; - mDockLeft = mContentLeft = mStableLeft = mCurLeft = 0; - mDockTop = mContentTop = mStableTop = mCurTop = 0; - mDockRight = mContentRight = mStableRight = mCurRight = displayWidth; - mDockBottom = mContentBottom = mStableBottom = mCurBottom = displayHeight; + mDockLeft = mContentLeft = mStableLeft = mSystemLeft = mCurLeft = 0; + mDockTop = mContentTop = mStableTop = mSystemTop = mCurTop = 0; + mDockRight = mContentRight = mStableRight = mSystemRight = mCurRight = displayWidth; + mDockBottom = mContentBottom = mStableBottom = mSystemBottom = mCurBottom = displayHeight; mDockLayer = 0x10000000; + mStatusBarLayer = -1; // start with the current dock rect, which will be (0,0,displayWidth,displayHeight) final Rect pf = mTmpParentFrame; @@ -2227,6 +2247,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { // We currently want to hide the navigation UI. mNavigationBar.hideLw(true); } + if (navVisible && !mNavigationBar.isAnimatingLw()) { + // If the nav bar is currently requested to be visible, + // and not in the process of animating on or off, then + // we can tell the app that it is covered by it. + mSystemBottom = mTmpNavigationFrame.top; + } } else { // Landscape screen; nav bar goes to the right. int left = displayWidth - mNavigationBarWidthForRotation[displayRotation]; @@ -2245,6 +2271,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { // We currently want to hide the navigation UI. mNavigationBar.hideLw(true); } + if (navVisible && !mNavigationBar.isAnimatingLw()) { + // If the nav bar is currently requested to be visible, + // and not in the process of animating on or off, then + // we can tell the app that it is covered by it. + mSystemRight = mTmpNavigationFrame.left; + } } // Make sure the content and current rectangles are updated to // account for the restrictions from the navigation bar. @@ -2252,9 +2284,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { mContentBottom = mCurBottom = mDockBottom; mContentLeft = mCurLeft = mDockLeft; mContentRight = mCurRight = mDockRight; + mStatusBarLayer = mNavigationBar.getSurfaceLayer(); // And compute the final frame. mNavigationBar.computeFrameLw(mTmpNavigationFrame, mTmpNavigationFrame, - mTmpNavigationFrame, mTmpNavigationFrame); + mTmpNavigationFrame, mTmpNavigationFrame, mTmpNavigationFrame); if (DEBUG_LAYOUT) Log.i(TAG, "mNavigationBar frame: " + mTmpNavigationFrame); } if (DEBUG_LAYOUT) Log.i(TAG, String.format("mDock rect: (%d,%d - %d,%d)", @@ -2272,8 +2305,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { vf.right = mStableRight; vf.bottom = mStableBottom; + mStatusBarLayer = mStatusBar.getSurfaceLayer(); + // Let the status bar determine its size. - mStatusBar.computeFrameLw(pf, df, vf, vf); + mStatusBar.computeFrameLw(pf, df, df, vf, vf); // For layout, the status bar is always at the top with our fixed height. mStableTop = mUnrestrictedScreenTop + mStatusBarHeight; @@ -2298,6 +2333,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { mContentLeft, mContentTop, mContentRight, mContentBottom, mCurLeft, mCurTop, mCurRight, mCurBottom)); } + if (mStatusBar.isVisibleLw() && !mStatusBar.isAnimatingLw()) { + // If the status bar is currently requested to be visible, + // and not in the process of animating on or off, then + // we can tell the app that it is covered by it. + mSystemTop = mUnrestrictedScreenTop + mStatusBarHeight; + } } } @@ -2356,6 +2397,14 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (win == mStatusBar || win == mNavigationBar) { return; } + final boolean needsToOffsetInputMethodTarget = + (win == mLastInputMethodTargetWindow && mLastInputMethodWindow != null); + if (needsToOffsetInputMethodTarget) { + if (DEBUG_LAYOUT) { + Slog.i(TAG, "Offset ime target window by the last ime window state"); + } + offsetInputMethodWindowLw(mLastInputMethodWindow); + } final int fl = attrs.flags; final int sim = attrs.softInputMode; @@ -2363,6 +2412,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { final Rect pf = mTmpParentFrame; final Rect df = mTmpDisplayFrame; + final Rect sf = mTmpSystemFrame; final Rect cf = mTmpContentFrame; final Rect vf = mTmpVisibleFrame; @@ -2606,6 +2656,20 @@ public class PhoneWindowManager implements WindowManagerPolicy { df.right = df.bottom = cf.right = cf.bottom = vf.right = vf.bottom = 10000; } + // Compute the system frame. This is easy: for things behind the + // status bar, it is any application windows; otherwise it is not set. + int parentType = attached != null ? attached.getAttrs().type : attrs.type; + if (win.getSurfaceLayer() < mStatusBarLayer + && parentType < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW) { + sf.left = mSystemLeft; + sf.top = mSystemTop; + sf.right = mSystemRight; + sf.bottom = mSystemBottom; + } else { + sf.left = sf.top = -10000; + sf.right = sf.bottom = 10000; + } + if (DEBUG_LAYOUT) Log.v(TAG, "Compute frame " + attrs.getTitle() + ": sim=#" + Integer.toHexString(sim) + " attach=" + attached + " type=" + attrs.type @@ -2613,27 +2677,32 @@ public class PhoneWindowManager implements WindowManagerPolicy { + " pf=" + pf.toShortString() + " df=" + df.toShortString() + " cf=" + cf.toShortString() + " vf=" + vf.toShortString()); - win.computeFrameLw(pf, df, cf, vf); + win.computeFrameLw(pf, df, sf, cf, vf); // Dock windows carve out the bottom of the screen, so normal windows // can't appear underneath them. if (attrs.type == TYPE_INPUT_METHOD && !win.getGivenInsetsPendingLw()) { - int top = win.getContentFrameLw().top; - top += win.getGivenContentInsetsLw().top; - if (mContentBottom > top) { - mContentBottom = top; - } - top = win.getVisibleFrameLw().top; - top += win.getGivenVisibleInsetsLw().top; - if (mCurBottom > top) { - mCurBottom = top; - } - if (DEBUG_LAYOUT) Log.v(TAG, "Input method: mDockBottom=" - + mDockBottom + " mContentBottom=" - + mContentBottom + " mCurBottom=" + mCurBottom); + setLastInputMethodWindowLw(null, null); + offsetInputMethodWindowLw(win); } } + private void offsetInputMethodWindowLw(WindowState win) { + int top = win.getContentFrameLw().top; + top += win.getGivenContentInsetsLw().top; + if (mContentBottom > top) { + mContentBottom = top; + } + top = win.getVisibleFrameLw().top; + top += win.getGivenVisibleInsetsLw().top; + if (mCurBottom > top) { + mCurBottom = top; + } + if (DEBUG_LAYOUT) Log.v(TAG, "Input method: mDockBottom=" + + mDockBottom + " mContentBottom=" + + mContentBottom + " mCurBottom=" + mCurBottom); + } + /** {@inheritDoc} */ @Override public void finishLayoutLw() { @@ -2804,33 +2873,26 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mHeadless) return; // lid changed state - mLidState = lidOpen ? LID_OPEN : LID_CLOSED; - updateKeyboardVisibility(); + final int newLidState = lidOpen ? LID_OPEN : LID_CLOSED; + if (newLidState == mLidState) { + return; + } - boolean awakeNow = mKeyguardMediator.doLidChangeTq(lidOpen); + mLidState = newLidState; + applyLidSwitchState(); updateRotation(true); - if (awakeNow) { - // If the lid is opening and we don't have to keep the - // keyguard up, then we can turn on the screen - // immediately. - mKeyguardMediator.pokeWakelock(); - } else if (keyguardIsShowingTq()) { - if (lidOpen) { - // If we are opening the lid and not hiding the - // keyguard, then we need to have it turn on the - // screen once it is shown. + + if (lidOpen) { + if (keyguardIsShowingTq()) { mKeyguardMediator.onWakeKeyWhenKeyguardShowingTq( KeyEvent.KEYCODE_POWER, mDockMode != Intent.EXTRA_DOCK_STATE_UNDOCKED); - } - } else { - // Light up the keyboard if we are sliding up. - if (lidOpen) { - mPowerManager.userActivity(SystemClock.uptimeMillis(), false, - LocalPowerManager.BUTTON_EVENT); } else { mPowerManager.userActivity(SystemClock.uptimeMillis(), false, - LocalPowerManager.OTHER_EVENT); + LocalPowerManager.BUTTON_EVENT); } + } else if (!mLidControlsSleep) { + mPowerManager.userActivity(SystemClock.uptimeMillis(), false, + LocalPowerManager.OTHER_EVENT); } } @@ -3294,20 +3356,19 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void run() { if (ActivityManagerNative.isSystemReady()) { - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); - intent.putExtra(Intent.EXTRA_KEY_EVENT, mKeyEvent); - mContext.sendOrderedBroadcast(intent, null, mBroadcastDone, - mHandler, Activity.RESULT_OK, null, null); + IAudioService audioService = getAudioService(); + if (audioService != null) { + try { + audioService.dispatchMediaKeyEventUnderWakelock(mKeyEvent); + } catch (RemoteException e) { + Log.e(TAG, "dispatchMediaKeyEvent threw exception " + e); + } + } + mBroadcastWakeLock.release(); } } } - BroadcastReceiver mBroadcastDone = new BroadcastReceiver() { - public void onReceive(Context context, Intent intent) { - mBroadcastWakeLock.release(); - } - }; - BroadcastReceiver mDockReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) { @@ -3879,13 +3940,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ public void enableScreenAfterBoot() { readLidState(); - updateKeyboardVisibility(); - + applyLidSwitchState(); updateRotation(true); } - private void updateKeyboardVisibility() { - mPowerManager.setKeyboardVisibility(mLidState == LID_OPEN); + private void applyLidSwitchState() { + mPowerManager.setKeyboardVisibility(isBuiltInKeyboardVisible()); + + if (mLidState == LID_CLOSED && mLidControlsSleep) { + mPowerManager.goToSleep(SystemClock.uptimeMillis()); + } } void updateRotation(boolean alwaysSendConfiguration) { @@ -4135,6 +4199,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { return mHasNavigationBar; } + @Override + public void setLastInputMethodWindowLw(WindowState ime, WindowState target) { + mLastInputMethodWindow = ime; + mLastInputMethodTargetWindow = target; + } + public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) { pw.print(prefix); pw.print("mSafeMode="); pw.print(mSafeMode); pw.print(" mSystemReady="); pw.print(mSystemReady); @@ -4171,6 +4241,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mLidKeyboardAccessibility="); pw.print(mLidKeyboardAccessibility); pw.print(" mLidNavigationAccessibility="); pw.print(mLidNavigationAccessibility); + pw.print(" mLidControlsSleep="); pw.print(mLidControlsSleep); pw.print(" mLongPressOnPowerBehavior="); pw.println(mLongPressOnPowerBehavior); pw.print(prefix); pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly); pw.print(" mScreenOnFully="); pw.print(mScreenOnFully); @@ -4188,6 +4259,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(","); pw.print(mStableTop); pw.print(")-("); pw.print(mStableRight); pw.print(","); pw.print(mStableBottom); pw.println(")"); + pw.print(prefix); pw.print("mSystem=("); pw.print(mSystemLeft); + pw.print(","); pw.print(mSystemTop); + pw.print(")-("); pw.print(mSystemRight); + pw.print(","); pw.print(mSystemBottom); pw.println(")"); pw.print(prefix); pw.print("mCur=("); pw.print(mCurLeft); pw.print(","); pw.print(mCurTop); pw.print(")-("); pw.print(mCurRight); @@ -4200,7 +4275,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(","); pw.print(mDockTop); pw.print(")-("); pw.print(mDockRight); pw.print(","); pw.print(mDockBottom); pw.println(")"); - pw.print(prefix); pw.print("mDockLayer="); pw.println(mDockLayer); + pw.print(prefix); pw.print("mDockLayer="); pw.print(mDockLayer); + pw.print(" mStatusBarLayer="); pw.println(mStatusBarLayer); pw.print(prefix); pw.print("mTopFullscreenOpaqueWindowState="); pw.println(mTopFullscreenOpaqueWindowState); pw.print(prefix); pw.print("mTopIsFullscreen="); pw.print(mTopIsFullscreen); diff --git a/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java b/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java index f3e7d4a95a7a..3b2a473d7ad3 100644 --- a/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java +++ b/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java @@ -304,11 +304,6 @@ public class SimPukUnlockScreen extends LinearLayout implements KeyguardScreen, mCallback.recreateMe(newConfig); } else if (newConfig.hardKeyboardHidden != mKeyboardHidden) { mKeyboardHidden = newConfig.hardKeyboardHidden; - final boolean isKeyboardOpen = - (mKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO); - if (mUpdateMonitor.isKeyguardBypassEnabled() && isKeyboardOpen) { - mCallback.goToUnlockScreen(); - } } } diff --git a/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java b/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java index 9604cdc6e7b0..80407f561d66 100644 --- a/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java +++ b/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java @@ -282,10 +282,6 @@ public class SimUnlockScreen extends LinearLayout implements KeyguardScreen, Vie mCallback.recreateMe(newConfig); } else if (newConfig.hardKeyboardHidden != mKeyboardHidden) { mKeyboardHidden = newConfig.hardKeyboardHidden; - final boolean isKeyboardOpen = mKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO; - if (mUpdateMonitor.isKeyguardBypassEnabled() && isKeyboardOpen) { - mCallback.goToUnlockScreen(); - } } } diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp index 6ec020cb9319..f80ac18450ca 100644 --- a/services/input/EventHub.cpp +++ b/services/input/EventHub.cpp @@ -1194,7 +1194,8 @@ status_t EventHub::openDeviceLocked(const char *devicePath) { // As of Linux 3.4, there is a new EVIOCSCLOCKID ioctl to set the desired clock. // Therefore, we no longer require the Android-specific kernel patch described above // as long as we make sure to set select the monotonic clock. We do that here. - bool usingClockIoctl = !ioctl(fd, EVIOCSCLOCKID, CLOCK_MONOTONIC); + int clockId = CLOCK_MONOTONIC; + bool usingClockIoctl = !ioctl(fd, EVIOCSCLOCKID, &clockId); ALOGI("New device: id=%d, fd=%d, path='%s', name='%s', classes=0x%x, " "configuration='%s', keyLayout='%s', keyCharacterMap='%s', builtinKeyboard=%s, " diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp index c6b701fe87ff..cd6a2ec551f6 100644 --- a/services/input/InputReader.cpp +++ b/services/input/InputReader.cpp @@ -250,7 +250,6 @@ InputReader::InputReader(const sp<EventHubInterface>& eventHub, refreshConfigurationLocked(0); updateGlobalMetaStateLocked(); - updateInputConfigurationLocked(); } // release lock } @@ -502,9 +501,6 @@ void InputReader::handleConfigurationChangedLocked(nsecs_t when) { // Reset global meta state because it depends on the list of all configured devices. updateGlobalMetaStateLocked(); - // Update input configuration. - updateInputConfigurationLocked(); - // Enqueue configuration changed. NotifyConfigurationChangedArgs args(when); mQueuedListener->notifyConfigurationChanged(&args); @@ -542,36 +538,6 @@ int32_t InputReader::getGlobalMetaStateLocked() { return mGlobalMetaState; } -void InputReader::updateInputConfigurationLocked() { - int32_t touchScreenConfig = InputConfiguration::TOUCHSCREEN_NOTOUCH; - int32_t keyboardConfig = InputConfiguration::KEYBOARD_NOKEYS; - int32_t navigationConfig = InputConfiguration::NAVIGATION_NONAV; - InputDeviceInfo deviceInfo; - for (size_t i = 0; i < mDevices.size(); i++) { - InputDevice* device = mDevices.valueAt(i); - if (!(device->getClasses() & INPUT_DEVICE_CLASS_VIRTUAL)) { - device->getDeviceInfo(& deviceInfo); - uint32_t sources = deviceInfo.getSources(); - - if ((sources & AINPUT_SOURCE_TOUCHSCREEN) == AINPUT_SOURCE_TOUCHSCREEN) { - touchScreenConfig = InputConfiguration::TOUCHSCREEN_FINGER; - } - if ((sources & AINPUT_SOURCE_TRACKBALL) == AINPUT_SOURCE_TRACKBALL) { - navigationConfig = InputConfiguration::NAVIGATION_TRACKBALL; - } else if ((sources & AINPUT_SOURCE_DPAD) == AINPUT_SOURCE_DPAD) { - navigationConfig = InputConfiguration::NAVIGATION_DPAD; - } - if (deviceInfo.getKeyboardType() == AINPUT_KEYBOARD_TYPE_ALPHABETIC) { - keyboardConfig = InputConfiguration::KEYBOARD_QWERTY; - } - } - } - - mInputConfiguration.touchScreen = touchScreenConfig; - mInputConfiguration.keyboard = keyboardConfig; - mInputConfiguration.navigation = navigationConfig; -} - void InputReader::disableVirtualKeysUntilLocked(nsecs_t time) { mDisableVirtualKeysTimeout = time; } @@ -608,12 +574,6 @@ int32_t InputReader::bumpGenerationLocked() { return ++mGeneration; } -void InputReader::getInputConfiguration(InputConfiguration* outConfiguration) { - AutoMutex _l(mLock); - - *outConfiguration = mInputConfiguration; -} - void InputReader::getInputDevices(Vector<InputDeviceInfo>& outInputDevices) { AutoMutex _l(mLock); getInputDevicesLocked(outInputDevices); @@ -1049,7 +1009,7 @@ void InputDevice::timeoutExpired(nsecs_t when) { } void InputDevice::getDeviceInfo(InputDeviceInfo* outDeviceInfo) { - outDeviceInfo->initialize(mId, mGeneration, mIdentifier, mAlias); + outDeviceInfo->initialize(mId, mGeneration, mIdentifier, mAlias, mIsExternal); size_t numMappers = mMappers.size(); for (size_t i = 0; i < numMappers; i++) { diff --git a/services/input/InputReader.h b/services/input/InputReader.h index 8257dbcef097..03198a68484d 100644 --- a/services/input/InputReader.h +++ b/services/input/InputReader.h @@ -259,12 +259,6 @@ public: */ virtual void loopOnce() = 0; - /* Gets the current input device configuration. - * - * This method may be called on any thread (usually by the input manager). - */ - virtual void getInputConfiguration(InputConfiguration* outConfiguration) = 0; - /* Gets information about all input devices. * * This method may be called on any thread (usually by the input manager). @@ -344,7 +338,6 @@ public: virtual void loopOnce(); - virtual void getInputConfiguration(InputConfiguration* outConfiguration); virtual void getInputDevices(Vector<InputDeviceInfo>& outInputDevices); virtual int32_t getScanCodeState(int32_t deviceId, uint32_t sourceMask, @@ -425,9 +418,6 @@ private: int32_t mGeneration; int32_t bumpGenerationLocked(); - InputConfiguration mInputConfiguration; - void updateInputConfigurationLocked(); - void getInputDevicesLocked(Vector<InputDeviceInfo>& outInputDevices); nsecs_t mDisableVirtualKeysTimeout; diff --git a/services/input/tests/InputReader_test.cpp b/services/input/tests/InputReader_test.cpp index 0f755aecd544..abda10bc4c08 100644 --- a/services/input/tests/InputReader_test.cpp +++ b/services/input/tests/InputReader_test.cpp @@ -984,96 +984,6 @@ protected: } }; -TEST_F(InputReaderTest, GetInputConfiguration_WhenNoDevices_ReturnsDefaults) { - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen); -} - -TEST_F(InputReaderTest, GetInputConfiguration_WhenAlphabeticKeyboardPresent_ReturnsQwertyKeyboard) { - ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("keyboard"), - INPUT_DEVICE_CLASS_KEYBOARD | INPUT_DEVICE_CLASS_ALPHAKEY, NULL)); - - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_QWERTY, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen); -} - -TEST_F(InputReaderTest, GetInputConfiguration_WhenTouchScreenPresent_ReturnsFingerTouchScreen) { - PropertyMap configuration; - configuration.addProperty(String8("touch.deviceType"), String8("touchScreen")); - ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("touchscreen"), - INPUT_DEVICE_CLASS_TOUCH, &configuration)); - - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_FINGER, config.touchScreen); -} - -TEST_F(InputReaderTest, GetInputConfiguration_WhenTouchPadPresent_ReturnsFingerNoTouch) { - ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("touchpad"), - INPUT_DEVICE_CLASS_TOUCH, NULL)); - - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen); -} - -TEST_F(InputReaderTest, GetInputConfiguration_WhenMousePresent_ReturnsNoNavigation) { - sp<FakePointerController> controller = new FakePointerController(); - mFakePolicy->setPointerController(0, controller); - - PropertyMap configuration; - configuration.addProperty(String8("cursor.mode"), String8("pointer")); - ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("mouse"), - INPUT_DEVICE_CLASS_CURSOR, &configuration)); - - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen); -} - -TEST_F(InputReaderTest, GetInputConfiguration_WhenTrackballPresent_ReturnsTrackballNavigation) { - PropertyMap configuration; - configuration.addProperty(String8("cursor.mode"), String8("navigation")); - ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("trackball"), - INPUT_DEVICE_CLASS_CURSOR, &configuration)); - - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_TRACKBALL, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen); -} - -TEST_F(InputReaderTest, GetInputConfiguration_WhenDPadPresent_ReturnsDPadNavigation) { - ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("dpad"), - INPUT_DEVICE_CLASS_DPAD, NULL)); - - InputConfiguration config; - mReader->getInputConfiguration(&config); - - ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard); - ASSERT_EQ(InputConfiguration::NAVIGATION_DPAD, config.navigation); - ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen); -} - TEST_F(InputReaderTest, GetInputDevices) { ASSERT_NO_FATAL_FAILURE(addDevice(1, String8("keyboard"), INPUT_DEVICE_CLASS_KEYBOARD, NULL)); diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java index 7e71b087ef19..38f4554caf5c 100644 --- a/services/java/com/android/server/AppWidgetService.java +++ b/services/java/com/android/server/AppWidgetService.java @@ -279,13 +279,13 @@ class AppWidgetService extends IAppWidgetService.Stub } @Override - public void updateAppWidgetExtras(int appWidgetId, Bundle extras) { - getImplForUser().updateAppWidgetExtras(appWidgetId, extras); + public void updateAppWidgetOptions(int appWidgetId, Bundle options) { + getImplForUser().updateAppWidgetOptions(appWidgetId, options); } @Override - public Bundle getAppWidgetExtras(int appWidgetId) { - return getImplForUser().getAppWidgetExtras(appWidgetId); + public Bundle getAppWidgetOptions(int appWidgetId) { + return getImplForUser().getAppWidgetOptions(appWidgetId); } static int[] getAppWidgetIds(Provider p) { diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java index a0b8c531afa8..23f2fddf7df3 100644 --- a/services/java/com/android/server/AppWidgetServiceImpl.java +++ b/services/java/com/android/server/AppWidgetServiceImpl.java @@ -112,7 +112,7 @@ class AppWidgetServiceImpl { int appWidgetId; Provider provider; RemoteViews views; - Bundle extras; + Bundle options; Host host; } @@ -820,7 +820,7 @@ class AppWidgetServiceImpl { } } - public void updateAppWidgetExtras(int appWidgetId, Bundle extras) { + public void updateAppWidgetOptions(int appWidgetId, Bundle options) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); @@ -829,23 +829,23 @@ class AppWidgetServiceImpl { return; } Provider p = id.provider; - id.extras = extras; + id.options = options; // send the broacast saying that this appWidgetId has been deleted - Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_EXTRAS_CHANGED); + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED); intent.setComponent(p.info.provider); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id.appWidgetId); - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS, extras); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options); mContext.sendBroadcast(intent, mUserId); } } - public Bundle getAppWidgetExtras(int appWidgetId) { + public Bundle getAppWidgetOptions(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); - if (id != null && id.extras != null) { - return id.extras; + if (id != null && id.options != null) { + return id.options; } else { return Bundle.EMPTY; } @@ -1595,15 +1595,15 @@ class AppWidgetServiceImpl { AtomicFile savedStateFile() { File dir = new File("/data/system/users/" + mUserId); File settingsFile = getSettingsFile(mUserId); - if (!dir.exists()) { - dir.mkdirs(); - if (mUserId == 0) { - // Migrate old data - File oldFile = new File("/data/system/" + SETTINGS_FILENAME); - // Method doesn't throw an exception on failure. Ignore any errors - // in moving the file (like non-existence) - oldFile.renameTo(settingsFile); - } + if (!settingsFile.exists() && mUserId == 0) { + if (!dir.exists()) { + dir.mkdirs(); + } + // Migrate old data + File oldFile = new File("/data/system/" + SETTINGS_FILENAME); + // Method doesn't throw an exception on failure. Ignore any errors + // in moving the file (like non-existence) + oldFile.renameTo(settingsFile); } return new AtomicFile(settingsFile); } diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index a0d5bebc32d9..a3768c62f5a5 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -5714,6 +5714,8 @@ class BackupManagerService extends IBackupManager.Stub { @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + long identityToken = Binder.clearCallingIdentity(); try { dumpInternal(pw); @@ -5723,16 +5725,6 @@ class BackupManagerService extends IBackupManager.Stub { } private void dumpInternal(PrintWriter pw) { - if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) - != PackageManager.PERMISSION_GRANTED) { - pw.println("Permission Denial: can't dump Backup Manager service from from pid=" - + Binder.getCallingPid() - + ", uid=" + Binder.getCallingUid() - + " without permission " - + android.Manifest.permission.DUMP); - return; - } - synchronized (mQueueLock) { pw.println("Backup Manager is " + (mEnabled ? "enabled" : "disabled") + " / " + (!mProvisioned ? "not " : "") + "provisioned / " diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index dd650bf229d3..e396a6970362 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -884,22 +884,25 @@ private NetworkStateTracker makeWimaxStateTracker() { @Override public boolean isActiveNetworkMetered() { enforceAccessPermission(); - final long token = Binder.clearCallingIdentity(); try { - final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork); - if (state != null) { - try { - return mPolicyManager.isNetworkMetered(state); - } catch (RemoteException e) { - } - } - return false; + return isNetworkMeteredUnchecked(mActiveDefaultNetwork); } finally { Binder.restoreCallingIdentity(token); } } + private boolean isNetworkMeteredUnchecked(int networkType) { + final NetworkState state = getNetworkStateUnchecked(networkType); + if (state != null) { + try { + return mPolicyManager.isNetworkMetered(state); + } catch (RemoteException e) { + } + } + return false; + } + public boolean setRadios(boolean turnOn) { boolean result = true; enforceChangePermission(); @@ -993,7 +996,8 @@ private NetworkStateTracker makeWimaxStateTracker() { public int startUsingNetworkFeature(int networkType, String feature, IBinder binder) { if (VDBG) { - log("startUsingNetworkFeature for net " + networkType + ": " + feature); + log("startUsingNetworkFeature for net " + networkType + ": " + feature + ", uid=" + + Binder.getCallingUid()); } enforceChangePermission(); if (!ConnectivityManager.isNetworkTypeValid(networkType) || @@ -1010,6 +1014,16 @@ private NetworkStateTracker makeWimaxStateTracker() { enforceConnectivityInternalPermission(); } + // if UID is restricted, don't allow them to bring up metered APNs + final boolean networkMetered = isNetworkMeteredUnchecked(usedNetworkType); + final int uidRules; + synchronized (mRulesLock) { + uidRules = mUidRules.get(Binder.getCallingUid(), RULE_ALLOW_ALL); + } + if (networkMetered && (uidRules & RULE_REJECT_METERED) != 0) { + return Phone.APN_REQUEST_FAILED; + } + NetworkStateTracker network = mNetTrackers[usedNetworkType]; if (network != null) { Integer currentPid = new Integer(getCallingPid()); @@ -1432,7 +1446,6 @@ private NetworkStateTracker makeWimaxStateTracker() { mUidRules.put(uid, uidRules); } - // TODO: dispatch into NMS to push rules towards kernel module // TODO: notify UID when it has requested targeted updates } diff --git a/services/java/com/android/server/CountryDetectorService.java b/services/java/com/android/server/CountryDetectorService.java index 3112b50d84ec..fc762777727a 100644 --- a/services/java/com/android/server/CountryDetectorService.java +++ b/services/java/com/android/server/CountryDetectorService.java @@ -212,6 +212,8 @@ public class CountryDetectorService extends ICountryDetector.Stub implements Run @SuppressWarnings("unused") @Override protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + if (!DEBUG) return; try { final Printer p = new PrintWriterPrinter(fout); diff --git a/services/java/com/android/server/DiskStatsService.java b/services/java/com/android/server/DiskStatsService.java index 8ef974a7a872..ac25dc58861d 100644 --- a/services/java/com/android/server/DiskStatsService.java +++ b/services/java/com/android/server/DiskStatsService.java @@ -34,6 +34,8 @@ import java.io.PrintWriter; * statistics about the status of the disk. */ public class DiskStatsService extends Binder { + private static final String TAG = "DiskStatsService"; + private final Context mContext; public DiskStatsService(Context context) { @@ -42,7 +44,7 @@ public class DiskStatsService extends Binder { @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - // This data is accessible to any app -- no permission check needed. + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); // Run a quick-and-dirty performance test: write 512 bytes byte[] junk = new byte[512]; diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 43c22924210f..8e3b8255ed36 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -39,6 +39,7 @@ import android.app.KeyguardManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; +import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; @@ -110,6 +111,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.TreeMap; /** @@ -152,6 +154,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub private static final String TAG_ENABLED_WHEN_DEFAULT_IS_NOT_ASCII_CAPABLE = "EnabledWhenDefaultIsNotAsciiCapable"; private static final String TAG_ASCII_CAPABLE = "AsciiCapable"; + private static final Locale ENGLISH_LOCALE = new Locale("en"); final Context mContext; final Resources mRes; @@ -371,6 +374,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub private View mSwitchingDialogTitleView; private InputMethodInfo[] mIms; private int[] mSubtypeIds; + private Locale mLastSystemLocale; class SettingsObserver extends ContentObserver { SettingsObserver(Handler handler) { @@ -586,6 +590,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mImeSwitcherNotification.vibrate = null; Intent intent = new Intent(Settings.ACTION_SHOW_INPUT_METHOD_PICKER); mImeSwitchPendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0); + mLastSystemLocale = mRes.getConfiguration().locale; mShowOngoingImeSwitcherForPhones = false; @@ -612,32 +617,102 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (TextUtils.isEmpty(Settings.Secure.getString( mContext.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD))) { - InputMethodInfo defIm = null; - for (InputMethodInfo imi: mMethodList) { - if (defIm == null && imi.getIsDefaultResourceId() != 0) { - try { - Resources res = context.createPackageContext( - imi.getPackageName(), 0).getResources(); - if (res.getBoolean(imi.getIsDefaultResourceId())) { - defIm = imi; - Slog.i(TAG, "Selected default: " + imi.getId()); + resetDefaultImeLocked(context); + } + + mSettingsObserver = new SettingsObserver(mHandler); + updateFromSettingsLocked(); + + // IMMS wants to receive Intent.ACTION_LOCALE_CHANGED in order to update the current IME + // according to the new system locale. + final IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_LOCALE_CHANGED); + mContext.registerReceiver( + new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + synchronized(mMethodMap) { + checkCurrentLocaleChangedLocked(); } - } catch (PackageManager.NameNotFoundException ex) { - } catch (Resources.NotFoundException ex) { } - } + }, filter); + } + + private void checkCurrentLocaleChangedLocked() { + final Locale newLocale = mRes.getConfiguration().locale; + if (newLocale != null && !newLocale.equals(mLastSystemLocale)) { + if (DEBUG) { + Slog.i(TAG, "Locale has been changed to " + newLocale); } - if (defIm == null && mMethodList.size() > 0) { - defIm = getMostApplicableDefaultIMELocked(); - Slog.i(TAG, "No default found, using " + defIm.getId()); + buildInputMethodListLocked(mMethodList, mMethodMap); + // Reset the current ime to the proper one + resetDefaultImeLocked(mContext); + mLastSystemLocale = newLocale; + } + } + + private void resetDefaultImeLocked(Context context) { + // Do not reset the default (current) IME when it is a 3rd-party IME + if (mCurMethodId != null && !isSystemIme(mMethodMap.get(mCurMethodId))) { + return; + } + + InputMethodInfo defIm = null; + for (InputMethodInfo imi : mMethodList) { + if (defIm == null) { + if (isValidSystemDefaultIme(imi, context)) { + defIm = imi; + Slog.i(TAG, "Selected default: " + imi.getId()); + } } - if (defIm != null) { - setSelectedInputMethodAndSubtypeLocked(defIm, NOT_A_SUBTYPE_ID, false); + } + if (defIm == null && mMethodList.size() > 0) { + defIm = getMostApplicableDefaultIMELocked(); + Slog.i(TAG, "No default found, using " + defIm.getId()); + } + if (defIm != null) { + setSelectedInputMethodAndSubtypeLocked(defIm, NOT_A_SUBTYPE_ID, false); + } + } + + private static boolean isValidSystemDefaultIme(InputMethodInfo imi, Context context) { + if (!isSystemIme(imi)) { + return false; + } + if (imi.getIsDefaultResourceId() != 0) { + try { + Resources res = context.createPackageContext( + imi.getPackageName(), 0).getResources(); + if (res.getBoolean(imi.getIsDefaultResourceId()) + && containsSubtypeOf(imi, context.getResources().getConfiguration(). + locale.getLanguage())) { + return true; + } + } catch (PackageManager.NameNotFoundException ex) { + } catch (Resources.NotFoundException ex) { } } + if (imi.getSubtypeCount() == 0) { + Slog.w(TAG, "Found no subtypes in a system IME: " + imi.getPackageName()); + } + return false; + } - mSettingsObserver = new SettingsObserver(mHandler); - updateFromSettingsLocked(); + private static boolean isSystemImeThatHasEnglishSubtype(InputMethodInfo imi) { + if (!isSystemIme(imi)) { + return false; + } + return containsSubtypeOf(imi, ENGLISH_LOCALE.getLanguage()); + } + + private static boolean containsSubtypeOf(InputMethodInfo imi, String language) { + final int N = imi.getSubtypeCount(); + for (int i = 0; i < N; ++i) { + if (imi.getSubtypeAt(i).getLocale().startsWith(language)) { + return true; + } + } + return false; } @Override @@ -663,6 +738,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mContext.getSystemService(Context.KEYGUARD_SERVICE); mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); + mLastSystemLocale = mContext.getResources().getConfiguration().locale; mStatusBar = statusBar; statusBar.setIconVisibility("ime", false); updateImeWindowStatusLocked(); @@ -2043,7 +2119,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return false; } - private boolean isSystemIme(InputMethodInfo inputMethod) { + private static boolean isSystemIme(InputMethodInfo inputMethod) { return (inputMethod.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; } @@ -2139,9 +2215,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final String id = p.getId(); map.put(id, p); - // System IMEs are enabled by default, unless there's a hard keyboard - // and the system IME was explicitly disabled - if (isSystemIme(p) && (!haveHardKeyboard || disabledSysImes.indexOf(id) < 0)) { + // Valid system default IMEs and IMEs that have English subtypes are enabled + // by default, unless there's a hard keyboard and the system IME was explicitly + // disabled + if ((isValidSystemDefaultIme(p, mContext) || isSystemImeThatHasEnglishSubtype(p)) + && (!haveHardKeyboard || disabledSysImes.indexOf(id) < 0)) { setInputMethodEnabledLocked(id, true); } diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index d651111e25f9..4582d67739eb 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -489,6 +489,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run mNetworkLocationProvider = new LocationProviderProxy(mContext, LocationManager.NETWORK_PROVIDER, mNetworkLocationProviderPackageName, mLocationHandler); + addProvider(mNetworkLocationProvider); } @@ -1156,11 +1157,11 @@ public class LocationManagerService extends ILocationManager.Stub implements Run if (p == null) { throw new IllegalArgumentException("provider=" + provider); } - receiver.requiredPermissions = checkPermissionsSafe(provider, receiver.requiredPermissions); // so wakelock calls will succeed + final int callingPid = Binder.getCallingPid(); final int callingUid = Binder.getCallingUid(); boolean newUid = !providerHasListener(provider, callingUid, null); long identity = Binder.clearCallingIdentity(); @@ -1179,6 +1180,8 @@ public class LocationManagerService extends ILocationManager.Stub implements Run boolean isProviderEnabled = isAllowedBySettingsLocked(provider); if (isProviderEnabled) { long minTimeForProvider = getMinTimeLocked(provider); + Slog.i(TAG, "request " + provider + " (pid " + callingPid + ") " + minTime + + " " + minTimeForProvider + (singleShot ? " (singleshot)" : "")); p.setMinTime(minTimeForProvider, mTmpWorkSource); // try requesting single shot if singleShot is true, and fall back to // regular location tracking if requestSingleShotFix() is not supported @@ -1231,6 +1234,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run } // so wakelock calls will succeed + final int callingPid = Binder.getCallingPid(); final int callingUid = Binder.getCallingUid(); long identity = Binder.clearCallingIdentity(); try { @@ -1280,8 +1284,13 @@ public class LocationManagerService extends ILocationManager.Stub implements Run LocationProviderInterface p = mProvidersByName.get(provider); if (p != null) { if (hasOtherListener) { - p.setMinTime(getMinTimeLocked(provider), mTmpWorkSource); + long minTime = getMinTimeLocked(provider); + Slog.i(TAG, "remove " + provider + " (pid " + callingPid + + "), next minTime = " + minTime); + p.setMinTime(minTime, mTmpWorkSource); } else { + Slog.i(TAG, "remove " + provider + " (pid " + callingPid + + "), disabled"); p.enableLocationTracking(false); } } diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index 09d06982c89f..4536a6dd1f5f 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -23,7 +23,6 @@ import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_TETHERING; -import static android.provider.Settings.Secure.NETSTATS_ENABLED; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceRxThrottleResult; @@ -45,19 +44,19 @@ import android.net.NetworkUtils; import android.net.RouteInfo; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.KeyMgmt; +import android.os.Handler; import android.os.INetworkManagementService; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; -import android.provider.Settings; import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import com.android.internal.net.NetworkStatsFactory; import com.android.server.NativeDaemonConnector.Command; -import com.google.android.collect.Sets; +import com.google.android.collect.Maps; import java.io.BufferedReader; import java.io.DataInputStream; @@ -74,7 +73,8 @@ import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; +import java.util.HashMap; +import java.util.Map; import java.util.NoSuchElementException; import java.util.StringTokenizer; import java.util.concurrent.CountDownLatch; @@ -133,8 +133,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ private NativeDaemonConnector mConnector; + private final Handler mMainHandler = new Handler(); + private Thread mThread; - private final CountDownLatch mConnectedSignal = new CountDownLatch(1); + private CountDownLatch mConnectedSignal = new CountDownLatch(1); private final RemoteCallbackList<INetworkManagementEventObserver> mObservers = new RemoteCallbackList<INetworkManagementEventObserver>(); @@ -143,9 +145,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub private Object mQuotaLock = new Object(); /** Set of interfaces with active quotas. */ - private HashSet<String> mActiveQuotaIfaces = Sets.newHashSet(); + private HashMap<String, Long> mActiveQuotas = Maps.newHashMap(); /** Set of interfaces with active alerts. */ - private HashSet<String> mActiveAlertIfaces = Sets.newHashSet(); + private HashMap<String, Long> mActiveAlerts = Maps.newHashMap(); /** Set of UIDs with active reject rules. */ private SparseBooleanArray mUidRejectOnQuota = new SparseBooleanArray(); @@ -172,35 +174,19 @@ public class NetworkManagementService extends INetworkManagementService.Stub } public static NetworkManagementService create(Context context) throws InterruptedException { - NetworkManagementService service = new NetworkManagementService(context); + final NetworkManagementService service = new NetworkManagementService(context); + final CountDownLatch connectedSignal = service.mConnectedSignal; if (DBG) Slog.d(TAG, "Creating NetworkManagementService"); service.mThread.start(); if (DBG) Slog.d(TAG, "Awaiting socket connection"); - service.mConnectedSignal.await(); + connectedSignal.await(); if (DBG) Slog.d(TAG, "Connected"); return service; } public void systemReady() { - // only enable bandwidth control when support exists, and requested by - // system setting. - final boolean hasKernelSupport = new File("/proc/net/xt_qtaguid/ctrl").exists(); - final boolean shouldEnable = - Settings.Secure.getInt(mContext.getContentResolver(), NETSTATS_ENABLED, 1) != 0; - - if (hasKernelSupport && shouldEnable) { - Slog.d(TAG, "enabling bandwidth control"); - try { - mConnector.execute("bandwidth", "enable"); - mBandwidthControlEnabled = true; - } catch (NativeDaemonConnectorException e) { - Log.wtf(TAG, "problem enabling bandwidth controls", e); - } - } else { - Slog.d(TAG, "not enabling bandwidth control"); - } - - SystemProperties.set(PROP_QTAGUID_ENABLED, mBandwidthControlEnabled ? "1" : "0"); + prepareNativeDaemon(); + if (DBG) Slog.d(TAG, "Prepared"); } @Override @@ -264,8 +250,8 @@ public class NetworkManagementService extends INetworkManagementService.Stub private void notifyInterfaceRemoved(String iface) { // netd already clears out quota and alerts for removed ifaces; update // our sanity-checking state. - mActiveAlertIfaces.remove(iface); - mActiveQuotaIfaces.remove(iface); + mActiveAlerts.remove(iface); + mActiveQuotas.remove(iface); final int length = mObservers.beginBroadcast(); for (int i = 0; i < length; i++) { @@ -292,24 +278,85 @@ public class NetworkManagementService extends INetworkManagementService.Stub } /** - * Let us know the daemon is connected + * Prepare native daemon once connected, enabling modules and pushing any + * existing in-memory rules. */ - protected void onDaemonConnected() { - mConnectedSignal.countDown(); - } + private void prepareNativeDaemon() { + mBandwidthControlEnabled = false; + + // only enable bandwidth control when support exists + final boolean hasKernelSupport = new File("/proc/net/xt_qtaguid/ctrl").exists(); + if (hasKernelSupport) { + Slog.d(TAG, "enabling bandwidth control"); + try { + mConnector.execute("bandwidth", "enable"); + mBandwidthControlEnabled = true; + } catch (NativeDaemonConnectorException e) { + Log.wtf(TAG, "problem enabling bandwidth controls", e); + } + } else { + Slog.d(TAG, "not enabling bandwidth control"); + } + SystemProperties.set(PROP_QTAGUID_ENABLED, mBandwidthControlEnabled ? "1" : "0"); + + // push any existing quota or UID rules + synchronized (mQuotaLock) { + int size = mActiveQuotas.size(); + if (size > 0) { + Slog.d(TAG, "pushing " + size + " active quota rules"); + final HashMap<String, Long> activeQuotas = mActiveQuotas; + mActiveQuotas = Maps.newHashMap(); + for (Map.Entry<String, Long> entry : activeQuotas.entrySet()) { + setInterfaceQuota(entry.getKey(), entry.getValue()); + } + } + + size = mActiveAlerts.size(); + if (size > 0) { + Slog.d(TAG, "pushing " + size + " active alert rules"); + final HashMap<String, Long> activeAlerts = mActiveAlerts; + mActiveAlerts = Maps.newHashMap(); + for (Map.Entry<String, Long> entry : activeAlerts.entrySet()) { + setInterfaceAlert(entry.getKey(), entry.getValue()); + } + } + + size = mUidRejectOnQuota.size(); + if (size > 0) { + Slog.d(TAG, "pushing " + size + " active uid rules"); + final SparseBooleanArray uidRejectOnQuota = mUidRejectOnQuota; + mUidRejectOnQuota = new SparseBooleanArray(); + for (int i = 0; i < uidRejectOnQuota.size(); i++) { + setUidNetworkRules(uidRejectOnQuota.keyAt(i), uidRejectOnQuota.valueAt(i)); + } + } + } + } // // Netd Callback handling // - class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks { - /** {@inheritDoc} */ + private class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks { + @Override public void onDaemonConnected() { - NetworkManagementService.this.onDaemonConnected(); + // event is dispatched from internal NDC thread, so we prepare the + // daemon back on main thread. + if (mConnectedSignal != null) { + mConnectedSignal.countDown(); + mConnectedSignal = null; + } else { + mMainHandler.post(new Runnable() { + @Override + public void run() { + prepareNativeDaemon(); + } + }); + } } - /** {@inheritDoc} */ + @Override public boolean onEvent(int code, String raw, String[] cooked) { switch (code) { case NetdResponseCode.InterfaceChange: @@ -942,9 +989,15 @@ public class NetworkManagementService extends INetworkManagementService.Stub } @Override - public NetworkStats getNetworkStatsSummary() { + public NetworkStats getNetworkStatsSummaryDev() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - return mStatsFactory.readNetworkStatsSummary(); + return mStatsFactory.readNetworkStatsSummaryDev(); + } + + @Override + public NetworkStats getNetworkStatsSummaryXt() { + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); + return mStatsFactory.readNetworkStatsSummaryXt(); } @Override @@ -962,14 +1015,14 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (!mBandwidthControlEnabled) return; synchronized (mQuotaLock) { - if (mActiveQuotaIfaces.contains(iface)) { + if (mActiveQuotas.containsKey(iface)) { throw new IllegalStateException("iface " + iface + " already has quota"); } try { // TODO: support quota shared across interfaces mConnector.execute("bandwidth", "setiquota", iface, quotaBytes); - mActiveQuotaIfaces.add(iface); + mActiveQuotas.put(iface, quotaBytes); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); } @@ -985,13 +1038,13 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (!mBandwidthControlEnabled) return; synchronized (mQuotaLock) { - if (!mActiveQuotaIfaces.contains(iface)) { + if (!mActiveQuotas.containsKey(iface)) { // TODO: eventually consider throwing return; } - mActiveQuotaIfaces.remove(iface); - mActiveAlertIfaces.remove(iface); + mActiveQuotas.remove(iface); + mActiveAlerts.remove(iface); try { // TODO: support quota shared across interfaces @@ -1011,19 +1064,19 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (!mBandwidthControlEnabled) return; // quick sanity check - if (!mActiveQuotaIfaces.contains(iface)) { + if (!mActiveQuotas.containsKey(iface)) { throw new IllegalStateException("setting alert requires existing quota on iface"); } synchronized (mQuotaLock) { - if (mActiveAlertIfaces.contains(iface)) { + if (mActiveAlerts.containsKey(iface)) { throw new IllegalStateException("iface " + iface + " already has alert"); } try { // TODO: support alert shared across interfaces mConnector.execute("bandwidth", "setinterfacealert", iface, alertBytes); - mActiveAlertIfaces.add(iface); + mActiveAlerts.put(iface, alertBytes); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); } @@ -1039,7 +1092,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (!mBandwidthControlEnabled) return; synchronized (mQuotaLock) { - if (!mActiveAlertIfaces.contains(iface)) { + if (!mActiveAlerts.containsKey(iface)) { // TODO: eventually consider throwing return; } @@ -1047,7 +1100,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub try { // TODO: support alert shared across interfaces mConnector.execute("bandwidth", "removeinterfacealert", iface); - mActiveAlertIfaces.remove(iface); + mActiveAlerts.remove(iface); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); } @@ -1077,7 +1130,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub // TODO: eventually migrate to be always enabled if (!mBandwidthControlEnabled) return; - synchronized (mUidRejectOnQuota) { + synchronized (mQuotaLock) { final boolean oldRejectOnQuota = mUidRejectOnQuota.get(uid, false); if (oldRejectOnQuota == rejectOnQuotaInterfaces) { // TODO: eventually consider throwing @@ -1272,8 +1325,8 @@ public class NetworkManagementService extends INetworkManagementService.Stub pw.print("Bandwidth control enabled: "); pw.println(mBandwidthControlEnabled); synchronized (mQuotaLock) { - pw.print("Active quota ifaces: "); pw.println(mActiveQuotaIfaces.toString()); - pw.print("Active alert ifaces: "); pw.println(mActiveAlertIfaces.toString()); + pw.print("Active quota ifaces: "); pw.println(mActiveQuotas.toString()); + pw.print("Active alert ifaces: "); pw.println(mActiveAlerts.toString()); } synchronized (mUidRejectOnQuota) { diff --git a/services/java/com/android/server/NetworkTimeUpdateService.java b/services/java/com/android/server/NetworkTimeUpdateService.java index 1ff914f2afd2..76972bce8f84 100644 --- a/services/java/com/android/server/NetworkTimeUpdateService.java +++ b/services/java/com/android/server/NetworkTimeUpdateService.java @@ -165,9 +165,15 @@ public class NetworkTimeUpdateService { if (mTime.getCacheAge() < POLLING_INTERVAL_MS) { final long ntp = mTime.currentTimeMillis(); mTryAgainCounter = 0; - mLastNtpFetchTime = SystemClock.elapsedRealtime(); - if (Math.abs(ntp - currentTime) > TIME_ERROR_THRESHOLD_MS) { + // If the clock is more than N seconds off or this is the first time it's been + // fetched since boot, set the current time. + if (Math.abs(ntp - currentTime) > TIME_ERROR_THRESHOLD_MS + || mLastNtpFetchTime == NOT_SET) { // Set the system time + if (DBG && mLastNtpFetchTime == NOT_SET + && Math.abs(ntp - currentTime) <= TIME_ERROR_THRESHOLD_MS) { + Log.d(TAG, "For initial setup, rtc = " + currentTime); + } if (DBG) Log.d(TAG, "Ntp time to be set = " + ntp); // Make sure we don't overflow, since it's going to be converted to an int if (ntp / 1000 < Integer.MAX_VALUE) { @@ -176,6 +182,7 @@ public class NetworkTimeUpdateService { } else { if (DBG) Log.d(TAG, "Ntp time is close enough = " + ntp); } + mLastNtpFetchTime = SystemClock.elapsedRealtime(); } else { // Try again shortly mTryAgainCounter++; diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java index 1ba7e792c77a..663a0316dbee 100755 --- a/services/java/com/android/server/NotificationManagerService.java +++ b/services/java/com/android/server/NotificationManagerService.java @@ -16,16 +16,15 @@ package com.android.server; -import com.android.internal.os.AtomicFile; -import com.android.internal.statusbar.StatusBarNotification; -import com.android.internal.util.FastXmlSerializer; +import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; +import static org.xmlpull.v1.XmlPullParser.END_TAG; +import static org.xmlpull.v1.XmlPullParser.START_TAG; import android.app.ActivityManagerNative; import android.app.IActivityManager; import android.app.INotificationManager; import android.app.ITransientNotification; import android.app.Notification; -import android.app.NotificationManager; import android.app.PendingIntent; import android.app.StatusBarManager; import android.content.BroadcastReceiver; @@ -39,8 +38,8 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.database.ContentObserver; import android.media.AudioManager; -import android.net.NetworkPolicy; -import android.net.NetworkTemplate; +import android.media.IAudioService; +import android.media.IRingtonePlayer; import android.net.Uri; import android.os.Binder; import android.os.Handler; @@ -48,6 +47,7 @@ import android.os.IBinder; import android.os.Message; import android.os.Process; import android.os.RemoteException; +import android.os.ServiceManager; import android.os.UserId; import android.os.Vibrator; import android.provider.Settings; @@ -61,6 +61,14 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.widget.Toast; +import com.android.internal.os.AtomicFile; +import com.android.internal.statusbar.StatusBarNotification; +import com.android.internal.util.FastXmlSerializer; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; @@ -74,18 +82,6 @@ import java.util.HashSet; import libcore.io.IoUtils; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; - -import static android.net.NetworkPolicyManager.POLICY_NONE; -import static com.android.server.net.NetworkPolicyManagerService.XmlUtils.writeBooleanAttribute; -import static com.android.server.net.NetworkPolicyManagerService.XmlUtils.writeIntAttribute; -import static com.android.server.net.NetworkPolicyManagerService.XmlUtils.writeLongAttribute; -import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; -import static org.xmlpull.v1.XmlPullParser.END_TAG; -import static org.xmlpull.v1.XmlPullParser.START_TAG; - /** {@hide} */ public class NotificationManagerService extends INotificationManager.Stub @@ -126,12 +122,13 @@ public class NotificationManagerService extends INotificationManager.Stub private int mDefaultNotificationLedOn; private int mDefaultNotificationLedOff; - private NotificationRecord mSoundNotification; - private NotificationPlayer mSound; private boolean mSystemReady; private int mDisabledNotifications; + private NotificationRecord mSoundNotification; private NotificationRecord mVibrateNotification; + + private IAudioService mAudioService; private Vibrator mVibrator; // for enabling and disabling notification pulse behavior @@ -409,17 +406,19 @@ public class NotificationManagerService extends INotificationManager.Stub // cancel whatever's going on long identity = Binder.clearCallingIdentity(); try { - mSound.stop(); - } - finally { + final IRingtonePlayer player = mAudioService.getRingtonePlayer(); + if (player != null) { + player.stopAsync(); + } + } catch (RemoteException e) { + } finally { Binder.restoreCallingIdentity(identity); } identity = Binder.clearCallingIdentity(); try { mVibrator.cancel(); - } - finally { + } finally { Binder.restoreCallingIdentity(identity); } } @@ -445,11 +444,15 @@ public class NotificationManagerService extends INotificationManager.Stub synchronized (mNotificationList) { // sound mSoundNotification = null; + long identity = Binder.clearCallingIdentity(); try { - mSound.stop(); - } - finally { + final IRingtonePlayer player = mAudioService.getRingtonePlayer(); + if (player != null) { + player.stopAsync(); + } + } catch (RemoteException e) { + } finally { Binder.restoreCallingIdentity(identity); } @@ -458,8 +461,7 @@ public class NotificationManagerService extends INotificationManager.Stub identity = Binder.clearCallingIdentity(); try { mVibrator.cancel(); - } - finally { + } finally { Binder.restoreCallingIdentity(identity); } @@ -570,8 +572,6 @@ public class NotificationManagerService extends INotificationManager.Stub mContext = context; mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE); mAm = ActivityManagerNative.getDefault(); - mSound = new NotificationPlayer(TAG); - mSound.setUsesWakeLock(context); mToastQueue = new ArrayList<ToastRecord>(); mHandler = new WorkerHandler(); @@ -622,6 +622,9 @@ public class NotificationManagerService extends INotificationManager.Stub } void systemReady() { + mAudioService = IAudioService.Stub.asInterface( + ServiceManager.getService(Context.AUDIO_SERVICE)); + // no beeping until we're basically done booting mSystemReady = true; } @@ -1026,11 +1029,14 @@ public class NotificationManagerService extends INotificationManager.Stub // do not play notifications if stream volume is 0 // (typically because ringer mode is silent). if (audioManager.getStreamVolume(audioStreamType) != 0) { - long identity = Binder.clearCallingIdentity(); + final long identity = Binder.clearCallingIdentity(); try { - mSound.play(mContext, uri, looping, audioStreamType); - } - finally { + final IRingtonePlayer player = mAudioService.getRingtonePlayer(); + if (player != null) { + player.playAsync(uri, looping, audioStreamType); + } + } catch (RemoteException e) { + } finally { Binder.restoreCallingIdentity(identity); } } @@ -1121,11 +1127,14 @@ public class NotificationManagerService extends INotificationManager.Stub // sound if (mSoundNotification == r) { mSoundNotification = null; - long identity = Binder.clearCallingIdentity(); + final long identity = Binder.clearCallingIdentity(); try { - mSound.stop(); - } - finally { + final IRingtonePlayer player = mAudioService.getRingtonePlayer(); + if (player != null) { + player.stopAsync(); + } + } catch (RemoteException e) { + } finally { Binder.restoreCallingIdentity(identity); } } @@ -1386,7 +1395,6 @@ public class NotificationManagerService extends INotificationManager.Stub } pw.println(" mSoundNotification=" + mSoundNotification); - pw.println(" mSound=" + mSound); pw.println(" mVibrateNotification=" + mVibrateNotification); pw.println(" mDisabledNotifications=0x" + Integer.toHexString(mDisabledNotifications)); pw.println(" mSystemReady=" + mSystemReady); diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 9a371c6c5539..5799f2b7beb1 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -2521,7 +2521,8 @@ public class PowerManagerService extends IPowerManager.Stub return val; } catch (Exception e) { // guard against null pointer or index out of bounds errors - Slog.e(TAG, "getAutoBrightnessValue", e); + Slog.e(TAG, "Values array must be non-empty and must be one element longer than " + + "the auto-brightness levels array. Check config.xml.", e); return 255; } } @@ -2708,6 +2709,12 @@ public class PowerManagerService extends IPowerManager.Stub } private void goToSleepLocked(long time, int reason) { + if (mSpew) { + Exception ex = new Exception(); + ex.fillInStackTrace(); + Slog.d(TAG, "goToSleep mLastEventTime=" + mLastEventTime + " time=" + time + + " reason=" + reason, ex); + } if (mLastEventTime <= time) { mLastEventTime = time; diff --git a/services/java/com/android/server/SamplingProfilerService.java b/services/java/com/android/server/SamplingProfilerService.java index 61267d07b18c..0034d2c342f0 100644 --- a/services/java/com/android/server/SamplingProfilerService.java +++ b/services/java/com/android/server/SamplingProfilerService.java @@ -39,9 +39,11 @@ public class SamplingProfilerService extends Binder { private static final boolean LOCAL_LOGV = false; public static final String SNAPSHOT_DIR = SamplingProfilerIntegration.SNAPSHOT_DIR; + private final Context mContext; private FileObserver snapshotObserver; public SamplingProfilerService(Context context) { + mContext = context; registerSettingObserver(context); startWorking(context); } @@ -94,6 +96,8 @@ public class SamplingProfilerService extends Binder { @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG); + pw.println("SamplingProfilerService:"); pw.println("Watching directory: " + SNAPSHOT_DIR); } diff --git a/services/java/com/android/server/ThrottleService.java b/services/java/com/android/server/ThrottleService.java index 215514785425..f35a5af6e8b6 100644 --- a/services/java/com/android/server/ThrottleService.java +++ b/services/java/com/android/server/ThrottleService.java @@ -511,7 +511,7 @@ public class ThrottleService extends IThrottleManager.Stub { long incRead = 0; long incWrite = 0; try { - final NetworkStats stats = mNMService.getNetworkStatsSummary(); + final NetworkStats stats = mNMService.getNetworkStatsSummaryDev(); final int index = stats.findIndex(mIface, NetworkStats.UID_ALL, NetworkStats.SET_DEFAULT, NetworkStats.TAG_NONE); diff --git a/services/java/com/android/server/VibratorService.java b/services/java/com/android/server/VibratorService.java index 6282c31ce97d..b6098675b5dc 100755 --- a/services/java/com/android/server/VibratorService.java +++ b/services/java/com/android/server/VibratorService.java @@ -391,9 +391,15 @@ public class VibratorService extends IVibratorService.Stub } private boolean doVibratorExists() { - synchronized (mInputDeviceVibrators) { - return !mInputDeviceVibrators.isEmpty() || vibratorExists(); - } + // For now, we choose to ignore the presence of input devices that have vibrators + // when reporting whether the device has a vibrator. Applications often use this + // information to decide whether to enable certain features so they expect the + // result of hasVibrator() to be constant. For now, just report whether + // the device has a built-in vibrator. + //synchronized (mInputDeviceVibrators) { + // return !mInputDeviceVibrators.isEmpty() || vibratorExists(); + //} + return vibratorExists(); } private void doVibratorOn(long millis) { diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 01ddf1fda257..8d454ceae2c1 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1731,8 +1731,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private static final int RETRIEVAL_ALLOWING_WINDOW_CHANGE_EVENT_TYPES = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED | AccessibilityEvent.TYPE_VIEW_HOVER_ENTER - | AccessibilityEvent.TYPE_VIEW_HOVER_EXIT - | AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED; + | AccessibilityEvent.TYPE_VIEW_HOVER_EXIT; private int mRetrievalAlowingWindowId; @@ -1765,8 +1764,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub Bundle arguments) { return canRetrieveWindowContent(service) && isRetrievalAllowingWindow(windowId) - && isActionPermitted(action) - && isActionArgumentsValid(action, arguments); + && isActionPermitted(action); } public boolean canRetrieveWindowContent(Service service) { @@ -1790,29 +1788,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return (VALID_ACTIONS & action) != 0; } - private boolean isActionArgumentsValid(int action, Bundle arguments) { - switch (action) { - case AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY: - case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY: { - if (arguments.size() == 1) { - final int granularity = arguments.getInt( - AccessibilityNodeInfo.ACTION_ARGUMENT_GRANULARITY_INT); - return (granularity & VALID_GRANULARITIES) != 0 - && Integer.bitCount(granularity) == 1; - } - } break; - case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT: - case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT: { - if (arguments.size() == 1) { - String element = arguments.getString( - AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING); - return !TextUtils.isEmpty(element); - } - } break; - } - return false; - } - private void enforceCallingPermission(String permission, String function) { if (OWN_PROCESS_ID == Binder.getCallingPid()) { return; diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 6c99cdb955e4..4b40107dfa49 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -2697,26 +2697,18 @@ public final class ActivityManagerService extends ActivityManagerNative public final void finishSubActivity(IBinder token, String resultWho, int requestCode) { synchronized(this) { - ActivityRecord self = mMainStack.isInStackLocked(token); - if (self == null) { - return; - } - final long origId = Binder.clearCallingIdentity(); + mMainStack.finishSubActivityLocked(token, resultWho, requestCode); + Binder.restoreCallingIdentity(origId); + } + } - int i; - for (i=mMainStack.mHistory.size()-1; i>=0; i--) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - if (r.resultTo == self && r.requestCode == requestCode) { - if ((r.resultWho == null && resultWho == null) || - (r.resultWho != null && r.resultWho.equals(resultWho))) { - mMainStack.finishActivityLocked(r, i, - Activity.RESULT_CANCELED, null, "request-sub"); - } - } - } - + public boolean finishActivityAffinity(IBinder token) { + synchronized(this) { + final long origId = Binder.clearCallingIdentity(); + boolean res = mMainStack.finishActivityAffinityLocked(token); Binder.restoreCallingIdentity(origId); + return res; } } @@ -4115,12 +4107,17 @@ public final class ActivityManagerService extends ActivityManagerNative public void dismissKeyguardOnNextActivity() { enforceNotIsolatedCaller("dismissKeyguardOnNextActivity"); - synchronized (this) { - if (mLockScreenShown) { - mLockScreenShown = false; - comeOutOfSleepIfNeededLocked(); + final long token = Binder.clearCallingIdentity(); + try { + synchronized (this) { + if (mLockScreenShown) { + mLockScreenShown = false; + comeOutOfSleepIfNeededLocked(); + } + mMainStack.dismissKeyguardOnNextActivityLocked(); } - mMainStack.dismissKeyguardOnNextActivityLocked(); + } finally { + Binder.restoreCallingIdentity(token); } } @@ -4384,7 +4381,8 @@ public final class ActivityManagerService extends ActivityManagerNative if (!cancelCurrent) { if (updateCurrent) { if (rec.key.requestIntent != null) { - rec.key.requestIntent.replaceExtras(intents != null ? intents[0] : null); + rec.key.requestIntent.replaceExtras(intents != null ? + intents[intents.length - 1] : null); } if (intents != null) { intents[intents.length-1] = rec.key.requestIntent; @@ -8058,8 +8056,10 @@ public final class ActivityManagerService extends ActivityManagerNative } }; - if (process == null || process.pid == MY_PID) { - worker.run(); // We may be about to die -- need to run this synchronously + if (process == null) { + // If process is null, we are being called from some internal code + // and may be about to die -- run this synchronously. + worker.run(); } else { worker.start(); } diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index c8e015b176bd..25fae830820c 100755 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -3497,6 +3497,51 @@ final class ActivityStack { return true; } + final void finishSubActivityLocked(IBinder token, String resultWho, int requestCode) { + ActivityRecord self = isInStackLocked(token); + if (self == null) { + return; + } + + int i; + for (i=mHistory.size()-1; i>=0; i--) { + ActivityRecord r = (ActivityRecord)mHistory.get(i); + if (r.resultTo == self && r.requestCode == requestCode) { + if ((r.resultWho == null && resultWho == null) || + (r.resultWho != null && r.resultWho.equals(resultWho))) { + finishActivityLocked(r, i, + Activity.RESULT_CANCELED, null, "request-sub"); + } + } + } + } + + final boolean finishActivityAffinityLocked(IBinder token) { + int index = indexOfTokenLocked(token); + if (DEBUG_RESULTS) Slog.v( + TAG, "Finishing activity affinity @" + index + ": token=" + token); + if (index < 0) { + return false; + } + ActivityRecord r = mHistory.get(index); + + while (index > 0) { + ActivityRecord cur = mHistory.get(index); + if (cur.task != r.task) { + break; + } + if (cur.taskAffinity == null && r.taskAffinity != null) { + break; + } + if (cur.taskAffinity != null && !cur.taskAffinity.equals(r.taskAffinity)) { + break; + } + finishActivityLocked(cur, index, Activity.RESULT_CANCELED, null, "request-affinity"); + index--; + } + return true; + } + final void finishActivityResultsLocked(ActivityRecord r, int resultCode, Intent resultData) { // send the result ActivityRecord resultTo = r.resultTo; diff --git a/services/java/com/android/server/input/InputManagerService.java b/services/java/com/android/server/input/InputManagerService.java index 189a9c726746..299649db0ae5 100644 --- a/services/java/com/android/server/input/InputManagerService.java +++ b/services/java/com/android/server/input/InputManagerService.java @@ -140,7 +140,8 @@ public class InputManagerService extends IInputManager.Stub implements Watchdog. private static native void nativeStart(int ptr); private static native void nativeSetDisplaySize(int ptr, int displayId, int width, int height, int externalWidth, int externalHeight); - private static native void nativeSetDisplayOrientation(int ptr, int displayId, int rotation); + private static native void nativeSetDisplayOrientation(int ptr, int displayId, + int rotation, int externalRotation); private static native int nativeGetScanCodeState(int ptr, int deviceId, int sourceMask, int scanCode); @@ -162,7 +163,6 @@ public class InputManagerService extends IInputManager.Stub implements Watchdog. private static native void nativeSetSystemUiVisibility(int ptr, int visibility); private static native void nativeSetFocusedApplication(int ptr, InputApplicationHandle application); - private static native void nativeGetInputConfiguration(int ptr, Configuration configuration); private static native boolean nativeTransferTouchFocus(int ptr, InputChannel fromChannel, InputChannel toChannel); private static native void nativeSetPointerSpeed(int ptr, int speed); @@ -199,6 +199,15 @@ public class InputManagerService extends IInputManager.Stub implements Watchdog. /** The key is down but is a virtual key press that is being emulated by the system. */ public static final int KEY_STATE_VIRTUAL = 2; + /** Scan code: Mouse / trackball button. */ + public static final int BTN_MOUSE = 0x110; + + /** Switch code: Lid switch. When set, lid is shut. */ + public static final int SW_LID = 0x00; + + /** Switch code: Keypad slide. When set, keyboard is exposed. */ + public static final int SW_KEYPAD_SLIDE = 0x0a; + public InputManagerService(Context context, Callbacks callbacks) { this.mContext = context; this.mCallbacks = callbacks; @@ -279,23 +288,16 @@ public class InputManagerService extends IInputManager.Stub implements Watchdog. nativeSetDisplaySize(mPtr, displayId, width, height, externalWidth, externalHeight); } - public void setDisplayOrientation(int displayId, int rotation) { + public void setDisplayOrientation(int displayId, int rotation, int externalRotation) { if (rotation < Surface.ROTATION_0 || rotation > Surface.ROTATION_270) { throw new IllegalArgumentException("Invalid rotation."); } if (DEBUG) { - Slog.d(TAG, "Setting display #" + displayId + " orientation to " + rotation); + Slog.d(TAG, "Setting display #" + displayId + " orientation to rotation " + rotation + + " external rotation " + externalRotation); } - nativeSetDisplayOrientation(mPtr, displayId, rotation); - } - - public void getInputConfiguration(Configuration config) { - if (config == null) { - throw new IllegalArgumentException("config must not be null."); - } - - nativeGetInputConfiguration(mPtr, config); + nativeSetDisplayOrientation(mPtr, displayId, rotation, externalRotation); } /** @@ -513,6 +515,16 @@ public class InputManagerService extends IInputManager.Stub implements Watchdog. } } + /** + * Gets all input devices in the system. + * @return The array of input devices. + */ + public InputDevice[] getInputDevices() { + synchronized (mInputDevicesLock) { + return mInputDevices; + } + } + @Override // Binder call public void registerInputDevicesChangedListener(IInputDevicesChangedListener listener) { if (listener == null) { diff --git a/services/java/com/android/server/net/NetworkPolicyManagerService.java b/services/java/com/android/server/net/NetworkPolicyManagerService.java index f873b6ccce7a..1b8c9cb24fd3 100644 --- a/services/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/java/com/android/server/net/NetworkPolicyManagerService.java @@ -118,6 +118,7 @@ import android.telephony.TelephonyManager; import android.text.format.Formatter; import android.text.format.Time; import android.util.Log; +import android.util.MathUtils; import android.util.NtpTrustedTime; import android.util.Slog; import android.util.SparseArray; @@ -166,7 +167,7 @@ import libcore.io.IoUtils; */ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final String TAG = "NetworkPolicy"; - private static final boolean LOGD = true; + private static final boolean LOGD = false; private static final boolean LOGV = false; private static final int VERSION_INIT = 1; @@ -318,6 +319,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } public void systemReady() { + if (!isBandwidthControlEnabled()) { + Slog.w(TAG, "bandwidth controls disabled, unable to enforce policy"); + return; + } + synchronized (mRulesLock) { // read policy from disk readPolicyLocked(); @@ -500,12 +506,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { if (reason == CHANGE_REASON_REMOVED) { final WifiConfiguration config = intent.getParcelableExtra( EXTRA_WIFI_CONFIGURATION); - final NetworkTemplate template = NetworkTemplate.buildTemplateWifi( - removeDoubleQuotes(config.SSID)); - synchronized (mRulesLock) { - if (mNetworkPolicy.containsKey(template)) { - mNetworkPolicy.remove(template); - writePolicyLocked(); + if (config.SSID != null) { + final NetworkTemplate template = NetworkTemplate.buildTemplateWifi( + removeDoubleQuotes(config.SSID)); + synchronized (mRulesLock) { + if (mNetworkPolicy.containsKey(template)) { + mNetworkPolicy.remove(template); + writePolicyLocked(); + } } } } @@ -960,6 +968,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + long lowestRule = Long.MAX_VALUE; final HashSet<String> newMeteredIfaces = Sets.newHashSet(); // apply each policy that we found ifaces for; compute remaining data @@ -983,6 +992,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { + Arrays.toString(ifaces)); } + final boolean hasWarning = policy.warningBytes != LIMIT_DISABLED; final boolean hasLimit = policy.limitBytes != LIMIT_DISABLED; if (hasLimit || policy.metered) { final long quotaBytes; @@ -1012,6 +1022,23 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { newMeteredIfaces.add(iface); } } + + // keep track of lowest warning or limit of active policies + if (hasWarning && policy.warningBytes < lowestRule) { + lowestRule = policy.warningBytes; + } + if (hasLimit && policy.limitBytes < lowestRule) { + lowestRule = policy.limitBytes; + } + } + + try { + // make sure stats are recorded frequently enough; we aim for 2MB + // threshold for 2GB/month rules. + final long persistThreshold = lowestRule / 1000; + mNetworkStats.advisePersistThreshold(persistThreshold); + } catch (RemoteException e) { + // ignored; service lives in system_server } // remove quota on any trailing interfaces @@ -1495,6 +1522,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { public boolean isNetworkMetered(NetworkState state) { final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state); + // roaming networks are always considered metered + if (ident.getRoaming()) { + return true; + } + final NetworkPolicy policy; synchronized (mRulesLock) { policy = findPolicyForNetworkLocked(ident); @@ -1890,6 +1922,18 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + private boolean isBandwidthControlEnabled() { + final long token = Binder.clearCallingIdentity(); + try { + return mNetworkManager.isBandwidthControlEnabled(); + } catch (RemoteException e) { + // ignored; service lives in system_server + return false; + } finally { + Binder.restoreCallingIdentity(token); + } + } + /** * Try refreshing {@link #mTime} when stale. */ diff --git a/services/java/com/android/server/net/NetworkStatsCollection.java b/services/java/com/android/server/net/NetworkStatsCollection.java index 2892a74845d4..c2e475a5b4ea 100644 --- a/services/java/com/android/server/net/NetworkStatsCollection.java +++ b/services/java/com/android/server/net/NetworkStatsCollection.java @@ -186,12 +186,12 @@ public class NetworkStatsCollection implements FileRotator.Reader { if (history.size() == 0) return; noteRecordedHistory(history.getStart(), history.getEnd(), history.getTotalBytes()); - final NetworkStatsHistory existing = mStats.get(key); - if (existing != null) { - existing.recordEntireHistory(history); - } else { - mStats.put(key, history); + NetworkStatsHistory target = mStats.get(key); + if (target == null) { + target = new NetworkStatsHistory(history.getBucketDuration()); + mStats.put(key, target); } + target.recordEntireHistory(history); } /** diff --git a/services/java/com/android/server/net/NetworkStatsRecorder.java b/services/java/com/android/server/net/NetworkStatsRecorder.java index 57ad158bf26f..2ce777113556 100644 --- a/services/java/com/android/server/net/NetworkStatsRecorder.java +++ b/services/java/com/android/server/net/NetworkStatsRecorder.java @@ -17,6 +17,8 @@ package com.android.server.net; import static android.net.NetworkStats.TAG_NONE; +import static android.net.TrafficStats.KB_IN_BYTES; +import static android.net.TrafficStats.MB_IN_BYTES; import static com.android.internal.util.Preconditions.checkNotNull; import android.net.NetworkStats; @@ -25,6 +27,7 @@ import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; import android.net.TrafficStats; import android.util.Log; +import android.util.MathUtils; import android.util.Slog; import com.android.internal.util.FileRotator; @@ -58,9 +61,9 @@ public class NetworkStatsRecorder { private final String mCookie; private final long mBucketDuration; - private final long mPersistThresholdBytes; private final boolean mOnlyTags; + private long mPersistThresholdBytes = 2 * MB_IN_BYTES; private NetworkStats mLastSnapshot; private final NetworkStatsCollection mPending; @@ -71,13 +74,12 @@ public class NetworkStatsRecorder { private WeakReference<NetworkStatsCollection> mComplete; public NetworkStatsRecorder(FileRotator rotator, NonMonotonicObserver<String> observer, - String cookie, long bucketDuration, long persistThresholdBytes, boolean onlyTags) { + String cookie, long bucketDuration, boolean onlyTags) { mRotator = checkNotNull(rotator, "missing FileRotator"); mObserver = checkNotNull(observer, "missing NonMonotonicObserver"); mCookie = cookie; mBucketDuration = bucketDuration; - mPersistThresholdBytes = persistThresholdBytes; mOnlyTags = onlyTags; mPending = new NetworkStatsCollection(bucketDuration); @@ -86,6 +88,12 @@ public class NetworkStatsRecorder { mPendingRewriter = new CombiningRewriter(mPending); } + public void setPersistThreshold(long thresholdBytes) { + if (LOGV) Slog.v(TAG, "setPersistThreshold() with " + thresholdBytes); + mPersistThresholdBytes = MathUtils.constrain( + thresholdBytes, 1 * KB_IN_BYTES, 100 * MB_IN_BYTES); + } + public void resetLocked() { mLastSnapshot = null; mPending.reset(); @@ -128,6 +136,9 @@ public class NetworkStatsRecorder { Map<String, NetworkIdentitySet> ifaceIdent, long currentTimeMillis) { final HashSet<String> unknownIfaces = Sets.newHashSet(); + // skip recording when snapshot missing + if (snapshot == null) return; + // assume first snapshot is bootstrap and don't record if (mLastSnapshot == null) { mLastSnapshot = snapshot; @@ -150,7 +161,7 @@ public class NetworkStatsRecorder { continue; } - // skip when no delta occured + // skip when no delta occurred if (entry.isEmpty()) continue; // only record tag data when requested diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java index 1c3e24f7e521..a9d4b596220f 100644 --- a/services/java/com/android/server/net/NetworkStatsService.java +++ b/services/java/com/android/server/net/NetworkStatsService.java @@ -36,6 +36,7 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.NetworkTemplate.buildTemplateMobileWildcard; import static android.net.NetworkTemplate.buildTemplateWifiWildcard; +import static android.net.TrafficStats.KB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; import static android.provider.Settings.Secure.NETSTATS_DEV_BUCKET_DURATION; import static android.provider.Settings.Secure.NETSTATS_DEV_DELETE_AGE; @@ -49,6 +50,10 @@ import static android.provider.Settings.Secure.NETSTATS_UID_BUCKET_DURATION; import static android.provider.Settings.Secure.NETSTATS_UID_DELETE_AGE; import static android.provider.Settings.Secure.NETSTATS_UID_PERSIST_BYTES; import static android.provider.Settings.Secure.NETSTATS_UID_ROTATE_AGE; +import static android.provider.Settings.Secure.NETSTATS_UID_TAG_BUCKET_DURATION; +import static android.provider.Settings.Secure.NETSTATS_UID_TAG_DELETE_AGE; +import static android.provider.Settings.Secure.NETSTATS_UID_TAG_PERSIST_BYTES; +import static android.provider.Settings.Secure.NETSTATS_UID_TAG_ROTATE_AGE; import static android.telephony.PhoneStateListener.LISTEN_DATA_CONNECTION_STATE; import static android.telephony.PhoneStateListener.LISTEN_NONE; import static android.text.format.DateUtils.DAY_IN_MILLIS; @@ -94,10 +99,12 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.SystemClock; import android.provider.Settings; +import android.provider.Settings.Secure; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.EventLog; import android.util.Log; +import android.util.MathUtils; import android.util.NtpTrustedTime; import android.util.Slog; import android.util.SparseIntArray; @@ -159,6 +166,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private PendingIntent mPollIntent; private static final String PREFIX_DEV = "dev"; + private static final String PREFIX_XT = "xt"; private static final String PREFIX_UID = "uid"; private static final String PREFIX_UID_TAG = "uid_tag"; @@ -168,27 +176,30 @@ public class NetworkStatsService extends INetworkStatsService.Stub { public interface NetworkStatsSettings { public long getPollInterval(); public long getTimeCacheMaxAge(); - public long getGlobalAlertBytes(); public boolean getSampleEnabled(); public static class Config { public final long bucketDuration; - public final long persistBytes; public final long rotateAgeMillis; public final long deleteAgeMillis; - public Config(long bucketDuration, long persistBytes, long rotateAgeMillis, - long deleteAgeMillis) { + public Config(long bucketDuration, long rotateAgeMillis, long deleteAgeMillis) { this.bucketDuration = bucketDuration; - this.persistBytes = persistBytes; this.rotateAgeMillis = rotateAgeMillis; this.deleteAgeMillis = deleteAgeMillis; } } public Config getDevConfig(); + public Config getXtConfig(); public Config getUidConfig(); public Config getUidTagConfig(); + + public long getGlobalAlertBytes(long def); + public long getDevPersistBytes(long def); + public long getXtPersistBytes(long def); + public long getUidPersistBytes(long def); + public long getUidTagPersistBytes(long def); } private final Object mStatsLock = new Object(); @@ -204,6 +215,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { new DropBoxNonMonotonicObserver(); private NetworkStatsRecorder mDevRecorder; + private NetworkStatsRecorder mXtRecorder; private NetworkStatsRecorder mUidRecorder; private NetworkStatsRecorder mUidTagRecorder; @@ -220,6 +232,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final Handler mHandler; private boolean mSystemReady; + private long mPersistThreshold = 2 * MB_IN_BYTES; + private long mGlobalAlertBytes; public NetworkStatsService( Context context, INetworkManagementService networkManager, IAlarmManager alarmManager) { @@ -268,9 +282,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // create data recorders along with historical rotators mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false); + mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false); mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false); mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true); + updatePersistThresholds(); + synchronized (mStatsLock) { // upgrade any legacy stats, migrating them to rotated files maybeUpgradeLegacyStatsLocked(); @@ -321,10 +338,9 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private NetworkStatsRecorder buildRecorder( String prefix, NetworkStatsSettings.Config config, boolean includeTags) { - return new NetworkStatsRecorder( - new FileRotator(mBaseDir, prefix, config.rotateAgeMillis, config.deleteAgeMillis), - mNonMonotonicObserver, prefix, config.bucketDuration, config.persistBytes, - includeTags); + return new NetworkStatsRecorder(new FileRotator( + mBaseDir, prefix, config.rotateAgeMillis, config.deleteAgeMillis), + mNonMonotonicObserver, prefix, config.bucketDuration, includeTags); } private void shutdownLocked() { @@ -343,10 +359,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // persist any pending stats mDevRecorder.forcePersistLocked(currentTime); + mXtRecorder.forcePersistLocked(currentTime); mUidRecorder.forcePersistLocked(currentTime); mUidTagRecorder.forcePersistLocked(currentTime); mDevRecorder = null; + mXtRecorder = null; mUidRecorder = null; mUidTagRecorder = null; @@ -408,8 +426,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { */ private void registerGlobalAlert() { try { - final long alertBytes = mSettings.getGlobalAlertBytes(); - mNetworkManager.setGlobalAlert(alertBytes); + mNetworkManager.setGlobalAlert(mGlobalAlertBytes); } catch (IllegalStateException e) { Slog.w(TAG, "problem registering for global alert: " + e); } catch (RemoteException e) { @@ -431,14 +448,18 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private NetworkStatsCollection getUidComplete() { if (mUidComplete == null) { - mUidComplete = mUidRecorder.getOrLoadCompleteLocked(); + synchronized (mStatsLock) { + mUidComplete = mUidRecorder.getOrLoadCompleteLocked(); + } } return mUidComplete; } private NetworkStatsCollection getUidTagComplete() { if (mUidTagComplete == null) { - mUidTagComplete = mUidTagRecorder.getOrLoadCompleteLocked(); + synchronized (mStatsLock) { + mUidTagComplete = mUidTagRecorder.getOrLoadCompleteLocked(); + } } return mUidTagComplete; } @@ -578,6 +599,45 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } + @Override + public void advisePersistThreshold(long thresholdBytes) { + mContext.enforceCallingOrSelfPermission(MODIFY_NETWORK_ACCOUNTING, TAG); + assertBandwidthControlEnabled(); + + // clamp threshold into safe range + mPersistThreshold = MathUtils.constrain(thresholdBytes, 128 * KB_IN_BYTES, 2 * MB_IN_BYTES); + updatePersistThresholds(); + + if (LOGV) { + Slog.v(TAG, "advisePersistThreshold() given " + thresholdBytes + ", clamped to " + + mPersistThreshold); + } + + // persist if beyond new thresholds + final long currentTime = mTime.hasCache() ? mTime.currentTimeMillis() + : System.currentTimeMillis(); + mDevRecorder.maybePersistLocked(currentTime); + mXtRecorder.maybePersistLocked(currentTime); + mUidRecorder.maybePersistLocked(currentTime); + mUidTagRecorder.maybePersistLocked(currentTime); + + // re-arm global alert + registerGlobalAlert(); + } + + /** + * Update {@link NetworkStatsRecorder} and {@link #mGlobalAlertBytes} to + * reflect current {@link #mPersistThreshold} value. Always defers to + * {@link Secure} values when defined. + */ + private void updatePersistThresholds() { + mDevRecorder.setPersistThreshold(mSettings.getDevPersistBytes(mPersistThreshold)); + mXtRecorder.setPersistThreshold(mSettings.getXtPersistBytes(mPersistThreshold)); + mUidRecorder.setPersistThreshold(mSettings.getUidPersistBytes(mPersistThreshold)); + mUidTagRecorder.setPersistThreshold(mSettings.getUidTagPersistBytes(mPersistThreshold)); + mGlobalAlertBytes = mSettings.getGlobalAlertBytes(mPersistThreshold); + } + /** * Receiver that watches for {@link IConnectivityManager} to claim network * interfaces. Used to associate {@link TelephonyManager#getSubscriberId()} @@ -772,9 +832,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // snapshot and record current counters; read UID stats first to // avoid overcounting dev stats. final NetworkStats uidSnapshot = getNetworkStatsUidDetail(); - final NetworkStats devSnapshot = getNetworkStatsSummary(); + final NetworkStats xtSnapshot = mNetworkManager.getNetworkStatsSummaryXt(); + final NetworkStats devSnapshot = mNetworkManager.getNetworkStatsSummaryDev(); mDevRecorder.recordSnapshotLocked(devSnapshot, mActiveIfaces, currentTime); + mXtRecorder.recordSnapshotLocked(xtSnapshot, mActiveIfaces, currentTime); mUidRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime); mUidTagRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime); @@ -824,9 +886,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // snapshot and record current counters; read UID stats first to // avoid overcounting dev stats. final NetworkStats uidSnapshot = getNetworkStatsUidDetail(); - final NetworkStats devSnapshot = getNetworkStatsSummary(); + final NetworkStats xtSnapshot = mNetworkManager.getNetworkStatsSummaryXt(); + final NetworkStats devSnapshot = mNetworkManager.getNetworkStatsSummaryDev(); mDevRecorder.recordSnapshotLocked(devSnapshot, mActiveIfaces, currentTime); + mXtRecorder.recordSnapshotLocked(xtSnapshot, mActiveIfaces, currentTime); mUidRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime); mUidTagRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime); @@ -841,11 +905,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // persist any pending data depending on requested flags if (persistForce) { mDevRecorder.forcePersistLocked(currentTime); + mXtRecorder.forcePersistLocked(currentTime); mUidRecorder.forcePersistLocked(currentTime); mUidTagRecorder.forcePersistLocked(currentTime); } else { if (persistNetwork) { mDevRecorder.maybePersistLocked(currentTime); + mXtRecorder.maybePersistLocked(currentTime); } if (persistUid) { mUidRecorder.maybePersistLocked(currentTime); @@ -884,7 +950,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // collect mobile sample template = buildTemplateMobileWildcard(); devTotal = mDevRecorder.getTotalSinceBootLocked(template); - xtTotal = new NetworkStats.Entry(); + xtTotal = mXtRecorder.getTotalSinceBootLocked(template); uidTotal = mUidRecorder.getTotalSinceBootLocked(template); EventLogTags.writeNetstatsMobileSample( @@ -896,7 +962,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // collect wifi sample template = buildTemplateWifiWildcard(); devTotal = mDevRecorder.getTotalSinceBootLocked(template); - xtTotal = new NetworkStats.Entry(); + xtTotal = mXtRecorder.getTotalSinceBootLocked(template); uidTotal = mUidRecorder.getTotalSinceBootLocked(template); EventLogTags.writeNetstatsWifiSample( @@ -970,6 +1036,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mDevRecorder.dumpLocked(pw, fullHistory); pw.decreaseIndent(); + pw.println("Xt stats:"); + pw.increaseIndent(); + mXtRecorder.dumpLocked(pw, fullHistory); + pw.decreaseIndent(); + if (includeUid) { pw.println("UID stats:"); pw.increaseIndent(); @@ -986,10 +1057,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } - private NetworkStats getNetworkStatsSummary() throws RemoteException { - return mNetworkManager.getNetworkStatsSummary(); - } - /** * Return snapshot of current UID statistics, including any * {@link TrafficStats#UID_TETHERING} and {@link #mUidOperations} values. @@ -1109,36 +1176,50 @@ public class NetworkStatsService extends INetworkStatsService.Stub { return getSecureLong(NETSTATS_TIME_CACHE_MAX_AGE, DAY_IN_MILLIS); } @Override - public long getGlobalAlertBytes() { - return getSecureLong(NETSTATS_GLOBAL_ALERT_BYTES, 2 * MB_IN_BYTES); + public long getGlobalAlertBytes(long def) { + return getSecureLong(NETSTATS_GLOBAL_ALERT_BYTES, def); } @Override public boolean getSampleEnabled() { return getSecureBoolean(NETSTATS_SAMPLE_ENABLED, true); } - @Override public Config getDevConfig() { return new Config(getSecureLong(NETSTATS_DEV_BUCKET_DURATION, HOUR_IN_MILLIS), - getSecureLong(NETSTATS_DEV_PERSIST_BYTES, 2 * MB_IN_BYTES), getSecureLong(NETSTATS_DEV_ROTATE_AGE, 15 * DAY_IN_MILLIS), getSecureLong(NETSTATS_DEV_DELETE_AGE, 90 * DAY_IN_MILLIS)); } - + @Override + public Config getXtConfig() { + return getDevConfig(); + } @Override public Config getUidConfig() { return new Config(getSecureLong(NETSTATS_UID_BUCKET_DURATION, 2 * HOUR_IN_MILLIS), - getSecureLong(NETSTATS_UID_PERSIST_BYTES, 2 * MB_IN_BYTES), getSecureLong(NETSTATS_UID_ROTATE_AGE, 15 * DAY_IN_MILLIS), getSecureLong(NETSTATS_UID_DELETE_AGE, 90 * DAY_IN_MILLIS)); } - @Override public Config getUidTagConfig() { - return new Config(getSecureLong(NETSTATS_UID_BUCKET_DURATION, 2 * HOUR_IN_MILLIS), - getSecureLong(NETSTATS_UID_PERSIST_BYTES, 2 * MB_IN_BYTES), - getSecureLong(NETSTATS_UID_ROTATE_AGE, 5 * DAY_IN_MILLIS), - getSecureLong(NETSTATS_UID_DELETE_AGE, 15 * DAY_IN_MILLIS)); + return new Config(getSecureLong(NETSTATS_UID_TAG_BUCKET_DURATION, 2 * HOUR_IN_MILLIS), + getSecureLong(NETSTATS_UID_TAG_ROTATE_AGE, 5 * DAY_IN_MILLIS), + getSecureLong(NETSTATS_UID_TAG_DELETE_AGE, 15 * DAY_IN_MILLIS)); + } + @Override + public long getDevPersistBytes(long def) { + return getSecureLong(NETSTATS_DEV_PERSIST_BYTES, def); + } + @Override + public long getXtPersistBytes(long def) { + return getDevPersistBytes(def); + } + @Override + public long getUidPersistBytes(long def) { + return getSecureLong(NETSTATS_UID_PERSIST_BYTES, def); + } + @Override + public long getUidTagPersistBytes(long def) { + return getSecureLong(NETSTATS_UID_TAG_PERSIST_BYTES, def); } } } diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 21ae62491605..b5d0b604c22d 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -5863,9 +5863,28 @@ public class PackageManagerService extends IPackageManager.Stub { Log.w(TAG, "Insufficient storage to install"); return; } - // Create the file args now. + + mRet = srcArgs.doPreCopy(); + if (mRet != PackageManager.INSTALL_SUCCEEDED) { + return; + } + mRet = targetArgs.copyApk(mContainerService, false); - targetArgs.doPreInstall(mRet); + if (mRet != PackageManager.INSTALL_SUCCEEDED) { + srcArgs.doPostCopy(uid); + return; + } + + mRet = srcArgs.doPostCopy(uid); + if (mRet != PackageManager.INSTALL_SUCCEEDED) { + return; + } + + mRet = targetArgs.doPreInstall(mRet); + if (mRet != PackageManager.INSTALL_SUCCEEDED) { + return; + } + if (DEBUG_SD_INSTALL) { StringBuilder builder = new StringBuilder(); if (srcArgs != null) { @@ -5936,7 +5955,7 @@ public class PackageManagerService extends IPackageManager.Stub { String nativeLibraryPath) { if (installOnSd(flags) || installForwardLocked(flags)) { return new AsecInstallArgs(fullCodePath, fullResourcePath, nativeLibraryPath, - (flags & PackageManager.INSTALL_EXTERNAL) != 0); + installOnSd(flags), installForwardLocked(flags)); } else { return new FileInstallArgs(fullCodePath, fullResourcePath, nativeLibraryPath); } @@ -5945,9 +5964,10 @@ public class PackageManagerService extends IPackageManager.Stub { // Used by package mover private InstallArgs createInstallArgs(Uri packageURI, int flags, String pkgName, String dataDir) { if (installOnSd(flags) || installForwardLocked(flags)) { - String cid = getNextCodePath(null, pkgName, "/" + AsecInstallArgs.RES_FILE_NAME); - return new AsecInstallArgs(packageURI, cid, - (flags & PackageManager.INSTALL_EXTERNAL) != 0); + String cid = getNextCodePath(packageURI.getPath(), pkgName, "/" + + AsecInstallArgs.RES_FILE_NAME); + return new AsecInstallArgs(packageURI, cid, installOnSd(flags), + installForwardLocked(flags)); } else { return new FileInstallArgs(packageURI, pkgName, dataDir); } @@ -5984,6 +6004,26 @@ public class PackageManagerService extends IPackageManager.Stub { abstract boolean doPostDeleteLI(boolean delete); abstract boolean checkFreeStorage(IMediaContainerService imcs) throws RemoteException; + /** + * Called before the source arguments are copied. This is used mostly + * for MoveParams when it needs to read the source file to put it in the + * destination. + */ + int doPreCopy() { + return PackageManager.INSTALL_SUCCEEDED; + } + + /** + * Called after the source arguments are copied. This is used mostly for + * MoveParams when it needs to read the source file to put it in the + * destination. + * + * @return + */ + int doPostCopy(int uid) { + return PackageManager.INSTALL_SUCCEEDED; + } + protected boolean isFwdLocked() { return (flags & PackageManager.INSTALL_FORWARD_LOCK) != 0; } @@ -6280,8 +6320,9 @@ public class PackageManagerService extends IPackageManager.Stub { } AsecInstallArgs(String fullCodePath, String fullResourcePath, String nativeLibraryPath, - boolean isExternal) { - super(null, null, isExternal ? PackageManager.INSTALL_EXTERNAL : 0, null, null); + boolean isExternal, boolean isForwardLocked) { + super(null, null, (isExternal ? PackageManager.INSTALL_EXTERNAL : 0) + | (isForwardLocked ? PackageManager.INSTALL_FORWARD_LOCK : 0), null, null); // Extract cid from fullCodePath int eidx = fullCodePath.lastIndexOf("/"); String subStr1 = fullCodePath.substring(0, eidx); @@ -6296,8 +6337,9 @@ public class PackageManagerService extends IPackageManager.Stub { setCachePath(PackageHelper.getSdDir(cid)); } - AsecInstallArgs(Uri packageURI, String cid, boolean isExternal) { - super(packageURI, null, isExternal ? PackageManager.INSTALL_EXTERNAL : 0, null, null); + AsecInstallArgs(Uri packageURI, String cid, boolean isExternal, boolean isForwardLocked) { + super(packageURI, null, (isExternal ? PackageManager.INSTALL_EXTERNAL : 0) + | (isForwardLocked ? PackageManager.INSTALL_FORWARD_LOCK : 0), null, null); this.cid = cid; } @@ -6443,8 +6485,18 @@ public class PackageManagerService extends IPackageManager.Stub { if (status != PackageManager.INSTALL_SUCCEEDED) { cleanUp(); } else { + final int groupOwner; + final String protectedFile; + if (isFwdLocked()) { + groupOwner = uid; + protectedFile = RES_FILE_NAME; + } else { + groupOwner = -1; + protectedFile = null; + } + if (uid < Process.FIRST_APPLICATION_UID - || !PackageHelper.fixSdPermissions(cid, uid, RES_FILE_NAME)) { + || !PackageHelper.fixSdPermissions(cid, groupOwner, protectedFile)) { Slog.e(TAG, "Failed to finalize " + cid); PackageHelper.destroySdDir(cid); return PackageManager.INSTALL_FAILED_CONTAINER_ERROR; @@ -6505,6 +6557,33 @@ public class PackageManagerService extends IPackageManager.Stub { } return ret; } + + @Override + int doPreCopy() { + if (isFwdLocked()) { + if (!PackageHelper.fixSdPermissions(cid, + getPackageUid(DEFAULT_CONTAINER_PACKAGE, 0), RES_FILE_NAME)) { + return PackageManager.INSTALL_FAILED_CONTAINER_ERROR; + } + } + + return PackageManager.INSTALL_SUCCEEDED; + } + + @Override + int doPostCopy(int uid) { + if (isFwdLocked()) { + PackageHelper.fixSdPermissions(cid, uid, RES_FILE_NAME); + if (uid < Process.FIRST_APPLICATION_UID + || !PackageHelper.fixSdPermissions(cid, uid, RES_FILE_NAME)) { + Slog.e(TAG, "Failed to finalize " + cid); + PackageHelper.destroySdDir(cid); + return PackageManager.INSTALL_FAILED_CONTAINER_ERROR; + } + } + + return PackageManager.INSTALL_SUCCEEDED; + } }; // Utility method used to create code paths based on package name and available index. @@ -8696,9 +8775,15 @@ public class PackageManagerService extends IPackageManager.Stub { : PackageManager.INSTALL_INTERNAL; currFlags = isExternal(pkg) ? PackageManager.INSTALL_EXTERNAL : PackageManager.INSTALL_INTERNAL; + if (newFlags == currFlags) { Slog.w(TAG, "No move required. Trying to move to same location"); returnCode = PackageManager.MOVE_FAILED_INVALID_LOCATION; + } else { + if (isForwardLocked(pkg)) { + currFlags |= PackageManager.INSTALL_FORWARD_LOCK; + newFlags |= PackageManager.INSTALL_FORWARD_LOCK; + } } } if (returnCode == PackageManager.MOVE_SUCCEEDED) { @@ -8784,21 +8869,31 @@ public class PackageManagerService extends IPackageManager.Stub { final String newNativePath = mp.targetArgs .getNativeLibraryPath(); - if ((mp.flags & PackageManager.INSTALL_EXTERNAL) == 0) { - if (mInstaller - .unlinkNativeLibraryDirectory(pkg.applicationInfo.dataDir) < 0) { - returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE; + try { + final File newNativeDir = new File(newNativePath); + + final String libParentDir = newNativeDir.getParentFile() + .getCanonicalPath(); + if (newNativeDir.getParentFile().getCanonicalPath() + .equals(pkg.applicationInfo.dataDir)) { + if (mInstaller + .unlinkNativeLibraryDirectory(pkg.applicationInfo.dataDir) < 0) { + returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE; + } else { + NativeLibraryHelper.copyNativeBinariesIfNeededLI( + new File(newCodePath), newNativeDir); + } } else { - NativeLibraryHelper.copyNativeBinariesIfNeededLI(new File( - newCodePath), new File(newNativePath)); - } - } else { - if (mInstaller.linkNativeLibraryDirectory( - pkg.applicationInfo.dataDir, newNativePath) < 0) { - returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE; + if (mInstaller.linkNativeLibraryDirectory( + pkg.applicationInfo.dataDir, newNativePath) < 0) { + returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE; + } } + } catch (IOException e) { + returnCode = PackageManager.MOVE_FAILED_INVALID_LOCATION; } + if (returnCode == PackageManager.MOVE_SUCCEEDED) { pkg.mPath = newCodePath; // Move dex files around diff --git a/services/java/com/android/server/usb/UsbDeviceManager.java b/services/java/com/android/server/usb/UsbDeviceManager.java index 1bd15f6e9589..33612b075f32 100644 --- a/services/java/com/android/server/usb/UsbDeviceManager.java +++ b/services/java/com/android/server/usb/UsbDeviceManager.java @@ -87,10 +87,13 @@ public class UsbDeviceManager { private static final int MSG_UPDATE_STATE = 0; private static final int MSG_ENABLE_ADB = 1; - private static final int MSG_SET_CURRENT_FUNCTION = 2; + private static final int MSG_SET_CURRENT_FUNCTIONS = 2; private static final int MSG_SYSTEM_READY = 3; private static final int MSG_BOOT_COMPLETED = 4; + private static final int AUDIO_MODE_NONE = 0; + private static final int AUDIO_MODE_SOURCE = 1; + // Delay for debouncing USB disconnects. // We often get rapid connect/disconnect events when enabling USB functions, // which need debouncing. @@ -110,6 +113,7 @@ public class UsbDeviceManager { private boolean mAdbEnabled; private boolean mAudioSourceEnabled; private Map<String, List<Pair<String, String>>> mOemModeMap; + private String[] mAccessoryStrings; private class AdbSettingsObserver extends ContentObserver { public AdbSettingsObserver() { @@ -137,7 +141,7 @@ public class UsbDeviceManager { mHandler.updateState(state); } else if ("START".equals(accessory)) { if (DEBUG) Slog.d(TAG, "got accessory start"); - setCurrentFunction(UsbManager.USB_FUNCTION_ACCESSORY, false); + startAccessoryMode(); } } }; @@ -160,7 +164,7 @@ public class UsbDeviceManager { if (nativeIsStartRequested()) { if (DEBUG) Slog.d(TAG, "accessory attached at boot"); - setCurrentFunction(UsbManager.USB_FUNCTION_ACCESSORY, false); + startAccessoryMode(); } } @@ -187,6 +191,29 @@ public class UsbDeviceManager { mHandler.sendEmptyMessage(MSG_SYSTEM_READY); } + private void startAccessoryMode() { + mAccessoryStrings = nativeGetAccessoryStrings(); + boolean enableAudio = (nativeGetAudioMode() == AUDIO_MODE_SOURCE); + // don't start accessory mode if our mandatory strings have not been set + boolean enableAccessory = (mAccessoryStrings != null && + mAccessoryStrings[UsbAccessory.MANUFACTURER_STRING] != null && + mAccessoryStrings[UsbAccessory.MODEL_STRING] != null); + String functions = null; + + if (enableAccessory && enableAudio) { + functions = UsbManager.USB_FUNCTION_ACCESSORY + "," + + UsbManager.USB_FUNCTION_AUDIO_SOURCE; + } else if (enableAccessory) { + functions = UsbManager.USB_FUNCTION_ACCESSORY; + } else if (enableAudio) { + functions = UsbManager.USB_FUNCTION_AUDIO_SOURCE; + } + + if (functions != null) { + setCurrentFunctions(functions, false); + } + } + private static void initRndisAddress() { // configure RNDIS ethernet address based on our serial number using the same algorithm // we had been previously using in kernel board files @@ -467,9 +494,8 @@ public class UsbDeviceManager { if (!mHasUsbAccessory) return; if (mConfigured) { - String[] strings = nativeGetAccessoryStrings(); - if (strings != null) { - mCurrentAccessory = new UsbAccessory(strings); + if (mAccessoryStrings != null) { + mCurrentAccessory = new UsbAccessory(mAccessoryStrings); Slog.d(TAG, "entering USB accessory mode: " + mCurrentAccessory); // defer accessoryAttached if system is not ready if (mBootCompleted) { @@ -489,6 +515,7 @@ public class UsbDeviceManager { mSettingsManager.accessoryDetached(mCurrentAccessory); } mCurrentAccessory = null; + mAccessoryStrings = null; } } } @@ -561,10 +588,10 @@ public class UsbDeviceManager { case MSG_ENABLE_ADB: setAdbEnabled(msg.arg1 == 1); break; - case MSG_SET_CURRENT_FUNCTION: - String function = (String)msg.obj; + case MSG_SET_CURRENT_FUNCTIONS: + String functions = (String)msg.obj; boolean makeDefault = (msg.arg1 == 1); - setEnabledFunctions(function, makeDefault); + setEnabledFunctions(functions, makeDefault); break; case MSG_SYSTEM_READY: updateUsbNotification(); @@ -717,9 +744,9 @@ public class UsbDeviceManager { return nativeOpenAccessory(); } - public void setCurrentFunction(String function, boolean makeDefault) { - if (DEBUG) Slog.d(TAG, "setCurrentFunction(" + function + ") default: " + makeDefault); - mHandler.sendMessage(MSG_SET_CURRENT_FUNCTION, function, makeDefault); + public void setCurrentFunctions(String functions, boolean makeDefault) { + if (DEBUG) Slog.d(TAG, "setCurrentFunctions(" + functions + ") default: " + makeDefault); + mHandler.sendMessage(MSG_SET_CURRENT_FUNCTIONS, functions, makeDefault); } public void setMassStorageBackingFile(String path) { @@ -787,4 +814,5 @@ public class UsbDeviceManager { private native String[] nativeGetAccessoryStrings(); private native ParcelFileDescriptor nativeOpenAccessory(); private native boolean nativeIsStartRequested(); + private native int nativeGetAudioMode(); } diff --git a/services/java/com/android/server/usb/UsbService.java b/services/java/com/android/server/usb/UsbService.java index 9f2c17aa8ae5..0205ef84df49 100644 --- a/services/java/com/android/server/usb/UsbService.java +++ b/services/java/com/android/server/usb/UsbService.java @@ -149,7 +149,7 @@ public class UsbService extends IUsbManager.Stub { public void setCurrentFunction(String function, boolean makeDefault) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null); if (mDeviceManager != null) { - mDeviceManager.setCurrentFunction(function, makeDefault); + mDeviceManager.setCurrentFunctions(function, makeDefault); } else { throw new IllegalStateException("USB device mode not supported"); } diff --git a/services/java/com/android/server/wm/AppWindowAnimator.java b/services/java/com/android/server/wm/AppWindowAnimator.java index d635e8cd8c80..de756b178492 100644 --- a/services/java/com/android/server/wm/AppWindowAnimator.java +++ b/services/java/com/android/server/wm/AppWindowAnimator.java @@ -85,6 +85,9 @@ public class AppWindowAnimator { animation = sDummyAnimation; animInitialized = false; } + hasTransformation = true; + transformation.clear(); + transformation.setAlpha(mAppToken.reportedVisible ? 1 : 0); } public void clearAnimation() { @@ -186,8 +189,6 @@ public class AppWindowAnimator { // it as not animating for purposes of scheduling transactions; // when it is really time to animate, this will be set to // a real animation and the next call will execute normally. - hasTransformation = true; - transformation.setAlpha(mAppToken.reportedVisible ? 1 : 0); return false; } diff --git a/services/java/com/android/server/wm/Session.java b/services/java/com/android/server/wm/Session.java index 77575f2f5251..53c0e070461a 100644 --- a/services/java/com/android/server/wm/Session.java +++ b/services/java/com/android/server/wm/Session.java @@ -151,13 +151,14 @@ final class Session extends IWindowSession.Stub public int relayout(IWindow window, int seq, WindowManager.LayoutParams attrs, int requestedWidth, int requestedHeight, int viewFlags, - int flags, Rect outFrame, Rect outContentInsets, + int flags, Rect outFrame, Rect outSystemInsets, Rect outContentInsets, Rect outVisibleInsets, Configuration outConfig, Surface outSurface) { if (false) Slog.d(WindowManagerService.TAG, ">>>>>> ENTERED relayout from " + Binder.getCallingPid()); int res = mService.relayoutWindow(this, window, seq, attrs, requestedWidth, requestedHeight, viewFlags, flags, - outFrame, outContentInsets, outVisibleInsets, outConfig, outSurface); + outFrame, outSystemInsets, outContentInsets, outVisibleInsets, + outConfig, outSurface); if (false) Slog.d(WindowManagerService.TAG, "<<<<<< EXITING relayout to " + Binder.getCallingPid()); return res; diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index e5b1f2c27fc1..2e817cadc801 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -140,6 +140,8 @@ public class WindowAnimator { mService.debugLayoutRepeats("appToken " + appAnimator.mAppToken + " done", mPendingLayoutChanges); } + if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG, + "updateWindowsApps...: done animating " + appAnimator.mAppToken); } } @@ -154,9 +156,11 @@ public class WindowAnimator { // stopped animating, do one more pass through the layout mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; if (WindowManagerService.DEBUG_LAYOUT_REPEATS) { - mService.debugLayoutRepeats("exiting appToken " + appAnimator.mAppToken + mService.debugLayoutRepeats("exiting appToken " + appAnimator.mAppToken + " done", mPendingLayoutChanges); } + if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG, + "updateWindowsApps...: done animating exiting " + appAnimator.mAppToken); } } @@ -246,9 +250,9 @@ public class WindowAnimator { if (mPolicy.doesForceHide(win, win.mAttrs)) { if (!wasAnimating && nowAnimating) { - if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG, - "Animation started that could impact force hide: " - + win); + if (WindowManagerService.DEBUG_ANIM || + WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG, + "Animation started that could impact force hide: " + win); mBulkUpdateParams |= SET_FORCE_HIDING_CHANGED; mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; if (WindowManagerService.DEBUG_LAYOUT_REPEATS) { diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 32700cb015dd..8eda9ca2b5c9 100755 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -91,6 +91,7 @@ import android.os.StrictMode; import android.os.SystemClock; import android.os.SystemProperties; import android.os.TokenWatcher; +import android.os.Trace; import android.provider.Settings; import android.util.DisplayMetrics; import android.util.EventLog; @@ -129,8 +130,6 @@ import android.view.animation.AnimationSet; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.view.animation.ScaleAnimation; -import android.view.animation.Transformation; -import android.view.animation.TranslateAnimation; import java.io.BufferedWriter; import java.io.DataInputStream; @@ -423,6 +422,12 @@ public class WindowManagerService extends IWindowManager.Stub = new ArrayList<Pair<WindowState, IRemoteCallback>>(); /** + * Windows that have called relayout() while we were running animations, + * so we need to tell when the animation is done. + */ + final ArrayList<WindowState> mRelayoutWhileAnimating = new ArrayList<WindowState>(); + + /** * Used when rebuilding window list to keep track of windows that have * been removed. */ @@ -631,6 +636,7 @@ public class WindowManagerService extends IWindowManager.Stub // Update animations of all applications, including those // associated with exiting/removed apps synchronized (mAnimator) { + Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "wmAnimate"); final ArrayList<WindowStateAnimator> winAnimators = mAnimator.mWinAnimators; winAnimators.clear(); final int N = mWindows.size(); @@ -641,6 +647,7 @@ public class WindowManagerService extends IWindowManager.Stub } } mAnimator.animate(); + Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); } } } @@ -2253,6 +2260,7 @@ public class WindowManagerService extends IWindowManager.Stub boolean imMayMove = true; if (attrs.type == TYPE_INPUT_METHOD) { + win.mGivenInsetsPending = true; mInputMethodWindow = win; addInputMethodWindowToListLocked(win); imMayMove = false; @@ -2638,12 +2646,13 @@ public class WindowManagerService extends IWindowManager.Stub public int relayoutWindow(Session session, IWindow client, int seq, WindowManager.LayoutParams attrs, int requestedWidth, int requestedHeight, int viewVisibility, int flags, - Rect outFrame, Rect outContentInsets, Rect outVisibleInsets, - Configuration outConfig, Surface outSurface) { + Rect outFrame, Rect outSystemInsets, Rect outContentInsets, + Rect outVisibleInsets, Configuration outConfig, Surface outSurface) { boolean displayed = false; boolean inTouchMode; boolean configChanged; boolean surfaceChanged = false; + boolean animating; // if they don't have this permission, mask out the status bar bits int systemUiVisibility = 0; @@ -2929,6 +2938,7 @@ public class WindowManagerService extends IWindowManager.Stub win.mAppToken.updateReportedVisibilityLocked(); } outFrame.set(win.mCompatFrame); + outSystemInsets.set(win.mSystemInsets); outContentInsets.set(win.mContentInsets); outVisibleInsets.set(win.mVisibleInsets); if (localLOGV) Slog.v( @@ -2943,7 +2953,11 @@ public class WindowManagerService extends IWindowManager.Stub TAG, "Relayout of " + win + ": focusMayChange=" + focusMayChange); inTouchMode = mInTouchMode; - + animating = mAnimator.mAnimating; + if (animating && !mRelayoutWhileAnimating.contains(win)) { + mRelayoutWhileAnimating.add(win); + } + mInputMonitor.updateInputWindowsLw(true /*force*/); } @@ -2955,7 +2969,8 @@ public class WindowManagerService extends IWindowManager.Stub return (inTouchMode ? WindowManagerImpl.RELAYOUT_RES_IN_TOUCH_MODE : 0) | (displayed ? WindowManagerImpl.RELAYOUT_RES_FIRST_TIME : 0) - | (surfaceChanged ? WindowManagerImpl.RELAYOUT_RES_SURFACE_CHANGED : 0); + | (surfaceChanged ? WindowManagerImpl.RELAYOUT_RES_SURFACE_CHANGED : 0) + | (animating ? WindowManagerImpl.RELAYOUT_RES_ANIMATING : 0); } public void performDeferredDestroyWindow(Session session, IWindow client) { @@ -3228,12 +3243,21 @@ public class WindowManagerService extends IWindowManager.Stub if (mNextAppTransitionType == ActivityOptions.ANIM_CUSTOM) { a = loadAnimation(mNextAppTransitionPackage, enter ? mNextAppTransitionEnter : mNextAppTransitionExit); + if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken + + " anim=" + a + " nextAppTransition=ANIM_CUSTOM" + + " transit=" + transit + " Callers " + Debug.getCallers(3)); } else if (mNextAppTransitionType == ActivityOptions.ANIM_SCALE_UP) { a = createScaleUpAnimationLocked(transit, enter); initialized = true; + if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken + + " anim=" + a + " nextAppTransition=ANIM_SCALE_UP" + + " transit=" + transit + " Callers " + Debug.getCallers(3)); } else if (mNextAppTransitionType == ActivityOptions.ANIM_THUMBNAIL) { a = createThumbnailAnimationLocked(transit, enter, false); initialized = true; + if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken + + " anim=" + a + " nextAppTransition=ANIM_THUMBNAIL" + + " transit=" + transit + " Callers " + Debug.getCallers(3)); } else { int animAttr = 0; switch (transit) { @@ -3292,7 +3316,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken + " anim=" + a + " animAttr=0x" + Integer.toHexString(animAttr) - + " transit=" + transit); + + " transit=" + transit + " Callers " + Debug.getCallers(3)); } if (a != null) { if (DEBUG_ANIM) { @@ -3406,6 +3430,9 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { WindowToken wtoken = mTokenMap.remove(token); if (wtoken != null) { + if (wtoken.windowType == TYPE_INPUT_METHOD && mInputMethodWindow != null) { + mPolicy.setLastInputMethodWindowLw(mInputMethodWindow, mInputMethodTarget); + } boolean delayed = false; if (!wtoken.hidden) { wtoken.hidden = true; @@ -4948,8 +4975,8 @@ public class WindowManagerService extends IWindowManager.Stub // Called by window manager policy. Not exposed externally. @Override public int getLidState() { - final int SW_LID = 0x00; - int sw = mInputManager.getSwitchState(-1, InputDevice.SOURCE_ANY, SW_LID); + int sw = mInputManager.getSwitchState(-1, InputDevice.SOURCE_ANY, + InputManagerService.SW_LID); if (sw > 0) { // Switch state: AKEY_STATE_DOWN or AKEY_STATE_VIRTUAL. return LID_CLOSED; @@ -5553,7 +5580,8 @@ public class WindowManagerService extends IWindowManager.Stub mWaitingForConfig = true; mLayoutNeeded = true; startFreezingDisplayLocked(inTransaction); - mInputManager.setDisplayOrientation(0, rotation); + mInputManager.setDisplayOrientation(0, rotation, + mDisplay != null ? mDisplay.getExternalRotation() : Surface.ROTATION_0); // We need to update our screen size information to match the new // rotation. Note that this is redundant with the later call to @@ -6268,8 +6296,6 @@ public class WindowManagerService extends IWindowManager.Stub final int dh = mCurDisplayHeight; if (config != null) { - mInputManager.getInputConfiguration(config); - int orientation = Configuration.ORIENTATION_SQUARE; if (dw < dh) { orientation = Configuration.ORIENTATION_PORTRAIT; @@ -6312,12 +6338,46 @@ public class WindowManagerService extends IWindowManager.Stub config.compatScreenHeightDp = (int)(config.screenHeightDp / mCompatibleScreenScale); config.compatSmallestScreenWidthDp = computeCompatSmallestWidth(rotated, dm, dw, dh); + // Update the configuration based on available input devices, lid switch, + // and platform configuration. + config.touchscreen = Configuration.TOUCHSCREEN_NOTOUCH; + config.keyboard = Configuration.KEYBOARD_NOKEYS; + config.navigation = Configuration.NAVIGATION_NONAV; + + int keyboardPresence = 0; + int navigationPresence = 0; + for (InputDevice device : mInputManager.getInputDevices()) { + if (!device.isVirtual()) { + final int sources = device.getSources(); + final int presenceFlag = device.isExternal() ? + WindowManagerPolicy.PRESENCE_EXTERNAL : + WindowManagerPolicy.PRESENCE_INTERNAL; + + if ((sources & InputDevice.SOURCE_TOUCHSCREEN) != 0) { + config.touchscreen = Configuration.TOUCHSCREEN_FINGER; + } + + if ((sources & InputDevice.SOURCE_TRACKBALL) != 0) { + config.navigation = Configuration.NAVIGATION_TRACKBALL; + navigationPresence |= presenceFlag; + } else if ((sources & InputDevice.SOURCE_DPAD) != 0 + && config.navigation == Configuration.NAVIGATION_NONAV) { + config.navigation = Configuration.NAVIGATION_DPAD; + navigationPresence |= presenceFlag; + } + + if (device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) { + config.keyboard = Configuration.KEYBOARD_QWERTY; + keyboardPresence |= presenceFlag; + } + } + } + // Determine whether a hard keyboard is available and enabled. boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS; if (hardKeyboardAvailable != mHardKeyboardAvailable) { mHardKeyboardAvailable = hardKeyboardAvailable; mHardKeyboardEnabled = hardKeyboardAvailable; - mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); } @@ -6325,13 +6385,11 @@ public class WindowManagerService extends IWindowManager.Stub config.keyboard = Configuration.KEYBOARD_NOKEYS; } - // Update value of keyboardHidden, hardKeyboardHidden and navigationHidden - // based on whether a hard or soft keyboard is present, whether navigation keys - // are present and the lid switch state. + // Let the policy update hidden states. config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO; config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO; config.navigationHidden = Configuration.NAVIGATIONHIDDEN_NO; - mPolicy.adjustConfigurationLw(config); + mPolicy.adjustConfigurationLw(config, keyboardPresence, navigationPresence); } return true; @@ -6495,14 +6553,13 @@ public class WindowManagerService extends IWindowManager.Stub + " milliseconds before attempting to detect safe mode."); } - final int BTN_MOUSE = 0x110; int menuState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY, KeyEvent.KEYCODE_MENU); int sState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY, KeyEvent.KEYCODE_S); int dpadState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_DPAD, KeyEvent.KEYCODE_DPAD_CENTER); int trackballState = mInputManager.getScanCodeState(-1, InputDevice.SOURCE_TRACKBALL, - BTN_MOUSE); + InputManagerService.BTN_MOUSE); int volumeDownState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY, KeyEvent.KEYCODE_VOLUME_DOWN); mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0 @@ -6550,6 +6607,8 @@ public class WindowManagerService extends IWindowManager.Stub mInputManager.setDisplaySize(Display.DEFAULT_DISPLAY, mDisplay.getRawWidth(), mDisplay.getRawHeight(), mDisplay.getRawExternalWidth(), mDisplay.getRawExternalHeight()); + mInputManager.setDisplayOrientation(Display.DEFAULT_DISPLAY, + mDisplay.getRotation(), mDisplay.getExternalRotation()); mPolicy.setInitialDisplaySize(mDisplay, mInitialDisplayWidth, mInitialDisplayHeight); } @@ -7518,6 +7577,7 @@ public class WindowManagerService extends IWindowManager.Stub return; } + Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "wmLayout"); mInLayout = true; boolean recoveringMemory = false; @@ -7562,7 +7622,10 @@ public class WindowManagerService extends IWindowManager.Stub mInLayout = false; assignLayersLocked(); mLayoutNeeded = true; + // XXX this recursion seems broken! + Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); performLayoutAndPlaceSurfacesLocked(); + Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "wmLayout"); } else { mInLayout = false; @@ -7587,6 +7650,8 @@ public class WindowManagerService extends IWindowManager.Stub mInLayout = false; Log.wtf(TAG, "Unhandled exception while laying out windows", e); } + + Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); } private final void performLayoutLockedInner(boolean initial, boolean updateInputWindows) { @@ -7801,7 +7866,9 @@ public class WindowManagerService extends IWindowManager.Stub mToTopApps.clear(); } - WindowState oldWallpaper = mWallpaperTarget; + WindowState oldWallpaper = + mWallpaperTarget != null && mWallpaperTarget.mWinAnimator.isAnimating() + ? null : mWallpaperTarget; adjustWallpaperWindowsLocked(); mInnerFields.mWallpaperMayChange = false; @@ -8070,11 +8137,13 @@ public class WindowManagerService extends IWindowManager.Stub private void updateResizingWindows(final WindowState w) { final WindowStateAnimator winAnimator = w.mWinAnimator; - if (!w.mAppFreezing && w.mLayoutSeq == mLayoutSeq) { + if (w.mHasSurface && !w.mAppFreezing && w.mLayoutSeq == mLayoutSeq) { + w.mSystemInsetsChanged |= + !w.mLastSystemInsets.equals(w.mSystemInsets); w.mContentInsetsChanged |= - !w.mLastContentInsets.equals(w.mContentInsets); + !w.mLastContentInsets.equals(w.mContentInsets); w.mVisibleInsetsChanged |= - !w.mLastVisibleInsets.equals(w.mVisibleInsets); + !w.mLastVisibleInsets.equals(w.mVisibleInsets); boolean configChanged = w.mConfiguration != mCurConfiguration && (w.mConfiguration == null @@ -8087,7 +8156,8 @@ public class WindowManagerService extends IWindowManager.Stub + ": configChanged=" + configChanged + " last=" + w.mLastFrame + " frame=" + w.mFrame); w.mLastFrame.set(w.mFrame); - if (w.mContentInsetsChanged + if (w.mSystemInsetsChanged + || w.mContentInsetsChanged || w.mVisibleInsetsChanged || winAnimator.mSurfaceResized || configChanged) { @@ -8099,6 +8169,7 @@ public class WindowManagerService extends IWindowManager.Stub + " configChanged=" + configChanged); } + w.mLastSystemInsets.set(w.mSystemInsets); w.mLastContentInsets.set(w.mContentInsets); w.mLastVisibleInsets.set(w.mVisibleInsets); makeWindowFreezingScreenIfNeededLocked(w); @@ -8108,8 +8179,8 @@ public class WindowManagerService extends IWindowManager.Stub // to go through the process of getting informed // by the application when it has finished drawing. if (w.mOrientationChanging) { - if (DEBUG_ORIENTATION) Slog.v(TAG, - "Orientation start waiting for draw in " + if (DEBUG_ANIM || DEBUG_ORIENTATION) Slog.v(TAG, + "Orientation start waiting for draw mDrawState=DRAW_PENDING in " + w + ", surface " + winAnimator.mSurface); winAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING; if (w.mAppToken != null) { @@ -8315,10 +8386,6 @@ public class WindowManagerService extends IWindowManager.Stub for (i=N-1; i>=0; i--) { WindowState w = mWindows.get(i); - if (someoneLosingFocus && w == mCurrentFocus && w.isDisplayedLw()) { - focusDisplayed = true; - } - final boolean obscuredChanged = w.mObscured != mInnerFields.mObscured; // Update effect. @@ -8376,6 +8443,10 @@ public class WindowManagerService extends IWindowManager.Stub winAnimator.setSurfaceBoundaries(recoveringMemory); } + if (someoneLosingFocus && w == mCurrentFocus && w.isDisplayedLw()) { + focusDisplayed = true; + } + updateResizingWindows(w); } @@ -8484,10 +8555,11 @@ public class WindowManagerService extends IWindowManager.Stub winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING) Slog.i( TAG, "Resizing " + win + " WITH DRAW PENDING"); win.mClient.resized((int)winAnimator.mSurfaceW, - (int)winAnimator.mSurfaceH, + (int)winAnimator.mSurfaceH, win.mLastSystemInsets, win.mLastContentInsets, win.mLastVisibleInsets, winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING, configChanged ? win.mConfiguration : null); + win.mSystemInsetsChanged = false; win.mContentInsetsChanged = false; win.mVisibleInsetsChanged = false; winAnimator.mSurfaceResized = false; @@ -8570,6 +8642,16 @@ public class WindowManagerService extends IWindowManager.Stub mToBottomApps.clear(); } + if (!mAnimator.mAnimating && mRelayoutWhileAnimating.size() > 0) { + for (int j=mRelayoutWhileAnimating.size()-1; j>=0; j--) { + try { + mRelayoutWhileAnimating.get(j).mClient.doneAnimating(); + } catch (RemoteException e) { + } + } + mRelayoutWhileAnimating.clear(); + } + if (wallpaperDestroyed) { mLayoutNeeded |= adjustWallpaperWindowsLocked() != 0; } @@ -8814,6 +8896,7 @@ public class WindowManagerService extends IWindowManager.Stub private boolean updateFocusedWindowLocked(int mode, boolean updateInputWindows) { WindowState newFocus = computeFocusedWindowLocked(); if (mCurrentFocus != newFocus) { + Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "wmUpdateFocus"); // This check makes sure that we don't already have the focus // change message pending. mH.removeMessages(H.REPORT_FOCUS_CHANGE); @@ -8856,6 +8939,8 @@ public class WindowManagerService extends IWindowManager.Stub // doing this part. finishUpdateFocusedWindowAfterAssignLayersLocked(updateInputWindows); } + + Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); return true; } return false; diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index 4de64257e1b5..05e7d3a0a2d1 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -124,7 +124,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { boolean mVisibleInsetsChanged; /** - * Insets that are covered by system windows. These are in the application's + * Insets that are covered by system windows (such as the status bar) and + * transient docking windows (such as the IME). These are in the application's * coordinate space (without compatibility scale applied). */ final Rect mContentInsets = new Rect(); @@ -132,6 +133,14 @@ final class WindowState implements WindowManagerPolicy.WindowState { boolean mContentInsetsChanged; /** + * Insets that are covered by system windows such as the status bar. These + * are in the application's coordinate space (without compatibility scale applied). + */ + final Rect mSystemInsets = new Rect(); + final Rect mLastSystemInsets = new Rect(); + boolean mSystemInsetsChanged; + + /** * Set to true if we are waiting for this window to receive its * given internal insets before laying out other windows based on it. */ @@ -178,6 +187,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { final Rect mContainingFrame = new Rect(); final Rect mDisplayFrame = new Rect(); + final Rect mSystemFrame = new Rect(); final Rect mContentFrame = new Rect(); final Rect mParentFrame = new Rect(); final Rect mVisibleFrame = new Rect(); @@ -346,7 +356,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { } @Override - public void computeFrameLw(Rect pf, Rect df, Rect cf, Rect vf) { + public void computeFrameLw(Rect pf, Rect df, Rect sf, Rect cf, Rect vf) { mHaveFrame = true; final Rect container = mContainingFrame; @@ -403,6 +413,9 @@ final class WindowState implements WindowManagerPolicy.WindowState { mContentChanged = true; } + final Rect system = mSystemFrame; + system.set(sf); + final Rect content = mContentFrame; content.set(cf); @@ -434,8 +447,12 @@ final class WindowState implements WindowManagerPolicy.WindowState { // Now make sure the window fits in the overall display. Gravity.applyDisplay(mAttrs.gravity, df, frame); - // Make sure the content and visible frames are inside of the + // Make sure the system, content and visible frames are inside of the // final window frame. + if (system.left < frame.left) system.left = frame.left; + if (system.top < frame.top) system.top = frame.top; + if (system.right > frame.right) system.right = frame.right; + if (system.bottom > frame.bottom) system.bottom = frame.bottom; if (content.left < frame.left) content.left = frame.left; if (content.top < frame.top) content.top = frame.top; if (content.right > frame.right) content.right = frame.right; @@ -445,6 +462,12 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (visible.right > frame.right) visible.right = frame.right; if (visible.bottom > frame.bottom) visible.bottom = frame.bottom; + final Rect systemInsets = mSystemInsets; + systemInsets.left = system.left-frame.left; + systemInsets.top = system.top-frame.top; + systemInsets.right = frame.right-system.right; + systemInsets.bottom = frame.bottom-system.bottom; + final Rect contentInsets = mContentInsets; contentInsets.left = content.left-frame.left; contentInsets.top = content.top-frame.top; @@ -462,6 +485,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { // If there is a size compatibility scale being applied to the // window, we need to apply this to its insets so that they are // reported to the app in its coordinate space. + systemInsets.scale(mInvGlobalScale); contentInsets.scale(mInvGlobalScale); visibleInsets.scale(mInvGlobalScale); @@ -482,6 +506,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { + mRequestedWidth + ", mRequestedheight=" + mRequestedHeight + ") to" + " (pw=" + pw + ", ph=" + ph + "): frame=" + mFrame.toShortString() + + " si=" + systemInsets.toShortString() + " ci=" + contentInsets.toShortString() + " vi=" + visibleInsets.toShortString()); //} @@ -504,6 +529,11 @@ final class WindowState implements WindowManagerPolicy.WindowState { } @Override + public Rect getSystemFrameLw() { + return mSystemFrame; + } + + @Override public Rect getContentFrameLw() { return mContentFrame; } @@ -723,6 +753,14 @@ final class WindowState implements WindowManagerPolicy.WindowState { || mWinAnimator.mAnimating); } + /** + * Return true if this window (or a window it is attached to, but not + * considering its app token) is currently animating. + */ + public boolean isAnimatingLw() { + return mWinAnimator.mAnimation != null; + } + public boolean isGoneForLayoutLw() { final AppWindowToken atoken = mAppToken; return mViewVisibility == View.GONE @@ -1035,20 +1073,22 @@ final class WindowState implements WindowManagerPolicy.WindowState { pw.println(); } if (dumpAll) { - pw.print(prefix); pw.print("mContainingFrame="); + pw.print(prefix); pw.print("Frames: containing="); mContainingFrame.printShortString(pw); - pw.print(" mParentFrame="); - mParentFrame.printShortString(pw); - pw.print(" mDisplayFrame="); - mDisplayFrame.printShortString(pw); + pw.print(" parent="); mParentFrame.printShortString(pw); + pw.print(" display="); mDisplayFrame.printShortString(pw); + pw.println(); + pw.print(prefix); pw.print(" system="); mSystemFrame.printShortString(pw); + pw.print(" content="); mContentFrame.printShortString(pw); + pw.print(" visible="); mVisibleFrame.printShortString(pw); pw.println(); - pw.print(prefix); pw.print("mContentFrame="); mContentFrame.printShortString(pw); - pw.print(" mVisibleFrame="); mVisibleFrame.printShortString(pw); + pw.print(prefix); pw.print("Cur insets: system="); mSystemInsets.printShortString(pw); + pw.print(" content="); mContentInsets.printShortString(pw);; + pw.print(" visible="); mVisibleInsets.printShortString(pw); pw.println(); - pw.print(prefix); pw.print("mContentInsets="); mContentInsets.printShortString(pw); - pw.print(" last="); mLastContentInsets.printShortString(pw); - pw.print(" mVisibleInsets="); mVisibleInsets.printShortString(pw); - pw.print(" last="); mLastVisibleInsets.printShortString(pw); + pw.print(prefix); pw.print("Lst insets: system="); mLastSystemInsets.printShortString(pw); + pw.print(" content="); mLastContentInsets.printShortString(pw);; + pw.print(" visible="); mLastVisibleInsets.printShortString(pw); pw.println(); } mWinAnimator.dump(pw, prefix, dumpAll); diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java index 9147a1062690..2e3833249d04 100644 --- a/services/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/java/com/android/server/wm/WindowStateAnimator.java @@ -380,8 +380,9 @@ class WindowStateAnimator { boolean finishDrawingLocked() { if (mDrawState == DRAW_PENDING) { - if (SHOW_TRANSACTIONS || DEBUG_ORIENTATION) Slog.v( - TAG, "finishDrawingLocked: " + this + " in " + mSurface); + if (DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION) Slog.v( + TAG, "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING " + this + " in " + + mSurface); mDrawState = COMMIT_DRAW_PENDING; return true; } @@ -393,7 +394,8 @@ class WindowStateAnimator { if (mDrawState != COMMIT_DRAW_PENDING) { return false; } - //Slog.i(TAG, "commitFinishDrawingLocked: Draw pending. " + mSurface); + if (DEBUG_ANIM) + Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurface); mDrawState = READY_TO_SHOW; final boolean starting = mWin.mAttrs.type == TYPE_APPLICATION_STARTING; final AppWindowToken atoken = mWin.mAppToken; @@ -526,8 +528,8 @@ class WindowStateAnimator { if (mSurface == null) { mReportDestroySurface = false; mSurfacePendingDestroy = false; - if (DEBUG_ORIENTATION) Slog.i(TAG, - "createSurface " + this + ": DRAW NOW PENDING"); + if (DEBUG_ANIM || DEBUG_ORIENTATION) Slog.i(TAG, + "createSurface " + this + ": mDrawState=DRAW_PENDING"); mDrawState = DRAW_PENDING; if (mWin.mAppToken != null) { mWin.mAppToken.allDrawn = false; @@ -1062,6 +1064,9 @@ class WindowStateAnimator { } } } else { + if (DEBUG_ANIM) { + Slog.v(TAG, "prepareSurface: No changes in animation for " + mWin); + } displayed = true; } @@ -1145,6 +1150,7 @@ class WindowStateAnimator { // Force the show in the next prepareSurfaceLocked() call. mLastAlpha = -1; + if (DEBUG_ANIM) Slog.v(TAG, "performShowLocked: mDrawState=HAS_DRAWN"); mDrawState = HAS_DRAWN; mService.scheduleAnimationLocked(); @@ -1285,7 +1291,7 @@ class WindowStateAnimator { + " anim=" + anim + " attr=0x" + Integer.toHexString(attr) + " a=" + a + " mAnimation=" + mAnimation - + " isEntrance=" + isEntrance); + + " isEntrance=" + isEntrance + " Callers " + Debug.getCallers(3)); if (a != null) { if (WindowManagerService.DEBUG_ANIM) { RuntimeException e = null; diff --git a/services/jni/com_android_server_UsbDeviceManager.cpp b/services/jni/com_android_server_UsbDeviceManager.cpp index 0cd94b91fe39..0014db589f93 100644 --- a/services/jni/com_android_server_UsbDeviceManager.cpp +++ b/services/jni/com_android_server_UsbDeviceManager.cpp @@ -111,6 +111,17 @@ static jboolean android_server_UsbDeviceManager_isStartRequested(JNIEnv *env, jo return (result == 1); } +static jint android_server_UsbDeviceManager_getAudioMode(JNIEnv *env, jobject thiz) +{ + int fd = open(DRIVER_NAME, O_RDWR); + if (fd < 0) { + ALOGE("could not open %s", DRIVER_NAME); + return false; + } + int result = ioctl(fd, ACCESSORY_GET_AUDIO_MODE); + close(fd); + return result; +} static JNINativeMethod method_table[] = { { "nativeGetAccessoryStrings", "()[Ljava/lang/String;", @@ -119,6 +130,8 @@ static JNINativeMethod method_table[] = { (void*)android_server_UsbDeviceManager_openAccessory }, { "nativeIsStartRequested", "()Z", (void*)android_server_UsbDeviceManager_isStartRequested }, + { "nativeGetAudioMode", "()I", + (void*)android_server_UsbDeviceManager_getAudioMode }, }; int register_android_server_UsbDeviceManager(JNIEnv *env) diff --git a/services/jni/com_android_server_input_InputManagerService.cpp b/services/jni/com_android_server_input_InputManagerService.cpp index b2a24292c02b..0e1ce5165220 100644 --- a/services/jni/com_android_server_input_InputManagerService.cpp +++ b/services/jni/com_android_server_input_InputManagerService.cpp @@ -98,12 +98,6 @@ static struct { jclass clazz; } gMotionEventClassInfo; -static struct { - jfieldID touchscreen; - jfieldID keyboard; - jfieldID navigation; -} gConfigurationClassInfo; - // --- Global functions --- @@ -172,7 +166,7 @@ public: void setDisplaySize(int32_t displayId, int32_t width, int32_t height, int32_t externalWidth, int32_t externalHeight); - void setDisplayOrientation(int32_t displayId, int32_t orientation); + void setDisplayOrientation(int32_t displayId, int32_t orientation, int32_t externalOrientation); status_t registerInputChannel(JNIEnv* env, const sp<InputChannel>& inputChannel, const sp<InputWindowHandle>& inputWindowHandle, bool monitor); @@ -230,8 +224,9 @@ private: struct Locked { // Display size information. int32_t displayWidth, displayHeight; // -1 when not initialized - int32_t displayExternalWidth, displayExternalHeight; // -1 when not initialized int32_t displayOrientation; + int32_t displayExternalWidth, displayExternalHeight; // -1 when not initialized + int32_t displayExternalOrientation; // System UI visibility. int32_t systemUiVisibility; @@ -281,9 +276,10 @@ NativeInputManager::NativeInputManager(jobject contextObj, AutoMutex _l(mLock); mLocked.displayWidth = -1; mLocked.displayHeight = -1; + mLocked.displayOrientation = DISPLAY_ORIENTATION_0; mLocked.displayExternalWidth = -1; mLocked.displayExternalHeight = -1; - mLocked.displayOrientation = DISPLAY_ORIENTATION_0; + mLocked.displayExternalOrientation = DISPLAY_ORIENTATION_0; mLocked.systemUiVisibility = ASYSTEM_UI_VISIBILITY_STATUS_BAR_VISIBLE; mLocked.pointerSpeed = 0; @@ -351,7 +347,8 @@ void NativeInputManager::setDisplaySize(int32_t displayId, int32_t width, int32_ } } -void NativeInputManager::setDisplayOrientation(int32_t displayId, int32_t orientation) { +void NativeInputManager::setDisplayOrientation(int32_t displayId, int32_t orientation, + int32_t externalOrientation) { bool changed = false; if (displayId == 0) { AutoMutex _l(mLock); @@ -365,6 +362,11 @@ void NativeInputManager::setDisplayOrientation(int32_t displayId, int32_t orient controller->setDisplayOrientation(orientation); } } + + if (mLocked.displayExternalOrientation != externalOrientation) { + changed = true; + mLocked.displayExternalOrientation = externalOrientation; + } } if (changed) { @@ -450,7 +452,7 @@ void NativeInputManager::getReaderConfiguration(InputReaderConfiguration* outCon mLocked.displayWidth, mLocked.displayHeight, mLocked.displayOrientation); outConfig->setDisplayInfo(0, true /*external*/, mLocked.displayExternalWidth, mLocked.displayExternalHeight, - mLocked.displayOrientation); + mLocked.displayExternalOrientation); } // release lock } @@ -1047,10 +1049,10 @@ static void nativeSetDisplaySize(JNIEnv* env, jclass clazz, jint ptr, } static void nativeSetDisplayOrientation(JNIEnv* env, jclass clazz, - jint ptr, jint displayId, jint orientation) { + jint ptr, jint displayId, jint orientation, jint externalOrientation) { NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); - im->setDisplayOrientation(displayId, orientation); + im->setDisplayOrientation(displayId, orientation, externalOrientation); } static jint nativeGetScanCodeState(JNIEnv* env, jclass clazz, @@ -1228,18 +1230,6 @@ static void nativeSetSystemUiVisibility(JNIEnv* env, im->setSystemUiVisibility(visibility); } -static void nativeGetInputConfiguration(JNIEnv* env, - jclass clazz, jint ptr, jobject configObj) { - NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); - - InputConfiguration config; - im->getInputManager()->getReader()->getInputConfiguration(& config); - - env->SetIntField(configObj, gConfigurationClassInfo.touchscreen, config.touchScreen); - env->SetIntField(configObj, gConfigurationClassInfo.keyboard, config.keyboard); - env->SetIntField(configObj, gConfigurationClassInfo.navigation, config.navigation); -} - static jboolean nativeTransferTouchFocus(JNIEnv* env, jclass clazz, jint ptr, jobject fromChannelObj, jobject toChannelObj) { NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); @@ -1345,7 +1335,7 @@ static JNINativeMethod gInputManagerMethods[] = { (void*) nativeStart }, { "nativeSetDisplaySize", "(IIIIII)V", (void*) nativeSetDisplaySize }, - { "nativeSetDisplayOrientation", "(III)V", + { "nativeSetDisplayOrientation", "(IIII)V", (void*) nativeSetDisplayOrientation }, { "nativeGetScanCodeState", "(IIII)I", (void*) nativeGetScanCodeState }, @@ -1372,8 +1362,6 @@ static JNINativeMethod gInputManagerMethods[] = { (void*) nativeSetInputDispatchMode }, { "nativeSetSystemUiVisibility", "(II)V", (void*) nativeSetSystemUiVisibility }, - { "nativeGetInputConfiguration", "(ILandroid/content/res/Configuration;)V", - (void*) nativeGetInputConfiguration }, { "nativeTransferTouchFocus", "(ILandroid/view/InputChannel;Landroid/view/InputChannel;)Z", (void*) nativeTransferTouchFocus }, { "nativeSetPointerSpeed", "(II)V", @@ -1504,19 +1492,6 @@ int register_android_server_InputManager(JNIEnv* env) { FIND_CLASS(gMotionEventClassInfo.clazz, "android/view/MotionEvent"); gMotionEventClassInfo.clazz = jclass(env->NewGlobalRef(gMotionEventClassInfo.clazz)); - // Configuration - - FIND_CLASS(clazz, "android/content/res/Configuration"); - - GET_FIELD_ID(gConfigurationClassInfo.touchscreen, clazz, - "touchscreen", "I"); - - GET_FIELD_ID(gConfigurationClassInfo.keyboard, clazz, - "keyboard", "I"); - - GET_FIELD_ID(gConfigurationClassInfo.navigation, clazz, - "navigation", "I"); - return 0; } diff --git a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java index ba3fd3c64cd7..c23e868c3123 100644 --- a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java @@ -37,6 +37,7 @@ import static com.android.server.net.NetworkPolicyManagerService.TYPE_LIMIT; import static com.android.server.net.NetworkPolicyManagerService.TYPE_LIMIT_SNOOZED; import static com.android.server.net.NetworkPolicyManagerService.TYPE_WARNING; import static org.easymock.EasyMock.anyInt; +import static org.easymock.EasyMock.anyLong; import static org.easymock.EasyMock.aryEq; import static org.easymock.EasyMock.capture; import static org.easymock.EasyMock.createMock; @@ -106,8 +107,9 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { private static final long TEST_START = 1194220800000L; private static final String TEST_IFACE = "test0"; + private static final String TEST_SSID = "AndroidAP"; - private static NetworkTemplate sTemplateWifi = NetworkTemplate.buildTemplateWifi(); + private static NetworkTemplate sTemplateWifi = NetworkTemplate.buildTemplateWifi(TEST_SSID); private BroadcastInterceptingContext mServiceContext; private File mPolicyDir; @@ -228,6 +230,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { // expect to answer screen status during systemReady() expect(mPowerManager.isScreenOn()).andReturn(true).atLeastOnce(); + expect(mNetworkManager.isBandwidthControlEnabled()).andReturn(true).atLeastOnce(); expectCurrentTime(); replay(); @@ -612,6 +615,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { expect(mConnManager.getAllNetworkState()).andReturn(state).atLeastOnce(); expectCurrentTime(); expectClearNotifications(); + expectAdvisePersistThreshold(); future = expectMeteredIfacesChanged(); replay(); @@ -636,6 +640,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { expectSetInterfaceQuota(TEST_IFACE, (2 * MB_IN_BYTES) - 512); expectClearNotifications(); + expectAdvisePersistThreshold(); future = expectMeteredIfacesChanged(TEST_IFACE); replay(); @@ -703,6 +708,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { expectPolicyDataEnable(TYPE_WIFI, true); expectClearNotifications(); + expectAdvisePersistThreshold(); future = expectMeteredIfacesChanged(); replay(); @@ -729,6 +735,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { expectSetInterfaceQuota(TEST_IFACE, 2 * MB_IN_BYTES); expectClearNotifications(); + expectAdvisePersistThreshold(); future = expectMeteredIfacesChanged(TEST_IFACE); replay(); @@ -793,6 +800,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { // still restricted. expectRemoveInterfaceQuota(TEST_IFACE); expectSetInterfaceQuota(TEST_IFACE, Long.MAX_VALUE); + expectAdvisePersistThreshold(); expectMeteredIfacesChanged(TEST_IFACE); future = expectClearNotifications(); @@ -834,6 +842,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { expectSetInterfaceQuota(TEST_IFACE, Long.MAX_VALUE); expectClearNotifications(); + expectAdvisePersistThreshold(); future = expectMeteredIfacesChanged(TEST_IFACE); replay(); @@ -860,7 +869,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { info.setDetailedState(DetailedState.CONNECTED, null, null); final LinkProperties prop = new LinkProperties(); prop.setInterfaceName(TEST_IFACE); - return new NetworkState(info, prop, null); + return new NetworkState(info, prop, null, null, TEST_SSID); } private void expectCurrentTime() throws Exception { @@ -942,6 +951,11 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase { return future; } + private void expectAdvisePersistThreshold() throws Exception { + mStatsService.advisePersistThreshold(anyLong()); + expectLastCall().anyTimes(); + } + private static class TestAbstractFuture<T> extends AbstractFuture<T> { @Override public T get() throws InterruptedException, ExecutionException { diff --git a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java index 6d9bb2935186..332d1980167f 100644 --- a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java @@ -30,7 +30,7 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.NetworkStatsHistory.FIELD_ALL; import static android.net.NetworkTemplate.buildTemplateMobileAll; -import static android.net.NetworkTemplate.buildTemplateWifi; +import static android.net.NetworkTemplate.buildTemplateWifiWildcard; import static android.net.TrafficStats.MB_IN_BYTES; import static android.net.TrafficStats.UID_REMOVED; import static android.net.TrafficStats.UID_TETHERING; @@ -93,8 +93,9 @@ public class NetworkStatsServiceTest extends AndroidTestCase { private static final String IMSI_1 = "310004"; private static final String IMSI_2 = "310260"; + private static final String TEST_SSID = "AndroidAP"; - private static NetworkTemplate sTemplateWifi = buildTemplateWifi(); + private static NetworkTemplate sTemplateWifi = buildTemplateWifiWildcard(); private static NetworkTemplate sTemplateImsi1 = buildTemplateMobileAll(IMSI_1); private static NetworkTemplate sTemplateImsi2 = buildTemplateMobileAll(IMSI_2); @@ -136,7 +137,6 @@ public class NetworkStatsServiceTest extends AndroidTestCase { mService = new NetworkStatsService( mServiceContext, mNetManager, mAlarmManager, mTime, mStatsDir, mSettings); mService.bindConnectivityManager(mConnManager); - mSession = mService.openSession(); mElapsedRealtime = 0L; @@ -154,6 +154,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { replay(); mService.systemReady(); + mSession = mService.openSession(); verifyAndReset(); mNetworkObserver = networkObserver.getValue(); @@ -162,9 +163,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { @Override public void tearDown() throws Exception { - for (File file : mStatsDir.listFiles()) { - file.delete(); - } + IoUtils.deleteContents(mStatsDir); mServiceContext = null; mStatsDir = null; @@ -820,7 +819,8 @@ public class NetworkStatsServiceTest extends AndroidTestCase { } private void expectNetworkStatsSummary(NetworkStats summary) throws Exception { - expect(mNetManager.getNetworkStatsSummary()).andReturn(summary).atLeastOnce(); + expect(mNetManager.getNetworkStatsSummaryDev()).andReturn(summary).atLeastOnce(); + expect(mNetManager.getNetworkStatsSummaryXt()).andReturn(summary).atLeastOnce(); } private void expectNetworkStatsUidDetail(NetworkStats detail) throws Exception { @@ -846,13 +846,19 @@ public class NetworkStatsServiceTest extends AndroidTestCase { throws Exception { expect(mSettings.getPollInterval()).andReturn(HOUR_IN_MILLIS).anyTimes(); expect(mSettings.getTimeCacheMaxAge()).andReturn(DAY_IN_MILLIS).anyTimes(); - expect(mSettings.getGlobalAlertBytes()).andReturn(MB_IN_BYTES).anyTimes(); expect(mSettings.getSampleEnabled()).andReturn(true).anyTimes(); - final Config config = new Config(bucketDuration, persistBytes, deleteAge, deleteAge); + final Config config = new Config(bucketDuration, deleteAge, deleteAge); expect(mSettings.getDevConfig()).andReturn(config).anyTimes(); + expect(mSettings.getXtConfig()).andReturn(config).anyTimes(); expect(mSettings.getUidConfig()).andReturn(config).anyTimes(); expect(mSettings.getUidTagConfig()).andReturn(config).anyTimes(); + + expect(mSettings.getGlobalAlertBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes(); + expect(mSettings.getDevPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes(); + expect(mSettings.getXtPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes(); + expect(mSettings.getUidPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes(); + expect(mSettings.getUidTagPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes(); } private void expectCurrentTime() throws Exception { @@ -903,7 +909,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { info.setDetailedState(DetailedState.CONNECTED, null, null); final LinkProperties prop = new LinkProperties(); prop.setInterfaceName(TEST_IFACE); - return new NetworkState(info, prop, null); + return new NetworkState(info, prop, null, null, TEST_SSID); } private static NetworkState buildMobile3gState(String subscriberId) { @@ -912,7 +918,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { info.setDetailedState(DetailedState.CONNECTED, null, null); final LinkProperties prop = new LinkProperties(); prop.setInterfaceName(TEST_IFACE); - return new NetworkState(info, prop, null, subscriberId); + return new NetworkState(info, prop, null, subscriberId, null); } private static NetworkState buildMobile4gState(String iface) { diff --git a/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java b/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java index 6a9778ee94ab..afa0eec319ec 100644 --- a/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java @@ -232,7 +232,8 @@ public class ThrottleServiceTest extends AndroidTestCase { final INetworkManagementService nmService = INetworkManagementService.Stub.asInterface(b); // test is currently no-op, just exercises stats apis - Log.d(TAG, nmService.getNetworkStatsSummary().toString()); + Log.d(TAG, nmService.getNetworkStatsSummaryDev().toString()); + Log.d(TAG, nmService.getNetworkStatsSummaryXt().toString()); Log.d(TAG, nmService.getNetworkStatsDetail().toString()); } @@ -286,7 +287,7 @@ public class ThrottleServiceTest extends AndroidTestCase { } /** - * Expect {@link NetworkManagementService#getNetworkStatsSummary()} mock + * Expect {@link NetworkManagementService#getNetworkStatsSummaryDev()} mock * calls, responding with the given counter values. */ public void expectGetInterfaceCounter(long rx, long tx) throws Exception { @@ -294,7 +295,7 @@ public class ThrottleServiceTest extends AndroidTestCase { final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 1); stats.addValues(TEST_IFACE, UID_ALL, SET_DEFAULT, TAG_NONE, rx, 0L, tx, 0L, 0); - expect(mMockNMService.getNetworkStatsSummary()).andReturn(stats).atLeastOnce(); + expect(mMockNMService.getNetworkStatsSummaryDev()).andReturn(stats).atLeastOnce(); } /** diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java index e40f1666ecc0..863482156e87 100644 --- a/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java +++ b/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java @@ -43,7 +43,7 @@ import libcore.io.Streams; */ @MediumTest public class NetworkStatsCollectionTest extends AndroidTestCase { - + private static final String TEST_FILE = "test.bin"; private static final String TEST_IMSI = "310260000000000"; @@ -53,10 +53,10 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { final NetworkStatsCollection collection = new NetworkStatsCollection(30 * MINUTE_IN_MILLIS); collection.readLegacyNetwork(testFile); - + // verify that history read correctly assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI), - 636014522L, 709291L, 88037144L, 518820L); + 636016770L, 709306L, 88038768L, 518836L); // now export into a unified format final ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -70,7 +70,7 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { // and read back into structure, verifying that totals are same collection.read(new ByteArrayInputStream(bos.toByteArray())); assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI), - 636014522L, 709291L, 88037144L, 518820L); + 636016770L, 709306L, 88038768L, 518836L); } public void testReadLegacyUid() throws Exception { @@ -82,7 +82,7 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { // verify that history read correctly assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI), - 637073904L, 711398L, 88342093L, 521006L); + 637076152L, 711413L, 88343717L, 521022L); // now export into a unified format final ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -96,7 +96,7 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { // and read back into structure, verifying that totals are same collection.read(new ByteArrayInputStream(bos.toByteArray())); assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI), - 637073904L, 711398L, 88342093L, 521006L); + 637076152L, 711413L, 88343717L, 521022L); } public void testReadLegacyUidTags() throws Exception { diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index 55f2ca3c4541..97a8755d3e16 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -1139,6 +1139,14 @@ public abstract class DataConnectionTracker extends Handler { mUserDataEnabled = enabled; Settings.Secure.putInt(mPhone.getContext().getContentResolver(), Settings.Secure.MOBILE_DATA, enabled ? 1 : 0); + if (getDataOnRoamingEnabled() == false && + mPhone.getServiceState().getRoaming() == true) { + if (enabled) { + notifyOffApnsOfAvailability(Phone.REASON_ROAMING_ON); + } else { + notifyOffApnsOfAvailability(Phone.REASON_DATA_DISABLED); + } + } if (prevEnabled != getAnyDataEnabled()) { if (!prevEnabled) { resetAllRetryCounts(); diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java index 75eb226d4aa1..bd780654e916 100644 --- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java @@ -463,6 +463,61 @@ public abstract class ServiceStateTracker extends Handler { pollingContext = new int[1]; } + /** + * Return true if time zone needs fixing. + * + * @param phoneBase + * @param operatorNumeric + * @param prevOperatorNumeric + * @param needToFixTimeZone + * @return true if time zone needs to be fixed + */ + protected boolean shouldFixTimeZoneNow(PhoneBase phoneBase, String operatorNumeric, + String prevOperatorNumeric, boolean needToFixTimeZone) { + // Return false if the mcc isn't valid as we don't know where we are. + // Return true if we have an IccCard and the mcc changed or we + // need to fix it because when the NITZ time came in we didn't + // know the country code. + + // If mcc is invalid then we'll return false + int mcc; + try { + mcc = Integer.parseInt(operatorNumeric.substring(0, 3)); + } catch (Exception e) { + if (DBG) { + log("shouldFixTimeZoneNow: no mcc, operatorNumeric=" + operatorNumeric + + " retVal=false"); + } + return false; + } + + // If prevMcc is invalid will make it different from mcc + // so we'll return true if the card exists. + int prevMcc; + try { + prevMcc = Integer.parseInt(prevOperatorNumeric.substring(0, 3)); + } catch (Exception e) { + prevMcc = mcc + 1; + } + + // Determine if the Icc card exists + IccCard iccCard = phoneBase.getIccCard(); + boolean iccCardExist = (iccCard != null) && iccCard.getState().iccCardExist(); + + // Determine retVal + boolean retVal = ((iccCardExist && (mcc != prevMcc)) || needToFixTimeZone); + if (DBG) { + log("shouldFixTimeZoneNow: retVal=" + retVal + + " iccCard=" + iccCard + + " iccCard.state=" + (iccCard == null ? "null" : iccCard.getState().toString()) + + " iccCardExist=" + iccCardExist + + " operatorNumeric=" + operatorNumeric + " mcc=" + mcc + + " prevOperatorNumeric=" + prevOperatorNumeric + " prevMcc=" + prevMcc + + " needToFixTimeZone=" + needToFixTimeZone); + } + return retVal; + } + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("ServiceStateTracker:"); pw.println(" ss=" + ss); diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 7e5e7075e7be..a691eaec22a5 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -629,6 +629,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { */ @Override protected void onRoamingOff() { + if (mUserDataEnabled == false) return; + if (getDataOnRoamingEnabled() == false) { notifyOffApnsOfAvailability(Phone.REASON_ROAMING_OFF); trySetupData(Phone.REASON_ROAMING_OFF); @@ -642,6 +644,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { */ @Override protected void onRoamingOn() { + if (mUserDataEnabled == false) return; + if (getDataOnRoamingEnabled()) { trySetupData(Phone.REASON_ROAMING_ON); notifyDataConnection(Phone.REASON_ROAMING_ON); diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java index ff7a0810a40f..297c2ac90974 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java @@ -377,12 +377,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric); if (operatorNumeric == null) { - if (DBG) { - log("pollStateDone: operatorNumeric=" + operatorNumeric + - " prevOperatorNumeric=" + prevOperatorNumeric + - " mNeedFixZone=" + mNeedFixZone + - " clear PROPERTY_OPERATOR_ISO_COUNTRY"); - } + if (DBG) log("operatorNumeric is null"); phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, ""); mGotCountryCode = false; } else { @@ -396,20 +391,13 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { } catch (StringIndexOutOfBoundsException ex) { loge("countryCodeForMcc error" + ex); } - if (DBG) { - log("pollStateDone: operatorNumeric=" + operatorNumeric + - " prevOperatorNumeric=" + prevOperatorNumeric + - " mNeedFixZone=" + mNeedFixZone + - " mcc=" + mcc + " iso-cc=" + isoCountryCode); - } phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, isoCountryCode); mGotCountryCode = true; - // Fix the time zone If the operator changed or we need to fix it because - // when the NITZ time came in we didn't know the country code. - if ( ! operatorNumeric.equals(prevOperatorNumeric) || mNeedFixZone) { + if (shouldFixTimeZoneNow(phone, operatorNumeric, prevOperatorNumeric, + mNeedFixZone)) { fixTimeZone(isoCountryCode); } } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index b694e0a4c62c..ba2e51a2353e 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -904,9 +904,11 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { if (getAutoTimeZone()) { setAndBroadcastNetworkSetTimeZone(zone.getID()); } else { - log("fixTimeZone: zone == null"); + log("fixTimeZone: skip changing zone as getAutoTimeZone was false"); } saveNitzTimeZone(zone.getID()); + } else { + log("fixTimeZone: zone == null, do nothing for zone"); } } @@ -1003,12 +1005,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric); if (operatorNumeric == null) { - if (DBG) { - log("pollStateDone: operatorNumeric=" + operatorNumeric + - " prevOperatorNumeric=" + prevOperatorNumeric + - " mNeedFixZone=" + mNeedFixZone + - " clear PROPERTY_OPERATOR_ISO_COUNTRY"); - } + if (DBG) log("operatorNumeric is null"); phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, ""); mGotCountryCode = false; } else { @@ -1022,20 +1019,13 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { } catch ( StringIndexOutOfBoundsException ex) { loge("pollStateDone: countryCodeForMcc error" + ex); } - if (DBG) { - log("pollStateDone: operatorNumeric=" + operatorNumeric + - " prevOperatorNumeric=" + prevOperatorNumeric + - " mNeedFixZone=" + mNeedFixZone + - " mcc=" + mcc + " iso-cc=" + isoCountryCode); - } phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, isoCountryCode); mGotCountryCode = true; - // Fix the time zone If the operator changed or we need to fix it because - // when the NITZ time came in we didn't know the country code. - if ( ! operatorNumeric.equals(prevOperatorNumeric) || mNeedFixZone) { + if (shouldFixTimeZoneNow(phone, operatorNumeric, prevOperatorNumeric, + mNeedFixZone)) { fixTimeZone(isoCountryCode); } } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 56dbfb87d50f..bfdb706027c5 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -1863,6 +1863,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { protected void onRoamingOff() { if (DBG) log("onRoamingOff"); + if (mUserDataEnabled == false) return; + if (getDataOnRoamingEnabled() == false) { notifyOffApnsOfAvailability(Phone.REASON_ROAMING_OFF); setupDataOnReadyApns(Phone.REASON_ROAMING_OFF); @@ -1873,6 +1875,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { @Override protected void onRoamingOn() { + if (mUserDataEnabled == false) return; + if (getDataOnRoamingEnabled()) { if (DBG) log("onRoamingOn: setup data on roaming"); setupDataOnReadyApns(Phone.REASON_ROAMING_ON); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index c0acf5b57e71..42355774dae9 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -21,6 +21,7 @@ import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.DataConnectionTracker; import com.android.internal.telephony.EventLogTags; import com.android.internal.telephony.IccCard; +import com.android.internal.telephony.IccCardStatus; import com.android.internal.telephony.MccTable; import com.android.internal.telephony.Phone; import com.android.internal.telephony.RestrictedState; @@ -645,8 +646,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { String opNames[] = (String[])ar.result; if (opNames != null && opNames.length >= 3) { - newSS.setOperatorName ( - opNames[0], opNames[1], opNames[2]); + newSS.setOperatorName (opNames[0], opNames[1], opNames[2]); } break; @@ -858,12 +858,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric); if (operatorNumeric == null) { - if (DBG) { - log("pollStateDone: operatorNumeric=" + operatorNumeric + - " prevOperatorNumeric=" + prevOperatorNumeric + - " mNeedFixZone=" + mNeedFixZone + - " clear PROPERTY_OPERATOR_ISO_COUNTRY"); - } + if (DBG) log("operatorNumeric is null"); phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, ""); mGotCountryCode = false; mNitzUpdatedTime = false; @@ -877,12 +872,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { } catch ( StringIndexOutOfBoundsException ex) { loge("pollStateDone: countryCodeForMcc error" + ex); } - if (DBG) { - log("pollStateDone: operatorNumeric=" + operatorNumeric + - " prevOperatorNumeric=" + prevOperatorNumeric + - " mNeedFixZone=" + mNeedFixZone + - " mcc=" + mcc + " iso-cc=" + iso); - } phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, iso); mGotCountryCode = true; @@ -916,9 +905,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker { } } - // Fix the time zone If the operator changed or we need to fix it because - // when the NITZ time came in we didn't know the country code. - if ( ! operatorNumeric.equals(prevOperatorNumeric) || mNeedFixZone) { + if (shouldFixTimeZoneNow(phone, operatorNumeric, prevOperatorNumeric, + mNeedFixZone)) { // If the offset is (0, false) and the timezone property // is set, use the timezone property rather than // GMT. diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java index 80988fd30050..52e2cafe2b73 100755 --- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java +++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java @@ -1459,6 +1459,11 @@ public class SIMRecords extends IccRecords { * After starting, FSM will search SPN EFs in order and stop after finding * the first valid SPN * + * If the FSM gets restart while waiting for one of + * SPN EFs results (i.e. a SIM refresh occurs after issuing + * read EF_CPHS_SPN), it will re-initialize only after + * receiving and discarding the unfinished SPN EF result. + * * @param start set true only for initialize loading * @param ar the AsyncResult from loadEFTransparent * ar.exception holds exception in error @@ -1468,7 +1473,19 @@ public class SIMRecords extends IccRecords { byte[] data; if (start) { - spnState = Get_Spn_Fsm_State.INIT; + // Check previous state to see if there is outstanding + // SPN read + if(spnState == Get_Spn_Fsm_State.READ_SPN_3GPP || + spnState == Get_Spn_Fsm_State.READ_SPN_CPHS || + spnState == Get_Spn_Fsm_State.READ_SPN_SHORT_CPHS || + spnState == Get_Spn_Fsm_State.INIT) { + // Set INIT then return so the INIT code + // will run when the outstanding read done. + spnState = Get_Spn_Fsm_State.INIT; + return; + } else { + spnState = Get_Spn_Fsm_State.INIT; + } } switch(spnState){ diff --git a/tests/BiDiTests/Android.mk b/tests/BiDiTests/AndroidPrivate.mk index ae29fc262b13..ae29fc262b13 100644 --- a/tests/BiDiTests/Android.mk +++ b/tests/BiDiTests/AndroidPrivate.mk diff --git a/tests/GridLayoutTest/res/drawable/btn_default.xml b/tests/GridLayoutTest/res/drawable/btn_default.xml deleted file mode 100644 index c6cfda04287a..000000000000 --- a/tests/GridLayoutTest/res/drawable/btn_default.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2008 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_window_focused="false" android:state_enabled="true" - android:drawable="@drawable/my_btn_default_normal" /> - <item android:state_window_focused="false" android:state_enabled="false" - android:drawable="@drawable/my_btn_default_normal" /> - <item android:state_pressed="true" - android:drawable="@drawable/my_btn_default_pressed" /> - <item android:state_focused="true" android:state_enabled="true" - android:drawable="@drawable/my_btn_default_selected" /> - <item android:state_enabled="true" - android:drawable="@drawable/my_btn_default_normal" /> - <item android:state_focused="true" - android:drawable="@drawable/my_btn_default_normal_disable_focused" /> - <item - android:drawable="@drawable/my_btn_default_normal_disable" /> -</selector> diff --git a/tests/GridLayoutTest/res/drawable/my_btn_default_normal.9.png b/tests/GridLayoutTest/res/drawable/btn_default_normal.9.png Binary files differindex cd0b7d59a3a9..cd0b7d59a3a9 100644 --- a/tests/GridLayoutTest/res/drawable/my_btn_default_normal.9.png +++ b/tests/GridLayoutTest/res/drawable/btn_default_normal.9.png diff --git a/tests/GridLayoutTest/res/drawable/my_btn_default_normal_disable.9.png b/tests/GridLayoutTest/res/drawable/my_btn_default_normal_disable.9.png Binary files differdeleted file mode 100755 index f4f01c754628..000000000000 --- a/tests/GridLayoutTest/res/drawable/my_btn_default_normal_disable.9.png +++ /dev/null diff --git a/tests/GridLayoutTest/res/drawable/my_btn_default_normal_disable_focused.9.png b/tests/GridLayoutTest/res/drawable/my_btn_default_normal_disable_focused.9.png Binary files differdeleted file mode 100755 index 5376db245791..000000000000 --- a/tests/GridLayoutTest/res/drawable/my_btn_default_normal_disable_focused.9.png +++ /dev/null diff --git a/tests/GridLayoutTest/res/drawable/my_btn_default_pressed.9.png b/tests/GridLayoutTest/res/drawable/my_btn_default_pressed.9.png Binary files differdeleted file mode 100755 index 4312c27f4d6d..000000000000 --- a/tests/GridLayoutTest/res/drawable/my_btn_default_pressed.9.png +++ /dev/null diff --git a/tests/GridLayoutTest/res/drawable/my_btn_default_selected.9.png b/tests/GridLayoutTest/res/drawable/my_btn_default_selected.9.png Binary files differdeleted file mode 100755 index 06b7790ffcab..000000000000 --- a/tests/GridLayoutTest/res/drawable/my_btn_default_selected.9.png +++ /dev/null diff --git a/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java b/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java index e9e1ae775338..103de2f4d28d 100644 --- a/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java +++ b/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java @@ -4,47 +4,50 @@ import android.app.Activity; import android.content.Context; import android.os.Build; import android.os.Bundle; +import android.view.Gravity; import android.view.View; import android.widget.Button; import android.widget.GridLayout; import android.widget.TextView; -import static android.widget.GridLayout.*; +import static android.widget.GridLayout.ALIGN_BOUNDS; +import static android.widget.GridLayout.LayoutParams; +import static android.widget.GridLayout.OPTICAL_BOUNDS; public class LayoutInsetsTest extends Activity { + static int[] GRAVITIES = {Gravity.LEFT, Gravity.LEFT, Gravity.CENTER_HORIZONTAL, Gravity.RIGHT, Gravity.RIGHT}; + public static View create(Context context) { + final int N = GRAVITIES.length; + GridLayout p = new GridLayout(context); p.setUseDefaultMargins(true); - p.setAlignmentMode(ALIGN_BOUNDS); - p.setOrientation(VERTICAL); - - { - TextView c = new TextView(context); - c.setTextSize(32); - c.setText("Email setup"); - p.addView(c); - } - { - Button c = new Button(context); - c.setBackgroundResource(R.drawable.btn_default); - c.setText("Test"); - p.addView(c); - } + //p.setAlignmentMode(ALIGN_BOUNDS); + p.setLayoutMode(OPTICAL_BOUNDS); + + p.setColumnCount(N); + + for (int i = 0; i < 2*N; i++) { + View c; + if (i % 2 == 0) { + TextView tv = new TextView(context); + tv.setTextSize(32); + tv.setText("A"); + c = tv; + } else { + Button b = new Button(context); + b.setBackgroundResource(R.drawable.btn_default_normal); + b.setText("B"); + c = b; + } + + LayoutParams lp = new LayoutParams(); + lp.setGravity(GRAVITIES[(i % N)]); + p.addView(c, lp); - { - Button c = new Button(context); - c.setBackgroundResource(R.drawable.btn_default); - c.setText("Manual setup"); - p.addView(c); - c.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - Button b = (Button) v; - b.setEnabled(false); - } - }); } + return p; } diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml index 3775f9fc54f7..9e103acefe23 100644 --- a/tests/HwAccelerationTest/AndroidManifest.xml +++ b/tests/HwAccelerationTest/AndroidManifest.xml @@ -658,6 +658,15 @@ </activity> <activity + android:name="PathDestructionActivity" + android:label="_PathDestruction"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + + <activity android:name="TransformsAndAnimationsActivity" android:label="_TransformAnim"> <intent-filter> @@ -675,5 +684,14 @@ </intent-filter> </activity> + <activity + android:name="ViewLayerInvalidationActivity" + android:label="_ViewLayerInvalidation"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> </manifest> diff --git a/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml b/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml new file mode 100644 index 000000000000..7df8bb6046b6 --- /dev/null +++ b/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, 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. +*/ +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + <LinearLayout android:orientation="horizontal" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/nestedStatus"/> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/invalidateStatus"/> + </LinearLayout> + <LinearLayout android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:id="@+id/container"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/textview"/> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/textviewa"/> + <LinearLayout android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/container1"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/textview1"/> + </LinearLayout> + <LinearLayout android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/container2"> + <LinearLayout android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/container2a"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/textview2"/> + </LinearLayout> + </LinearLayout> + <LinearLayout android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/container3"> + <LinearLayout android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/container3a"> + <LinearLayout android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/container3b"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="This is some text" + android:id="@+id/textview3"/> + </LinearLayout> + </LinearLayout> + </LinearLayout> + </LinearLayout> +</LinearLayout>
\ No newline at end of file diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java new file mode 100644 index 000000000000..4177725e3847 --- /dev/null +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2012 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.test.hwui; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Path; +import android.os.Bundle; +import android.util.MathUtils; +import android.view.View; + +/** + * The point of this test is to ensure that we can cause many paths to be created, drawn, + * and destroyed without causing hangs or crashes. This tests the native reference counting + * scheme in particular, because we should be able to have the Java-level path finalized + * without destroying the underlying native path object until we are done referencing it + * in pending DisplayLists. + */ +public class PathDestructionActivity extends Activity { + + private static final int MIN_SIZE = 20; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + MyView view = new MyView(this); + setContentView(view); + } + + private static class MyView extends View { + Paint strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + Paint fillPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + Paint fillAndStrokePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private MyView(Context context) { + super(context); + strokePaint.setStyle(Paint.Style.STROKE); + fillPaint.setStyle(Paint.Style.FILL); + fillAndStrokePaint.setStyle(Paint.Style.FILL_AND_STROKE); + } + + private Path getRandomPath() { + float left, top, right, bottom; + left = MathUtils.random(getWidth() - MIN_SIZE); + top = MathUtils.random(getHeight() - MIN_SIZE); + right = left + MathUtils.random(getWidth() - left); + bottom = top + MathUtils.random(getHeight() - top); + Path path = new Path(); + path.moveTo(left, top); + path.lineTo(right, top); + path.lineTo(right, bottom); + path.lineTo(left, bottom); + path.close(); + return path; + } + + private int getRandomColor() { + int red = MathUtils.random(255); + int green = MathUtils.random(255); + int blue = MathUtils.random(255); + return 0xff000000 | red << 16 | green << 8 | blue; + } + + @Override + protected void onDraw(Canvas canvas) { + Path path; + for (int i = 0; i < 15; ++i) { + path = getRandomPath(); + strokePaint.setColor(getRandomColor()); + canvas.drawPath(path, strokePaint); + path = null; + path = getRandomPath(); + fillPaint.setColor(getRandomColor()); + canvas.drawPath(path, fillPaint); + path = null; + path = getRandomPath(); + fillAndStrokePaint.setColor(getRandomColor()); + canvas.drawPath(path, fillAndStrokePaint); + path = null; + } + + invalidate(); + } + } +} diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java new file mode 100644 index 000000000000..6d47d6c467e7 --- /dev/null +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2012 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.test.hwui; + +import android.app.Activity; +import android.graphics.Color; +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import java.util.ArrayList; + +public class ViewLayerInvalidationActivity extends Activity { + + int currentColor = Color.WHITE; + boolean nestedLayersOn = false; + ArrayList<LinearLayout> linearLayouts = new ArrayList<LinearLayout>(); + ArrayList<LinearLayout> topLayouts = new ArrayList<LinearLayout>(); + ArrayList<TextView> textViews = new ArrayList<TextView>(); + LinearLayout container = null; + boolean randomInvalidates = false; + TextView nestedStatusTV, invalidateStatusTV; + static final String NO_NESTING = "Nested Layer: NO "; + static final String NESTING = "Nested Layers: YES "; + static final String NO_INVALIDATING = "Random Invalidating: NO "; + static final String INVALIDATING = "Random Invalidating: YES "; + static final int TEXT_COLOR_INTERVAL = 400; + static final int INVALIDATING_INTERVAL = 1000; + static final int NESTING_INTERVAL = 2000; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.view_layer_invalidation); + + container = (LinearLayout) findViewById(R.id.container); + final LinearLayout container1 = (LinearLayout) findViewById(R.id.container1); + final LinearLayout container2 = (LinearLayout) findViewById(R.id.container2); + final LinearLayout container3 = (LinearLayout) findViewById(R.id.container3); + nestedStatusTV = (TextView) findViewById(R.id.nestedStatus); + invalidateStatusTV = (TextView) findViewById(R.id.invalidateStatus); + final TextView tva = (TextView) findViewById(R.id.textviewa); + + topLayouts.add(container1); + topLayouts.add(container2); + topLayouts.add(container3); + + collectLinearLayouts(container); + collectTextViews(container); + + nestedStatusTV.setText(NO_NESTING); + invalidateStatusTV.setText(NO_INVALIDATING); + + tva.setLayerType(View.LAYER_TYPE_HARDWARE, null); + container1.setLayerType(View.LAYER_TYPE_HARDWARE, null); + container2.setLayerType(View.LAYER_TYPE_HARDWARE, null); + container3.setLayerType(View.LAYER_TYPE_HARDWARE, null); + + container.postDelayed(textColorSetter, TEXT_COLOR_INTERVAL); + container.postDelayed(nestedLayerSetter, NESTING_INTERVAL); + container.postDelayed(randomInvalidatesSetter, INVALIDATING_INTERVAL); + } + + private Runnable textColorSetter = new Runnable() { + @Override + public void run() { + currentColor = (currentColor == Color.WHITE) ? Color.RED : Color.WHITE; + for (TextView tv : textViews) { + tv.setTextColor(currentColor); + } + if (randomInvalidates) { + randomInvalidator(container); + } + container.postDelayed(textColorSetter, TEXT_COLOR_INTERVAL); + } + }; + + private Runnable randomInvalidatesSetter = new Runnable() { + @Override + public void run() { + randomInvalidates = !randomInvalidates; + invalidateStatusTV.setText(randomInvalidates ? INVALIDATING : NO_INVALIDATING); + container.postDelayed(randomInvalidatesSetter, INVALIDATING_INTERVAL); + } + }; + + private Runnable nestedLayerSetter = new Runnable() { + @Override + public void run() { + nestedLayersOn = !nestedLayersOn; + nestedStatusTV.setText(nestedLayersOn ? NESTING : NO_NESTING); + for (LinearLayout layout : linearLayouts) { + layout.setLayerType(nestedLayersOn ? + View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE, null); + } + if (!nestedLayersOn) { + for (LinearLayout layout : topLayouts) { + layout.setLayerType(View.LAYER_TYPE_HARDWARE, null); + } + } + container.postDelayed(nestedLayerSetter, NESTING_INTERVAL); + } + }; + + /** + * Invalidates views based on random chance (50%). This is meant to test + * invalidating several items in the hierarchy at the same time, which can cause artifacts + * if our invalidation-propagation logic is not sound. + */ + private void randomInvalidator(ViewGroup parent) { + for (int i = 0; i < parent.getChildCount(); ++i) { + View child = parent.getChildAt(i); + if (Math.random() < .5) { + child.invalidate(); + } + if (child instanceof ViewGroup) { + randomInvalidator((ViewGroup) child); + } + } + } + + private void collectLinearLayouts(View view) { + if (!(view instanceof LinearLayout)) { + return; + } + LinearLayout parent = (LinearLayout) view; + linearLayouts.add(parent); + for (int i = 0; i < parent.getChildCount(); ++i) { + collectLinearLayouts(parent.getChildAt(i)); + } + } + + private void collectTextViews(View view) { + if (view instanceof TextView) { + textViews.add((TextView) view); + return; + } + if (!(view instanceof ViewGroup)) { + return; + } + ViewGroup parent = (ViewGroup) view; + for (int i = 0; i < parent.getChildCount(); ++i) { + collectTextViews(parent.getChildAt(i)); + } + } +} diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java index 7105f2dc8de8..d2e1527c7667 100644 --- a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java @@ -68,6 +68,7 @@ public class RSTestCore { unitTests.add(new UT_constant(this, mRes, mCtx)); unitTests.add(new UT_vector(this, mRes, mCtx)); unitTests.add(new UT_array_init(this, mRes, mCtx)); + unitTests.add(new UT_array_alloc(this, mRes, mCtx)); unitTests.add(new UT_convert(this, mRes, mCtx)); unitTests.add(new UT_rsdebug(this, mRes, mCtx)); unitTests.add(new UT_rstime(this, mRes, mCtx)); @@ -80,11 +81,11 @@ public class RSTestCore { unitTests.add(new UT_struct(this, mRes, mCtx)); unitTests.add(new UT_math(this, mRes, mCtx)); unitTests.add(new UT_math_conformance(this, mRes, mCtx)); - unitTests.add(new UT_mesh(this, mRes, mCtx)); unitTests.add(new UT_element(this, mRes, mCtx)); unitTests.add(new UT_sampler(this, mRes, mCtx)); unitTests.add(new UT_program_store(this, mRes, mCtx)); unitTests.add(new UT_program_raster(this, mRes, mCtx)); + unitTests.add(new UT_mesh(this, mRes, mCtx)); unitTests.add(new UT_fp_mad(this, mRes, mCtx)); /* diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_array_alloc.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_array_alloc.java new file mode 100644 index 000000000000..befe865a2735 --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_array_alloc.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2012 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.rs.test; + +import android.content.Context; +import android.content.res.Resources; +import android.renderscript.*; + +public class UT_array_alloc extends UnitTest { + private Resources mRes; + + protected UT_array_alloc(RSTestCore rstc, Resources res, Context ctx) { + super(rstc, "Array Allocation", ctx); + mRes = res; + } + + public void run() { + RenderScript pRS = RenderScript.create(mCtx); + ScriptC_array_alloc s = new ScriptC_array_alloc(pRS, mRes, R.raw.array_alloc); + pRS.setMessageHandler(mRsMessage); + + int dimX = s.get_dimX(); + Allocation[] Arr = new Allocation[dimX]; + Type.Builder typeBuilder = new Type.Builder(pRS, Element.I32(pRS)); + Type T = typeBuilder.setX(1).create(); + for (int i = 0; i < dimX; i++) { + Allocation A = Allocation.createTyped(pRS, T); + Arr[i] = A; + } + s.set_a(Arr); + + s.invoke_array_alloc_test(); + pRS.finish(); + waitForMessage(); + pRS.destroy(); + passTest(); + } +} diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/array_alloc.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/array_alloc.rs new file mode 100644 index 000000000000..74ffdb1674da --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/array_alloc.rs @@ -0,0 +1,21 @@ +#include "shared.rsh" + +const int dimX = 20; +rs_allocation a[dimX]; + +void array_alloc_test() { + bool failed = false; + + for (int i = 0; i < dimX; i++) { + rsDebug("i: ", i); + _RS_ASSERT(rsAllocationGetDimX(a[i]) == 1); + } + + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} + diff --git a/tests/SmokeTest/tests/src/com/android/smoketest/ProcessErrorsTest.java b/tests/SmokeTest/tests/src/com/android/smoketest/ProcessErrorsTest.java index b3a260050a52..03c2923900f6 100644 --- a/tests/SmokeTest/tests/src/com/android/smoketest/ProcessErrorsTest.java +++ b/tests/SmokeTest/tests/src/com/android/smoketest/ProcessErrorsTest.java @@ -28,17 +28,18 @@ import android.util.Log; import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; +import java.util.Collections; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; /** - * This smoke test is designed to quickly sniff for any error conditions - * encountered after initial startup. + * This smoke test is designed to check for crashes and ANRs in an attempt to quickly determine if + * all minimal functionality in the build is working properly. */ public class ProcessErrorsTest extends AndroidTestCase { - + private static final String TAG = "ProcessErrorsTest"; private final Intent mHomeIntent; @@ -46,15 +47,28 @@ public class ProcessErrorsTest extends AndroidTestCase { protected ActivityManager mActivityManager; protected PackageManager mPackageManager; + /** + * Used to buffer asynchronously-caused crashes and ANRs so that we can have a big fail-party + * in the catch-all testCase. + */ + private static final Collection<ProcessError> mAsyncErrors = + Collections.synchronizedSet(new LinkedHashSet<ProcessError>()); + public ProcessErrorsTest() { mHomeIntent = new Intent(Intent.ACTION_MAIN); mHomeIntent.addCategory(Intent.CATEGORY_HOME); mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } + /** + * {@inheritDoc} + */ @Override public void setUp() throws Exception { super.setUp(); + // First, make sure we have a Context + assertNotNull("getContext() returned null!", getContext()); + mActivityManager = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE); mPackageManager = getContext().getPackageManager(); @@ -75,43 +89,48 @@ public class ProcessErrorsTest extends AndroidTestCase { assertNull(reportMsg, reportMsg); } - private String checkForProcessErrors() throws Exception { - List<ProcessErrorStateInfo> errList; - errList = mActivityManager.getProcessesInErrorState(); + /** + * A test that runs all Launcher-launchable activities and verifies that no ANRs or crashes + * happened while doing so. + */ + public void testRunAllActivities() throws Exception { + final Set<ProcessError> errSet = new LinkedHashSet<ProcessError>(); - // note: this contains information about each process that is currently in an error - // condition. if the list is empty (null) then "we're good". + for (ResolveInfo app : getLauncherActivities(mPackageManager)) { + final Collection<ProcessError> errProcs = runOneActivity(app); + if (errProcs != null) { + errSet.addAll(errProcs); + } + } - // if the list is non-empty, then it's useful to report the contents of the list - final String reportMsg = reportListContents(errList); - return reportMsg; + if (!errSet.isEmpty()) { + fail(String.format("Got %d errors:\n%s", errSet.size(), + reportWrappedListContents(errSet))); + } } /** - * A helper function to query the provided {@link PackageManager} for a list of Activities that - * can be launched from Launcher. + * This test checks for asynchronously-caused errors (crashes or ANRs) and fails in case any + * were found. This prevents us from needing to fail unrelated testcases when, for instance + * a background thread causes a crash or ANR. + * <p /> + * Because this behavior depends on the contents of static member {@link mAsyncErrors}, we clear + * that state here as a side-effect so that if two successive runs happen in the same process, + * the asynchronous errors in the second test run won't include errors produced during the first + * run. */ - static List<ResolveInfo> getLauncherActivities(PackageManager pm) { - final Intent launchable = new Intent(Intent.ACTION_MAIN); - launchable.addCategory(Intent.CATEGORY_LAUNCHER); - final List<ResolveInfo> activities = pm.queryIntentActivities(launchable, 0); - return activities; + public void testZZReportAsyncErrors() throws Exception { + try { + if (!mAsyncErrors.isEmpty()) { + fail(String.format("Got %d asynchronous errors:\n%s", mAsyncErrors.size(), + reportWrappedListContents(mAsyncErrors))); + } + } finally { + // Reset state just in case we should get another set of runs in the same process + mAsyncErrors.clear(); + } } - /** - * A helper function to create an {@link Intent} to run, given a {@link ResolveInfo} specifying - * an activity to be launched. - */ - static Intent intentForActivity(ResolveInfo app) { - // build an Intent to launch the specified app - final ComponentName component = new ComponentName(app.activityInfo.packageName, - app.activityInfo.name); - final Intent intent = new Intent(Intent.ACTION_MAIN); - intent.setComponent(component); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); - return intent; - } /** * A method to run the specified Activity and return a {@link Collection} of the Activities that @@ -129,8 +148,7 @@ public class ProcessErrorsTest extends AndroidTestCase { // We check for any Crash or ANR dialogs that are already up, and we ignore them. This is // so that we don't report crashes that were caused by prior apps (which those particular - // tests should have caught and reported already). Otherwise, test failures would cascade - // from the initial broken app to many/all of the tests following that app's launch. + // tests should have caught and reported already). final Collection<ProcessError> preErrProcs = ProcessError.fromCollection(mActivityManager.getProcessesInErrorState()); @@ -155,8 +173,24 @@ public class ProcessErrorsTest extends AndroidTestCase { // possible to occur. final Collection<ProcessError> errProcs = ProcessError.fromCollection(mActivityManager.getProcessesInErrorState()); - // Take the difference between the error processes we see now, and the ones that were - // present when we started + + // Distinguish the asynchronous crashes/ANRs from the synchronous ones by checking the + // crash package name against the package name for {@code app} + if (errProcs != null) { + Iterator<ProcessError> errIter = errProcs.iterator(); + while (errIter.hasNext()) { + ProcessError err = errIter.next(); + if (!packageMatches(app, err)) { + // async! Drop into mAsyncErrors and don't report now + mAsyncErrors.add(err); + errIter.remove(); + } + } + } + // Take the difference between the remaining current error processes and the ones that were + // present when we started. The result is guaranteed to be: + // 1) Errors that are pertinent to this app's package + // 2) Errors that are pertinent to this particular app invocation if (errProcs != null && preErrProcs != null) { errProcs.removeAll(preErrProcs); } @@ -164,27 +198,63 @@ public class ProcessErrorsTest extends AndroidTestCase { return errProcs; } + private String checkForProcessErrors() throws Exception { + List<ProcessErrorStateInfo> errList; + errList = mActivityManager.getProcessesInErrorState(); + + // note: this contains information about each process that is currently in an error + // condition. if the list is empty (null) then "we're good". + + // if the list is non-empty, then it's useful to report the contents of the list + final String reportMsg = reportListContents(errList); + return reportMsg; + } + /** - * A test that runs all Launcher-launchable activities and verifies that no ANRs or crashes - * happened while doing so. + * A helper function that checks whether the specified error could have been caused by the + * specified app. + * + * @param app The app to check against + * @param err The error that we're considering */ - public void testRunAllActivities() throws Exception { - final Set<ProcessError> errSet = new HashSet<ProcessError>(); + private static boolean packageMatches(ResolveInfo app, ProcessError err) { + final String appPkg = app.activityInfo.packageName; + final String errPkg = err.info.processName; + Log.d(TAG, String.format("packageMatches(%s, %s)", appPkg, errPkg)); + return appPkg.equals(errPkg); + } - for (ResolveInfo app : getLauncherActivities(mPackageManager)) { - final Collection<ProcessError> errProcs = runOneActivity(app); - if (errProcs != null) { - errSet.addAll(errProcs); - } - } + /** + * A helper function to query the provided {@link PackageManager} for a list of Activities that + * can be launched from Launcher. + */ + static List<ResolveInfo> getLauncherActivities(PackageManager pm) { + final Intent launchable = new Intent(Intent.ACTION_MAIN); + launchable.addCategory(Intent.CATEGORY_LAUNCHER); + final List<ResolveInfo> activities = pm.queryIntentActivities(launchable, 0); + return activities; + } - if (!errSet.isEmpty()) { - fail(String.format("Got %d errors:\n%s", errSet.size(), - reportWrappedListContents(errSet))); - } + /** + * A helper function to create an {@link Intent} to run, given a {@link ResolveInfo} specifying + * an activity to be launched. + */ + static Intent intentForActivity(ResolveInfo app) { + final ComponentName component = new ComponentName(app.activityInfo.packageName, + app.activityInfo.name); + final Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setComponent(component); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + return intent; } - String reportWrappedListContents(Collection<ProcessError> errList) { + /** + * Report error reports for {@link ProcessErrorStateInfo} instances that are wrapped inside of + * {@link ProcessError} instances. Just unwraps and calls + * {@see reportListContents(Collection<ProcessErrorStateInfo>)}. + */ + static String reportWrappedListContents(Collection<ProcessError> errList) { List<ProcessErrorStateInfo> newList = new ArrayList<ProcessErrorStateInfo>(errList.size()); for (ProcessError err : errList) { newList.add(err.info); @@ -198,7 +268,7 @@ public class ProcessErrorsTest extends AndroidTestCase { * @param errList The error report containing one or more error records. * @return Returns a string containing all of the errors. */ - private String reportListContents(Collection<ProcessErrorStateInfo> errList) { + private static String reportListContents(Collection<ProcessErrorStateInfo> errList) { if (errList == null) return null; StringBuilder builder = new StringBuilder(); diff --git a/tests/SmokeTest/tests/src/com/android/smoketest/SmokeTestRunner.java b/tests/SmokeTest/tests/src/com/android/smoketest/SmokeTestRunner.java index 51331fe84e82..db549a19dc0f 100644 --- a/tests/SmokeTest/tests/src/com/android/smoketest/SmokeTestRunner.java +++ b/tests/SmokeTest/tests/src/com/android/smoketest/SmokeTestRunner.java @@ -47,9 +47,6 @@ public class SmokeTestRunner extends InstrumentationTestRunner { final PackageManager pm = getTargetContext().getPackageManager(); final List<ResolveInfo> apps = ProcessErrorsTest.getLauncherActivities(pm); - // FIXME: figure out some way to control the reported class names for these anonymous - // FIXME: class instances. - final TestCase setupTest = new ProcessErrorsTest() { @Override public void runTest() throws Exception { @@ -88,6 +85,15 @@ public class SmokeTestRunner extends InstrumentationTestRunner { suite.addTest(appTest); } + final TestCase asyncErrorTest = new ProcessErrorsTest() { + @Override + public void runTest() throws Exception { + testZZReportAsyncErrors(); + } + }; + asyncErrorTest.setName("testAsynchronousErrors"); + suite.addTest(asyncErrorTest); + return suite; } } diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java index a90af159272a..70e2aac96d92 100644 --- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java @@ -715,20 +715,28 @@ public class NotificationTestList extends TestActivity new Test("Ten Notifications") { public void run() { for (int i = 0; i < 2; i++) { - Notification n = new Notification(NotificationTestList.this, + Notification n = new Notification( kNumberedIconResIDs[i], - null, System.currentTimeMillis(), "Persistent #" + i, - "Notify me!!!" + i, null); - n.flags |= Notification.FLAG_ONGOING_EVENT; + null, System.currentTimeMillis()); n.number = i; + n.setLatestEventInfo( + NotificationTestList.this, + "Persistent #" + i, + "Notify me!!!" + i, + null); + n.flags |= Notification.FLAG_ONGOING_EVENT; mNM.notify((i+1)*10, n); } for (int i = 2; i < 10; i++) { - Notification n = new Notification(NotificationTestList.this, + Notification n = new Notification( kNumberedIconResIDs[i], - null, System.currentTimeMillis(), "Persistent #" + i, - "Notify me!!!" + i, null); + null, System.currentTimeMillis()); n.number = i; + n.setLatestEventInfo( + NotificationTestList.this, + "Persistent #" + i, + "Notify me!!!" + i, + null); mNM.notify((i+1)*10, n); } } diff --git a/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeBasicsTest.java b/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeBasicsTest.java index 07d7c3484261..1ecccf6bfc4a 100644 --- a/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeBasicsTest.java +++ b/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeBasicsTest.java @@ -186,6 +186,13 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase { assertRaisesException("testController.foo()"); } + public void testUncaughtJavaExceptionRaisesJavaException() throws Throwable { + injectObjectAndReload(new Object() { + public void method() { throw new RuntimeException("foo"); } + }, "testObject"); + assertRaisesException("testObject.method()"); + } + // Note that this requires that we can pass a JavaScript string to Java. public void testTypeOfStaticMethod() throws Throwable { injectObjectAndReload(new ObjectWithStaticMethod(), "testObject"); @@ -394,7 +401,6 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase { assertEquals("", mTestController.waitForStringValue()); } - // java.lang.reflect only allows access to public methods and fields. See b/6386557. public void testReflectPublicMethod() throws Throwable { injectObjectAndReload(new Object() { public String method() { return "foo"; } @@ -404,7 +410,6 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase { ".toString()")); } - // java.lang.reflect only allows access to public methods and fields. See b/6386557. public void testReflectPublicField() throws Throwable { injectObjectAndReload(new Object() { public String field = "foo"; @@ -412,4 +417,26 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase { assertEquals("foo", executeJavaScriptAndGetStringResult( "testObject.getClass().getField('field').get(testObject).toString()")); } + + public void testReflectPrivateMethodRaisesException() throws Throwable { + injectObjectAndReload(new Object() { + private void method() {}; + }, "testObject"); + assertRaisesException("testObject.getClass().getMethod('method', null)"); + // getDeclaredMethod() is able to access a private method, but invoke() + // throws a Java exception. + assertRaisesException( + "testObject.getClass().getDeclaredMethod('method', null).invoke(testObject, null)"); + } + + public void testReflectPrivateFieldRaisesException() throws Throwable { + injectObjectAndReload(new Object() { + private int field; + }, "testObject"); + assertRaisesException("testObject.getClass().getField('field')"); + // getDeclaredField() is able to access a private field, but getInt() + // throws a Java exception. + assertRaisesException( + "testObject.getClass().getDeclaredField('field').getInt(testObject)"); + } } diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp index a4473c8c6951..d428fefc6cd9 100644 --- a/tools/aapt/Command.cpp +++ b/tools/aapt/Command.cpp @@ -1740,20 +1740,6 @@ int doPackage(Bundle* bundle) // Write the R.java file into the appropriate class directory // e.g. gen/com/foo/app/R.java err = writeResourceSymbols(bundle, assets, assets->getPackage(), true); - // If we have library files, we're going to write our R.java file into - // the appropriate class directory for those libraries as well. - // e.g. gen/com/foo/app/lib/R.java - if (bundle->getExtraPackages() != NULL) { - // Split on colon - String8 libs(bundle->getExtraPackages()); - char* packageString = strtok(libs.lockBuffer(libs.length()), ":"); - while (packageString != NULL) { - // Write the R.java file out with the correct package name - err = writeResourceSymbols(bundle, assets, String8(packageString), true); - packageString = strtok(NULL, ":"); - } - libs.unlockBuffer(); - } } else { const String8 customPkg(bundle->getCustomPackage()); err = writeResourceSymbols(bundle, assets, customPkg, true); @@ -1761,6 +1747,23 @@ int doPackage(Bundle* bundle) if (err < 0) { goto bail; } + // If we have library files, we're going to write our R.java file into + // the appropriate class directory for those libraries as well. + // e.g. gen/com/foo/app/lib/R.java + if (bundle->getExtraPackages() != NULL) { + // Split on colon + String8 libs(bundle->getExtraPackages()); + char* packageString = strtok(libs.lockBuffer(libs.length()), ":"); + while (packageString != NULL) { + // Write the R.java file out with the correct package name + err = writeResourceSymbols(bundle, assets, String8(packageString), true); + if (err < 0) { + goto bail; + } + packageString = strtok(NULL, ":"); + } + libs.unlockBuffer(); + } } else { err = writeResourceSymbols(bundle, assets, assets->getPackage(), false); if (err < 0) { diff --git a/tools/layoutlib/bridge/src/android/animation/AnimationThread.java b/tools/layoutlib/bridge/src/android/animation/AnimationThread.java index b46134ad4aa1..b10ec9fec2ad 100644 --- a/tools/layoutlib/bridge/src/android/animation/AnimationThread.java +++ b/tools/layoutlib/bridge/src/android/animation/AnimationThread.java @@ -84,20 +84,22 @@ public abstract class AnimationThread extends Thread { public void run() { Bridge.prepareThread(); try { + /* FIXME: The ANIMATION_FRAME message no longer exists. Instead, the + * animation timing loop is completely based on a Choreographer objects + * that schedules animation and drawing frames. The animation handler is + * no longer even a handler; it is just a Runnable enqueued on the Choreographer. Handler_Delegate.setCallback(new IHandlerCallback() { @Override public void sendMessageAtTime(Handler handler, Message msg, long uptimeMillis) { - if (msg.what == ValueAnimator.ANIMATION_START /*|| - FIXME: The ANIMATION_FRAME message no longer exists. Instead, - the animation timing loop is based on a Choreographer object - that schedules animation and drawing frames. - msg.what == ValueAnimator.ANIMATION_FRAME*/) { + if (msg.what == ValueAnimator.ANIMATION_START || + msg.what == ValueAnimator.ANIMATION_FRAME) { mQueue.add(new MessageBundle(handler, msg, uptimeMillis)); } else { // just ignore. } } }); + */ // call out to the pre-animation work, which should start an animation or more. Result result = preAnimation(); diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java index 7c683c9e1f5a..c44ddc6e1409 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java @@ -47,8 +47,8 @@ public final class BridgeWindow implements IWindow { } @Override - public void resized(int arg0, int arg1, Rect arg2, Rect arg3, boolean arg4, Configuration arg5) - throws RemoteException { + public void resized(int arg0, int arg1, Rect argBlah, Rect arg2, Rect arg3, + boolean arg4, Configuration arg5) throws RemoteException { // pass for now. } @@ -91,6 +91,10 @@ public final class BridgeWindow implements IWindow { } @Override + public void doneAnimating() { + } + + @Override public IBinder asBinder() { // pass for now. return null; diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java index d3721ed10f70..3996d2693241 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java @@ -69,8 +69,8 @@ public final class BridgeWindowSession implements IWindowSession { } @Override public int relayout(IWindow arg0, int seq, LayoutParams arg1, int arg2, int arg3, int arg4, - int arg4_5, Rect arg5, Rect arg6, Rect arg7, Configuration arg7b, Surface arg8) - throws RemoteException { + int arg4_5, Rect arg4_6, Rect arg5, Rect arg6, Rect arg7, Configuration arg7b, + Surface arg8) throws RemoteException { // pass for now. return 0; } diff --git a/tools/makekeycodes/Android.mk b/tools/makekeycodes/Android.mk deleted file mode 100644 index 401d44e9692b..000000000000 --- a/tools/makekeycodes/Android.mk +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2005 The Android Open Source Project - -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - makekeycodes.cpp - -LOCAL_MODULE := makekeycodes - -include $(BUILD_HOST_EXECUTABLE) - - diff --git a/tools/makekeycodes/makekeycodes.cpp b/tools/makekeycodes/makekeycodes.cpp deleted file mode 100644 index 6ffbfb859ab8..000000000000 --- a/tools/makekeycodes/makekeycodes.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -#include <stdio.h> -#include <androidfw/KeycodeLabels.h> - -int -main(int argc, char** argv) -{ - // TODO: Add full copyright. - printf("// Copyright (C) 2008 The Android Open Source Project\n"); - printf("//\n"); - printf("// This file is generated by makekeycodes from the definitions.\n"); - printf("// in includes/ui/KeycodeLabels.h.\n"); - printf("//\n"); - printf("// If you modify this, your changes will be overwritten.\n"); - printf("\n"); - printf("pacakge android.os;\n"); - printf("\n"); - printf("public class KeyEvent\n"); - printf("{\n"); - - for (int i=0; KEYCODES[i].literal != NULL; i++) { - printf(" public static final int KEYCODE_%s = 0x%08x;\n", - KEYCODES[i].literal, KEYCODES[i].value); - } - - printf("\n"); - for (int i=0; FLAGS[i].literal != NULL; i++) { - printf(" public static final int MODIFIER_%s = 0x%08x;\n", - FLAGS[i].literal, FLAGS[i].value); - } - - printf("}\n"); - return 0; -} diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java index 3c761c802439..e9f34803d0f6 100644 --- a/wifi/java/android/net/wifi/WifiConfigStore.java +++ b/wifi/java/android/net/wifi/WifiConfigStore.java @@ -194,31 +194,6 @@ class WifiConfigStore { } } - /** - * Selects the specified network config for connection. This involves - * addition/update of the specified config, updating the priority of - * all the networks and enabling the given network while disabling others. - * - * Selecting a network will leave the other networks disabled and - * a call to enableAllNetworks() needs to be issued upon a connection - * or a failure event from supplicant - * - * @param config The configuration details in WifiConfiguration - * @return the networkId now associated with the specified configuration - */ - int selectNetwork(WifiConfiguration config) { - if (config != null) { - NetworkUpdateResult result = addOrUpdateNetworkNative(config); - int netId = result.getNetworkId(); - if (netId != INVALID_NETWORK_ID) { - selectNetwork(netId); - } else { - loge("Failed to update network " + config); - } - return netId; - } - return INVALID_NETWORK_ID; - } /** * Selects the specified network for connection. This involves @@ -230,8 +205,11 @@ class WifiConfigStore { * or a failure event from supplicant * * @param netId network to select for connection + * @return false if the network id is invalid */ - void selectNetwork(int netId) { + boolean selectNetwork(int netId) { + if (netId == INVALID_NETWORK_ID) return false; + // Reset the priority of each network at start or if it goes too high. if (mLastPriority == -1 || mLastPriority > 1000000) { for(WifiConfiguration config : mConfiguredNetworks.values()) { @@ -256,6 +234,7 @@ class WifiConfigStore { /* Avoid saving the config & sending a broadcast to prevent settings * from displaying a disabled list of networks */ + return true; } /** @@ -265,6 +244,12 @@ class WifiConfigStore { * @return network update result */ NetworkUpdateResult saveNetwork(WifiConfiguration config) { + // A new network cannot have null SSID + if (config == null || (config.networkId == INVALID_NETWORK_ID && + config.SSID == null)) { + return new NetworkUpdateResult(INVALID_NETWORK_ID); + } + boolean newNetwork = (config.networkId == INVALID_NETWORK_ID); NetworkUpdateResult result = addOrUpdateNetworkNative(config); int netId = result.getNetworkId(); diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 30e4a2077897..1f1cfdde515c 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -266,6 +266,7 @@ public class WifiInfo implements Parcelable { /** {@hide} */ public static String removeDoubleQuotes(String string) { + if (string == null) return null; final int length = string.length(); if ((length > 1) && (string.charAt(0) == '"') && (string.charAt(length - 1) == '"')) { return string.substring(1, length - 1); diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 8aa613b45bed..36f38f93ff1c 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -1557,7 +1557,7 @@ public class WifiManager { */ public void acquire() { synchronized (mBinder) { - if (mRefCounted ? (++mRefCount > 0) : (!mHeld)) { + if (mRefCounted ? (++mRefCount == 1) : (!mHeld)) { try { mService.acquireWifiLock(mBinder, mLockType, mTag, mWorkSource); synchronized (WifiManager.this) { @@ -1786,7 +1786,7 @@ public class WifiManager { */ public void acquire() { synchronized (mBinder) { - if (mRefCounted ? (++mRefCount > 0) : (!mHeld)) { + if (mRefCounted ? (++mRefCount == 1) : (!mHeld)) { try { mService.acquireMulticastLock(mBinder, mTag); synchronized (WifiManager.this) { diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index 4ec2e02d5174..73618f69a23a 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -270,25 +270,6 @@ public class WifiNative { && doBooleanCommand("DRIVER RXFILTER-START"); } - public int getPowerMode() { - String ret = doStringCommand("DRIVER GETPOWER"); - if (!TextUtils.isEmpty(ret)) { - // reply comes back in the form "powermode = XX" where XX is the - // number we're interested in. - String[] tokens = ret.split(" = "); - try { - if (tokens.length == 2) return Integer.parseInt(tokens[1]); - } catch (NumberFormatException e) { - return -1; - } - } - return -1; - } - - public boolean setPowerMode(int mode) { - return doBooleanCommand("DRIVER POWERMODE " + mode); - } - public int getBand() { String ret = doStringCommand("DRIVER GETBAND"); if (!TextUtils.isEmpty(ret)) { @@ -366,12 +347,10 @@ public class WifiNative { } public void enableBackgroundScan(boolean enable) { - //Note: BGSCAN-START and BGSCAN-STOP are documented in core/res/res/values/config.xml - //and will need an update if the names are changed if (enable) { - doBooleanCommand("DRIVER BGSCAN-START"); + doBooleanCommand("SET pno 1"); } else { - doBooleanCommand("DRIVER BGSCAN-STOP"); + doBooleanCommand("SET pno 0"); } } @@ -463,8 +442,16 @@ public class WifiNative { return doBooleanCommand("SET p2p_ssid_postfix " + postfix); } - public boolean setP2pGroupIdle(String iface, int time) { - return doBooleanCommand("SET interface=" + iface + " p2p_group_idle " + time); + public boolean setP2pGroupIdle(int time) { + return doBooleanCommand("SET p2p_group_idle " + time); + } + + public void setPowerSave(boolean enabled) { + if (enabled) { + doBooleanCommand("SET ps 1"); + } else { + doBooleanCommand("SET ps 0"); + } } public boolean setP2pPowerSave(String iface, boolean enabled) { @@ -480,7 +467,7 @@ public class WifiNative { * P2P connection over STA */ public boolean setConcurrencyPriority(String s) { - return doBooleanCommand("P2P_SET conc_priority " + s); + return doBooleanCommand("P2P_SET conc_pref " + s); } public boolean p2pFind() { @@ -549,15 +536,17 @@ public class WifiNative { /* Persist unless there is an explicit request to not do so*/ //if (config.persist != WifiP2pConfig.Persist.NO) args.add("persistent"); - if (joinExistingGroup) args.add("join"); - - //TODO: This can be adapted based on device plugged in state and - //device battery state - int groupOwnerIntent = config.groupOwnerIntent; - if (groupOwnerIntent < 0 || groupOwnerIntent > 15) { - groupOwnerIntent = DEFAULT_GROUP_OWNER_INTENT; + if (joinExistingGroup) { + args.add("join"); + } else { + //TODO: This can be adapted based on device plugged in state and + //device battery state + int groupOwnerIntent = config.groupOwnerIntent; + if (groupOwnerIntent < 0 || groupOwnerIntent > 15) { + groupOwnerIntent = DEFAULT_GROUP_OWNER_INTENT; + } + args.add("go_intent=" + groupOwnerIntent); } - args.add("go_intent=" + groupOwnerIntent); String command = "P2P_CONNECT "; for (String s : args) command += s + " "; diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 705e3c7a1ca8..b09920279e95 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -184,6 +184,9 @@ public class WifiStateMachine extends StateMachine { private LinkProperties mLinkProperties; + /* Tracks sequence number on a periodic scan message */ + private int mPeriodicScanToken = 0; + // Wakelock held during wifi start/stop and driver load/unload private PowerManager.WakeLock mWakeLock; @@ -305,13 +308,11 @@ public class WifiStateMachine extends StateMachine { static final int CMD_RECONNECT = BASE + 75; /* Reassociate to a network */ static final int CMD_REASSOCIATE = BASE + 76; - /* Controls power mode and suspend mode optimizations + /* Controls suspend mode optimizations * - * When high perf mode is enabled, power mode is set to - * POWER_MODE_ACTIVE and suspend mode optimizations are disabled + * When high perf mode is enabled, suspend mode optimizations are disabled * - * When high perf mode is disabled, power mode is set to - * POWER_MODE_AUTO and suspend mode optimizations are enabled + * When high perf mode is disabled, suspend mode optimizations are enabled * * Suspend mode optimizations include: * - packet filtering @@ -333,6 +334,9 @@ public class WifiStateMachine extends StateMachine { static final int CMD_SET_SUSPEND_OPTIMIZATIONS = BASE + 86; /* Clear suspend mode optimizations in the driver */ static final int CMD_CLEAR_SUSPEND_OPTIMIZATIONS = BASE + 87; + /* When there are no saved networks, we do a periodic scan to notify user of + * an open network */ + static final int CMD_NO_NETWORKS_PERIODIC_SCAN = BASE + 88; /* arg1 values to CMD_STOP_PACKET_FILTERING and CMD_START_PACKET_FILTERING */ static final int MULTICAST_V6 = 1; @@ -374,11 +378,8 @@ public class WifiStateMachine extends StateMachine { */ private static final int DEFAULT_MAX_DHCP_RETRIES = 9; - static final int POWER_MODE_ACTIVE = 1; - static final int POWER_MODE_AUTO = 0; - - /* Tracks the power mode for restoration after a DHCP request/renewal goes through */ - private int mPowerMode = POWER_MODE_AUTO; + /* Tracks if power save is enabled in driver */ + private boolean mPowerSaveEnabled = true;; /** * Default framework scan interval in milliseconds. This is used in the scenario in which @@ -390,10 +391,11 @@ public class WifiStateMachine extends StateMachine { private final int mDefaultFrameworkScanIntervalMs; /** - * Default supplicant scan interval in milliseconds. - * {@link Settings.Secure#WIFI_SUPPLICANT_SCAN_INTERVAL_MS} can override this. + * Supplicant scan interval in milliseconds. + * Comes from {@link Settings.Secure#WIFI_SUPPLICANT_SCAN_INTERVAL_MS} or + * from the default config if the setting is not set */ - private final int mDefaultSupplicantScanIntervalMs; + private long mSupplicantScanIntervalMs; /** * Minimum time interval between enabling all networks. @@ -573,9 +575,6 @@ public class WifiStateMachine extends StateMachine { mDefaultFrameworkScanIntervalMs = mContext.getResources().getInteger( com.android.internal.R.integer.config_wifi_framework_scan_interval); - mDefaultSupplicantScanIntervalMs = mContext.getResources().getInteger( - com.android.internal.R.integer.config_wifi_supplicant_scan_interval); - mDriverStopDelayMs = mContext.getResources().getInteger( com.android.internal.R.integer.config_wifi_driver_stop_delay); @@ -1534,8 +1533,7 @@ public class WifiStateMachine extends StateMachine { private void sendNetworkStateChangeBroadcast(String bssid) { Intent intent = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION); - intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT - | Intent.FLAG_RECEIVER_REPLACE_PENDING); + intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, new NetworkInfo(mNetworkInfo)); intent.putExtra(WifiManager.EXTRA_LINK_PROPERTIES, new LinkProperties (mLinkProperties)); if (bssid != null) @@ -1684,21 +1682,18 @@ public class WifiStateMachine extends StateMachine { mWifiNative.BLUETOOTH_COEXISTENCE_MODE_DISABLED); } - mPowerMode = mWifiNative.getPowerMode(); - if (mPowerMode < 0) { - // Handle the case where supplicant driver does not support - // getPowerModeCommand. - mPowerMode = WifiStateMachine.POWER_MODE_AUTO; - } - if (mPowerMode != WifiStateMachine.POWER_MODE_ACTIVE) { - mWifiNative.setPowerMode(WifiStateMachine.POWER_MODE_ACTIVE); + /* Disable power save during DHCP */ + if (mPowerSaveEnabled) { + mPowerSaveEnabled = false; + mWifiNative.setPowerSave(mPowerSaveEnabled); } } void handlePostDhcpSetup() { - /* restore power mode */ - mWifiNative.setPowerMode(mPowerMode); + /* Restore power save */ + mPowerSaveEnabled = true; + mWifiNative.setPowerSave(mPowerSaveEnabled); // Set the coexistence mode back to its default value mWifiNative.setBluetoothCoexistenceMode( @@ -1822,8 +1817,7 @@ public class WifiStateMachine extends StateMachine { replyToMessage(message, message.what, FAILURE); break; case CMD_GET_CONFIGURED_NETWORKS: - replyToMessage(message, message.what, - mWifiConfigStore.getConfiguredNetworks()); + replyToMessage(message, message.what, (List<WifiConfiguration>) null); break; case CMD_ENABLE_RSSI_POLL: mEnableRssiPolling = (message.arg1 == 1); @@ -1879,6 +1873,7 @@ public class WifiStateMachine extends StateMachine { case WifiWatchdogStateMachine.POOR_LINK_DETECTED: case WifiWatchdogStateMachine.GOOD_LINK_DETECTED: case CMD_CLEAR_SUSPEND_OPTIMIZATIONS: + case CMD_NO_NETWORKS_PERIODIC_SCAN: break; case CMD_SET_SUSPEND_OPTIMIZATIONS: mSuspendWakeLock.release(); @@ -2278,11 +2273,15 @@ public class WifiStateMachine extends StateMachine { mIsScanMode = false; /* Wifi is available as long as we have a connection to supplicant */ mNetworkInfo.setIsAvailable(true); - /* Set scan interval */ - long supplicantScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(), + + int defaultInterval = mContext.getResources().getInteger( + com.android.internal.R.integer.config_wifi_supplicant_scan_interval); + + mSupplicantScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(), Settings.Secure.WIFI_SUPPLICANT_SCAN_INTERVAL_MS, - mDefaultSupplicantScanIntervalMs); - mWifiNative.setScanInterval((int)supplicantScanIntervalMs / 1000); + defaultInterval); + + mWifiNative.setScanInterval((int)mSupplicantScanIntervalMs / 1000); } @Override public boolean processMessage(Message message) { @@ -2362,6 +2361,10 @@ public class WifiStateMachine extends StateMachine { } } break; + case CMD_GET_CONFIGURED_NETWORKS: + replyToMessage(message, message.what, + mWifiConfigStore.getConfiguredNetworks()); + break; /* Cannot start soft AP while in client mode */ case CMD_START_AP: loge("Failed to start soft AP with a running supplicant"); @@ -2550,6 +2553,8 @@ public class WifiStateMachine extends StateMachine { mWifiNative.stopFilteringMulticastV4Packets(); } + mWifiNative.setPowerSave(mPowerSaveEnabled); + if (mIsScanMode) { mWifiNative.setScanResultHandling(SCAN_ONLY_MODE); mWifiNative.disconnect(); @@ -2821,15 +2826,15 @@ public class WifiStateMachine extends StateMachine { break; case WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT: SupplicantState state = handleSupplicantStateChange(message); - // Due to a WEXT bug, during the time of driver start/stop - // we can go into a driver stopped state in an unexpected way. - // The sequence eventually puts interface - // up and we should be back to a connected state + // A driver/firmware hang can now put the interface in a down state. + // We detect the interface going down and recover from it if (!SupplicantState.isDriverActive(state)) { if (mNetworkInfo.getState() != NetworkInfo.State.DISCONNECTED) { handleNetworkDisconnect(); } + log("Detected an interface down, restart driver"); transitionTo(mDriverStoppedState); + sendMessage(CMD_START_DRIVER); break; } @@ -2856,35 +2861,33 @@ public class WifiStateMachine extends StateMachine { mWifiNative.reassociate(); break; case WifiManager.CONNECT_NETWORK: + /* The connect message can contain a network id passed as arg1 on message or + * or a config passed as obj on message. + * For a new network, a config is passed to create and connect. + * For an existing network, a network id is passed + */ int netId = message.arg1; WifiConfiguration config = (WifiConfiguration) message.obj; - /* We connect to a specific network by issuing a select - * to the WifiConfigStore. This enables the network, - * while disabling all other networks in the supplicant. - * Disabling a connected network will cause a disconnection - * from the network. A reconnectCommand() will then initiate - * a connection to the enabled network. - */ + /* Save the network config */ if (config != null) { - netId = mWifiConfigStore.selectNetwork(config); - } else { - mWifiConfigStore.selectNetwork(netId); + NetworkUpdateResult result = mWifiConfigStore.saveNetwork(config); + netId = result.getNetworkId(); } - /* The state tracker handles enabling networks upon completion/failure */ - mSupplicantStateTracker.sendMessage(WifiManager.CONNECT_NETWORK); - - if (mWifiNative.reconnect()) { + if (mWifiConfigStore.selectNetwork(netId) && + mWifiNative.reconnect()) { + /* The state tracker handles enabling networks upon completion/failure */ + mSupplicantStateTracker.sendMessage(WifiManager.CONNECT_NETWORK); replyToMessage(message, WifiManager.CONNECT_NETWORK_SUCCEEDED); + /* Expect a disconnection from the old connection */ + transitionTo(mDisconnectingState); } else { - loge("Failed to initiate connection"); + loge("Failed to connect config: " + config + " netId: " + netId); replyToMessage(message, WifiManager.CONNECT_NETWORK_FAILED, WifiManager.ERROR); + break; } - - /* Expect a disconnection from the old connection */ - transitionTo(mDisconnectingState); break; case WifiManager.START_WPS: WpsInfo wpsInfo = (WpsInfo) message.obj; @@ -3279,11 +3282,39 @@ public class WifiStateMachine extends StateMachine { } else { setScanAlarm(true); } + + /** + * If we have no networks saved, the supplicant stops doing the periodic scan. + * The scans are useful to notify the user of the presence of an open network. + * Note that these are not wake up scans. + */ + if (mWifiConfigStore.getConfiguredNetworks().size() == 0) { + sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN, + ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs); + } } @Override public boolean processMessage(Message message) { if (DBG) log(getName() + message.toString() + "\n"); + boolean ret = HANDLED; switch (message.what) { + case CMD_NO_NETWORKS_PERIODIC_SCAN: + if (message.arg1 == mPeriodicScanToken && + mWifiConfigStore.getConfiguredNetworks().size() == 0) { + sendMessage(CMD_START_SCAN); + sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN, + ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs); + } + break; + case WifiManager.FORGET_NETWORK: + case CMD_REMOVE_NETWORK: + // Set up a delayed message here. After the forget/remove is handled + // the handled delayed message will determine if there is a need to + // scan and continue + sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN, + ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs); + ret = NOT_HANDLED; + break; case CMD_SET_SCAN_MODE: if (message.arg1 == SCAN_ONLY_MODE) { mWifiNative.setScanResultHandling(message.arg1); @@ -3310,25 +3341,28 @@ public class WifiStateMachine extends StateMachine { StateChangeResult stateChangeResult = (StateChangeResult) message.obj; setNetworkDetailedState(WifiInfo.getDetailedStateOf(stateChangeResult.state)); /* ConnectModeState does the rest of the handling */ - return NOT_HANDLED; + ret = NOT_HANDLED; + break; case CMD_START_SCAN: /* Disable background scan temporarily during a regular scan */ if (mEnableBackgroundScan) { mWifiNative.enableBackgroundScan(false); } /* Handled in parent state */ - return NOT_HANDLED; + ret = NOT_HANDLED; + break; case WifiMonitor.SCAN_RESULTS_EVENT: /* Re-enable background scan when a pending scan result is received */ if (mEnableBackgroundScan && mScanResultIsPending) { mWifiNative.enableBackgroundScan(true); } /* Handled in parent state */ - return NOT_HANDLED; + ret = NOT_HANDLED; + break; default: - return NOT_HANDLED; + ret = NOT_HANDLED; } - return HANDLED; + return ret; } @Override diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java b/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java index 375172757f89..8942ff1152c0 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java @@ -27,8 +27,9 @@ import java.util.Collections; import java.util.HashMap; /** - * A class representing a Wi-Fi P2p device list + * A class representing a Wi-Fi P2p device list. * + * Note that the operations are not thread safe. * {@see WifiP2pManager} */ public class WifiP2pDeviceList implements Parcelable { @@ -83,6 +84,13 @@ public class WifiP2pDeviceList implements Parcelable { } /** @hide */ + public void updateStatus(String deviceAddress, int status) { + if (deviceAddress == null) return; + WifiP2pDevice d = mDevices.get(deviceAddress); + d.status = status; + } + + /** @hide */ public WifiP2pDevice get(String deviceAddress) { if (deviceAddress == null) return null; diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java index 018e0a820f4f..ef77d45740da 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java @@ -30,6 +30,7 @@ import android.net.wifi.p2p.nsd.WifiP2pServiceResponse; import android.net.wifi.p2p.nsd.WifiP2pUpnpServiceInfo; import android.net.wifi.p2p.nsd.WifiP2pUpnpServiceResponse; import android.os.Binder; +import android.os.Bundle; import android.os.IBinder; import android.os.Handler; import android.os.Looper; @@ -265,6 +266,41 @@ public class WifiP2pManager { */ public static final String EXTRA_WIFI_P2P_DEVICE = "wifiP2pDevice"; + /** + * The lookup key for a {@link #String} object. + * Retrieve with {@link android.os.Bundle#getString(String)}. + * @hide + */ + public static final String APP_PKG_BUNDLE_KEY = "appPkgName"; + + /** + * The lookup key for a {@link #Boolean} object. + * Retrieve with {@link android.os.Bundle#getBoolean(String)}. + * @hide + */ + public static final String RESET_DIALOG_LISTENER_BUNDLE_KEY = "dialogResetFlag"; + + /** + * The lookup key for a {@link #String} object. + * Retrieve with {@link android.os.Bundle#getString(String)}. + * @hide + */ + public static final String WPS_PIN_BUNDLE_KEY = "wpsPin"; + + /** + * The lookup key for a {@link android.net.wifi.p2p.WifiP2pDevice} object + * Retrieve with {@link android.os.Bundle#getParcelable(String)}. + * @hide + */ + public static final String P2P_DEV_BUNDLE_KEY = "wifiP2pDevice"; + + /** + * The lookup key for a {@link android.net.wifi.p2p.WifiP2pConfig} object + * Retrieve with {@link android.os.Bundle#getParcelable(String)}. + * @hide + */ + public static final String P2P_CONFIG_BUNDLE_KEY = "wifiP2pConfig"; + IWifiP2pManager mService; private static final int BASE = Protocol.BASE_WIFI_P2P_MANAGER; @@ -381,6 +417,25 @@ public class WifiP2pManager { /** @hide */ public static final int RESPONSE_SERVICE = BASE + 50; + /** @hide */ + public static final int SET_DEVICE_NAME = BASE + 51; + /** @hide */ + public static final int SET_DEVICE_NAME_FAILED = BASE + 52; + /** @hide */ + public static final int SET_DEVICE_NAME_SUCCEEDED = BASE + 53; + + /** @hide */ + public static final int SET_DIALOG_LISTENER = BASE + 54; + /** @hide */ + public static final int DIALOG_LISTENER_DETACHED = BASE + 55; + /** @hide */ + public static final int DIALOG_LISTENER_ATTACHED = BASE + 56; + + /** @hide */ + public static final int CONNECTION_REQUESTED = BASE + 57; + /** @hide */ + public static final int SHOW_PIN_REQUESTED = BASE + 58; + /** * Create a new WifiP2pManager instance. Applications use * {@link android.content.Context#getSystemService Context.getSystemService()} to retrieve @@ -420,6 +475,14 @@ public class WifiP2pManager { */ public static final int NO_SERVICE_REQUESTS = 3; + /** + * Passed with {@link DialogListener#onDetached}. + * Indicates that the registered listener was detached from the system because + * the application went into background. + * @hide + */ + public static final int NOT_IN_FOREGROUND = 4; + /** Interface for callback invocation when framework channel is lost */ public interface ChannelListener { /** @@ -468,7 +531,7 @@ public class WifiP2pManager { public void onGroupInfoAvailable(WifiP2pGroup group); } - /** + /** * Interface for callback invocation when service discovery response other than * Upnp or Bonjour is received */ @@ -552,15 +615,59 @@ public class WifiP2pManager { /** + * Interface for callback invocation when dialog events are received. + * see {@link #setDialogListener}. + * @hide + */ + public interface DialogListener { + + /** + * Called by the system when a request to show WPS pin is received. + * + * @param pin WPS pin. + */ + public void onShowPinRequested(String pin); + + /** + * Called by the system when a request to establish the connection is received. + * + * Application can then call {@link #connect} with the given config if the request + * is acceptable. + * + * @param device the source device. + * @param config p2p configuration. + */ + public void onConnectionRequested(WifiP2pDevice device, WifiP2pConfig config); + + /** + * Called by the system when this listener was attached to the system. + */ + public void onAttached(); + + /** + * Called by the system when this listener was detached from the system or + * failed to attach. + * + * Application can request again using {@link #setDialogListener} when it is + * in the foreground. + * + * @param reason The reason for failure could be one of {@link #ERROR}, + * {@link #BUSY}, {@link #P2P_UNSUPPORTED} or {@link #NOT_IN_FOREGROUND} + */ + public void onDetached(int reason); + } + + /** * A channel that connects the application to the Wifi p2p framework. * Most p2p operations require a Channel as an argument. An instance of Channel is obtained * by doing a call on {@link #initialize} */ public static class Channel { - Channel(Looper looper, ChannelListener l) { + Channel(Context context, Looper looper, ChannelListener l) { mAsyncChannel = new AsyncChannel(); mHandler = new P2pHandler(looper); mChannelListener = l; + mContext = context; } private final static int INVALID_LISTENER_KEY = 0; private ChannelListener mChannelListener; @@ -571,9 +678,11 @@ public class WifiP2pManager { private HashMap<Integer, Object> mListenerMap = new HashMap<Integer, Object>(); private Object mListenerMapLock = new Object(); private int mListenerKey = 0; + private DialogListener mDialogListener; - AsyncChannel mAsyncChannel; - P2pHandler mHandler; + private AsyncChannel mAsyncChannel; + private P2pHandler mHandler; + Context mContext; class P2pHandler extends Handler { P2pHandler(Looper looper) { super(looper); @@ -603,6 +712,7 @@ public class WifiP2pManager { case WifiP2pManager.ADD_SERVICE_REQUEST_FAILED: case WifiP2pManager.REMOVE_SERVICE_REQUEST_FAILED: case WifiP2pManager.CLEAR_SERVICE_REQUESTS_FAILED: + case WifiP2pManager.SET_DEVICE_NAME_FAILED: if (listener != null) { ((ActionListener) listener).onFailure(message.arg1); } @@ -621,6 +731,7 @@ public class WifiP2pManager { case WifiP2pManager.ADD_SERVICE_REQUEST_SUCCEEDED: case WifiP2pManager.REMOVE_SERVICE_REQUEST_SUCCEEDED: case WifiP2pManager.CLEAR_SERVICE_REQUESTS_SUCCEEDED: + case WifiP2pManager.SET_DEVICE_NAME_SUCCEEDED: if (listener != null) { ((ActionListener) listener).onSuccess(); } @@ -647,6 +758,34 @@ public class WifiP2pManager { WifiP2pServiceResponse resp = (WifiP2pServiceResponse) message.obj; handleServiceResponse(resp); break; + case WifiP2pManager.CONNECTION_REQUESTED: + if (mDialogListener != null) { + Bundle bundle = message.getData(); + mDialogListener.onConnectionRequested( + (WifiP2pDevice)bundle.getParcelable( + P2P_DEV_BUNDLE_KEY), + (WifiP2pConfig)bundle.getParcelable( + P2P_CONFIG_BUNDLE_KEY)); + } + break; + case WifiP2pManager.SHOW_PIN_REQUESTED: + if (mDialogListener != null) { + Bundle bundle = message.getData(); + mDialogListener.onShowPinRequested( + bundle.getString(WPS_PIN_BUNDLE_KEY)); + } + break; + case WifiP2pManager.DIALOG_LISTENER_ATTACHED: + if (mDialogListener != null) { + mDialogListener.onAttached(); + } + break; + case WifiP2pManager.DIALOG_LISTENER_DETACHED: + if (mDialogListener != null) { + mDialogListener.onDetached(message.arg1); + mDialogListener = null; + } + break; default: Log.d(TAG, "Ignored " + message); break; @@ -712,6 +851,10 @@ public class WifiP2pManager { return mListenerMap.remove(key); } } + + private void setDialogListener(DialogListener listener) { + mDialogListener = listener; + } } private static void checkChannel(Channel c) { @@ -739,7 +882,7 @@ public class WifiP2pManager { Messenger messenger = getMessenger(); if (messenger == null) return null; - Channel c = new Channel(srcLooper, listener); + Channel c = new Channel(srcContext, srcLooper, listener); if (c.mAsyncChannel.connectSync(srcContext, c.mHandler, messenger) == AsyncChannel.STATUS_SUCCESSFUL) { return c; @@ -1104,6 +1247,56 @@ public class WifiP2pManager { } /** + * Set p2p device name. + * @hide + * @param c is the channel created at {@link #initialize} + * @param listener for callback when group info is available. Can be null. + */ + public void setDeviceName(Channel c, String devName, ActionListener listener) { + checkChannel(c); + WifiP2pDevice d = new WifiP2pDevice(); + d.deviceName = devName; + c.mAsyncChannel.sendMessage(SET_DEVICE_NAME, 0, c.putListener(listener), d); + } + + + /** + * Set dialog listener to over-ride system dialogs on p2p events. This function + * allows an application to receive notifications on connection requests from + * peers so that it can customize the user experience for connection with + * peers. + * + * <p> The function call immediately returns after sending a request + * to the framework. The application is notified of a success or failure to attach + * to the system through listener callbacks {@link DialogListener#onAttached} or + * {@link DialogListener#onDetached}. + * + * <p> Note that only foreground application will be successful in overriding the + * system dialogs. + * @hide + * + * @param c is the channel created at {@link #initialize} + * @param listener for callback on a dialog event. + */ + public void setDialogListener(Channel c, DialogListener listener) { + checkChannel(c); + c.setDialogListener(listener); + + /** + * mAsyncChannel should always stay private and inaccessible from the app + * to prevent an app from sending a message with a fake app name to gain + * control over the dialogs + */ + Message msg = Message.obtain(); + Bundle bundle = new Bundle(); + bundle.putString(APP_PKG_BUNDLE_KEY, c.mContext.getPackageName()); + bundle.putBoolean(RESET_DIALOG_LISTENER_BUNDLE_KEY, listener == null); + msg.what = SET_DIALOG_LISTENER; + msg.setData(bundle); + c.mAsyncChannel.sendMessage(msg); + } + + /** * Get a reference to WifiP2pService handler. This is used to establish * an AsyncChannel communication with WifiService * diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java b/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java index f70abe8ca306..b3f34b4d6f96 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java @@ -50,19 +50,10 @@ public class WifiP2pProvDiscEvent { /** * @param string formats supported include * - * P2P-PROV-DISC-PBC-REQ 42:fc:89:e1:e2:27 p2p_dev_addr=42:fc:89:e1:e2:27 - * pri_dev_type=1-0050F204-1 name='p2p-TEST2' config_methods=0x188 dev_capab=0x27 - * group_capab=0x0 - * + * P2P-PROV-DISC-PBC-REQ 42:fc:89:e1:e2:27 * P2P-PROV-DISC-PBC-RESP 02:12:47:f2:5a:36 - * - * P2P-PROV-DISC-ENTER-PIN 42:fc:89:e1:e2:27 p2p_dev_addr=42:fc:89:e1:e2:27 - * pri_dev_type=1-0050F204-1 name='p2p-TEST2' config_methods=0x188 dev_capab=0x27 - * group_capab=0x0 - * - * P2P-PROV-DISC-SHOW-PIN 42:fc:89:e1:e2:27 44490607 p2p_dev_addr=42:fc:89:e1:e2:27 - * pri_dev_type=1-0050F204-1 name='p2p-TEST2' config_methods=0x188 dev_capab=0x27 - * group_capab=0x0 + * P2P-PROV-DISC-ENTER-PIN 42:fc:89:e1:e2:27 + * P2P-PROV-DISC-SHOW-PIN 42:fc:89:e1:e2:27 44490607 * * Note: The events formats can be looked up in the wpa_supplicant code * @hide @@ -80,51 +71,12 @@ public class WifiP2pProvDiscEvent { else if (tokens[0].endsWith("SHOW-PIN")) event = SHOW_PIN; else throw new IllegalArgumentException("Malformed event " + string); + device = new WifiP2pDevice(); + device.deviceAddress = tokens[1]; - for (String token : tokens) { - String[] nameValue = token.split("="); - if (nameValue.length != 2) { - //mac address without key is device address - if (token.matches("(([0-9a-f]{2}:){5}[0-9a-f]{2})")) { - device.deviceAddress = token; - } else if (token.matches("[0-9]+")) { - pin = token; - } else { - //ignore; - } - continue; - } - - if (nameValue[0].equals("p2p_dev_addr")) { - device.deviceAddress = nameValue[1]; - continue; - } - - if (nameValue[0].equals("pri_dev_type")) { - device.primaryDeviceType = nameValue[1]; - continue; - } - - if (nameValue[0].equals("name")) { - device.deviceName = trimQuotes(nameValue[1]); - continue; - } - - if (nameValue[0].equals("config_methods")) { - device.wpsConfigMethodsSupported = parseHex(nameValue[1]); - continue; - } - - if (nameValue[0].equals("dev_capab")) { - device.deviceCapability = parseHex(nameValue[1]); - continue; - } - - if (nameValue[0].equals("group_capab")) { - device.groupCapability = parseHex(nameValue[1]); - continue; - } + if (event == SHOW_PIN) { + pin = tokens[2]; } } @@ -135,27 +87,4 @@ public class WifiP2pProvDiscEvent { sbuf.append("\n pin: ").append(pin); return sbuf.toString(); } - - private String trimQuotes(String str) { - str = str.trim(); - if (str.startsWith("'") && str.endsWith("'")) { - return str.substring(1, str.length()-1); - } - return str; - } - - //supported formats: 0x1abc, 0X1abc, 1abc - private int parseHex(String hexString) { - int num = 0; - if (hexString.startsWith("0x") || hexString.startsWith("0X")) { - hexString = hexString.substring(2); - } - - try { - num = Integer.parseInt(hexString, 16); - } catch(NumberFormatException e) { - Log.e(TAG, "Failed to parse hex string " + hexString); - } - return num; - } } diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java index 6168f0efa198..b4a879a82080 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java @@ -16,10 +16,13 @@ package android.net.wifi.p2p; +import android.app.Activity; +import android.app.ActivityManager; import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; +import android.app.ActivityManager.RunningTaskInfo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; @@ -46,15 +49,19 @@ import android.net.wifi.p2p.nsd.WifiP2pServiceInfo; import android.net.wifi.p2p.nsd.WifiP2pServiceRequest; import android.net.wifi.p2p.nsd.WifiP2pServiceResponse; import android.os.Binder; +import android.os.Bundle; import android.os.IBinder; import android.os.INetworkManagementService; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.os.Messenger; +import android.os.Parcel; +import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; +import android.os.Parcelable.Creator; import android.provider.Settings; import android.text.TextUtils; import android.util.Slog; @@ -81,7 +88,7 @@ import java.util.HashMap; import java.util.List; /** - * WifiP2pService inclues a state machine to perform Wi-Fi p2p operations. Applications + * WifiP2pService includes a state machine to perform Wi-Fi p2p operations. Applications * communicate with this service to issue device discovery and connectivity requests * through the WifiP2pManager interface. The state machine communicates with the wifi * driver through wpa_supplicant and handles the event responses through WifiMonitor. @@ -102,6 +109,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub { INetworkManagementService mNwService; private DhcpStateMachine mDhcpStateMachine; + private ActivityManager mActivityMgr; + private P2pStateMachine mP2pStateMachine; private AsyncChannel mReplyChannel = new AsyncChannel(); private AsyncChannel mWifiChannel; @@ -148,7 +157,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { /* When a group has been explicitly created by an app, we persist the group * even after all clients have been disconnected until an explicit remove * is invoked */ - private boolean mPersistGroup; + private boolean mAutonomousGroup; /* Track whether we are in p2p discovery. This is used to avoid sending duplicate * broadcasts @@ -167,6 +176,13 @@ public class WifiP2pService extends IWifiP2pManager.Stub { /* clients(application) information list. */ private HashMap<Messenger, ClientInfo> mClientInfoList = new HashMap<Messenger, ClientInfo>(); + /* The foreground application's messenger. + * The connection request is notified only to foreground application */ + private Messenger mForegroundAppMessenger; + + /* the package name of foreground application. */ + private String mForegroundAppPkgName; + /* Is chosen as a unique range to avoid conflict with the range defined in Tethering.java */ private static final String[] DHCP_RANGE = {"192.168.49.2", "192.168.49.254"}; @@ -177,6 +193,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub { //STOPSHIP: get this from native side mInterface = "p2p0"; + mActivityMgr = (ActivityManager)context.getSystemService(Activity.ACTIVITY_SERVICE); + mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_WIFI_P2P, 0, NETWORKTYPE, ""); mP2pSupported = mContext.getPackageManager().hasSystemFeature( @@ -184,7 +202,6 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mThisDevice.primaryDeviceType = mContext.getResources().getString( com.android.internal.R.string.config_wifi_p2p_device_type); - mThisDevice.deviceName = getDefaultDeviceName(); mP2pStateMachine = new P2pStateMachine(TAG, mP2pSupported); mP2pStateMachine.start(); @@ -205,14 +222,6 @@ public class WifiP2pService extends IWifiP2pManager.Stub { "WifiP2pService"); } - /* We use the 4 digits of the ANDROID_ID to have a friendly - * default that has low likelihood of collision with a peer */ - private String getDefaultDeviceName() { - String id = Settings.Secure.getString(mContext.getContentResolver(), - Settings.Secure.ANDROID_ID); - return "Android_" + id.substring(0,4); - } - /** * Get a reference to handler. This is used by a client to establish * an AsyncChannel communication with WifiP2pService @@ -270,6 +279,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub { // Saved WifiP2pGroup from invitation request private WifiP2pGroup mSavedP2pGroup; + // Saved WifiP2pDevice from provisioning request + private WifiP2pDevice mSavedProvDiscDevice; + P2pStateMachine(String name, boolean p2pSupported) { super(name); @@ -376,6 +388,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { WifiP2pManager.CLEAR_SERVICE_REQUESTS_FAILED, WifiP2pManager.BUSY); break; + case WifiP2pManager.SET_DEVICE_NAME: + replyToMessage(message, WifiP2pManager.SET_DEVICE_NAME_FAILED, + WifiP2pManager.BUSY); + break; case WifiP2pManager.REQUEST_PEERS: replyToMessage(message, WifiP2pManager.RESPONSE_PEERS, mPeers); break; @@ -385,6 +401,18 @@ public class WifiP2pService extends IWifiP2pManager.Stub { case WifiP2pManager.REQUEST_GROUP_INFO: replyToMessage(message, WifiP2pManager.RESPONSE_GROUP_INFO, mGroup); break; + case WifiP2pManager.SET_DIALOG_LISTENER: + String appPkgName = (String)message.getData().getString( + WifiP2pManager.APP_PKG_BUNDLE_KEY); + boolean isReset = message.getData().getBoolean( + WifiP2pManager.RESET_DIALOG_LISTENER_BUNDLE_KEY); + if (setDialogListenerApp(message.replyTo, appPkgName, isReset)) { + replyToMessage(message, WifiP2pManager.DIALOG_LISTENER_ATTACHED); + } else { + replyToMessage(message, WifiP2pManager.DIALOG_LISTENER_DETACHED, + WifiP2pManager.NOT_IN_FOREGROUND); + } + break; // Ignore case WifiMonitor.P2P_INVITATION_RESULT_EVENT: case WifiMonitor.SCAN_RESULTS_EVENT: @@ -398,15 +426,16 @@ public class WifiP2pService extends IWifiP2pManager.Stub { case PEER_CONNECTION_USER_REJECT: case GROUP_CREATING_TIMED_OUT: break; - /* unexpected group created, remove */ + /* unexpected group created, remove */ case WifiMonitor.P2P_GROUP_STARTED_EVENT: mGroup = (WifiP2pGroup) message.obj; loge("Unexpected group creation, remove " + mGroup); mWifiNative.p2pGroupRemove(mGroup.getInterface()); break; + // A group formation failure is always followed by + // a group removed event. Flushing things at group formation + // failure causes supplicant issues. Ignore right now. case WifiMonitor.P2P_GROUP_FORMATION_FAILURE_EVENT: - loge("Unexpected group failure, flush peers"); - mWifiNative.p2pFlush(); break; default: loge("Unhandled message " + message); @@ -452,6 +481,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { replyToMessage(message, WifiP2pManager.ADD_LOCAL_SERVICE_FAILED, WifiP2pManager.P2P_UNSUPPORTED); break; + case WifiP2pManager.SET_DIALOG_LISTENER: + replyToMessage(message, WifiP2pManager.DIALOG_LISTENER_DETACHED, + WifiP2pManager.P2P_UNSUPPORTED); + break; case WifiP2pManager.REMOVE_LOCAL_SERVICE: replyToMessage(message, WifiP2pManager.REMOVE_LOCAL_SERVICE_FAILED, WifiP2pManager.P2P_UNSUPPORTED); @@ -474,6 +507,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { WifiP2pManager.CLEAR_SERVICE_REQUESTS_FAILED, WifiP2pManager.P2P_UNSUPPORTED); break; + case WifiP2pManager.SET_DEVICE_NAME: + replyToMessage(message, WifiP2pManager.SET_DEVICE_NAME_FAILED, + WifiP2pManager.P2P_UNSUPPORTED); + break; default: return NOT_HANDLED; } @@ -583,6 +620,16 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mWifiNative.closeSupplicantConnection(); transitionTo(mP2pDisablingState); break; + case WifiP2pManager.SET_DEVICE_NAME: + WifiP2pDevice d = (WifiP2pDevice) message.obj; + if (d != null && setAndPersistDeviceName(d.deviceName)) { + if (DBG) logd("set device name " + d.deviceName); + replyToMessage(message, WifiP2pManager.SET_DEVICE_NAME_SUCCEEDED); + } else { + replyToMessage(message, WifiP2pManager.SET_DEVICE_NAME_FAILED, + WifiP2pManager.ERROR); + } + break; case WifiP2pManager.DISCOVER_PEERS: // do not send service discovery request while normal find operation. clearSupplicantServiceRequest(); @@ -705,33 +752,53 @@ public class WifiP2pService extends IWifiP2pManager.Stub { switch (message.what) { case WifiP2pManager.CONNECT: if (DBG) logd(getName() + " sending connect"); - mSavedPeerConfig = (WifiP2pConfig) message.obj; - mPersistGroup = false; - int netId = configuredNetworkId(mSavedPeerConfig.deviceAddress); - if (netId >= 0) { - //TODO: if failure, remove config and do a regular p2pConnect() - mWifiNative.p2pReinvoke(netId, mSavedPeerConfig.deviceAddress); - } else { + WifiP2pConfig config = (WifiP2pConfig) message.obj; + mAutonomousGroup = false; + + if (mSavedPeerConfig != null && config.deviceAddress.equals( + mSavedPeerConfig.deviceAddress)) { + mSavedPeerConfig = config; + //Stop discovery before issuing connect mWifiNative.p2pStopFind(); - //If peer is a GO, we do not need to send provisional discovery, - //the supplicant takes care of it. if (mWifiNative.isGroupOwner(mSavedPeerConfig.deviceAddress)) { - if (DBG) logd("Sending join to GO"); p2pConnectWithPinDisplay(mSavedPeerConfig, JOIN_GROUP); - transitionTo(mGroupNegotiationState); } else { - if (DBG) logd("Sending prov disc"); - transitionTo(mProvisionDiscoveryState); + p2pConnectWithPinDisplay(mSavedPeerConfig, FORM_GROUP); + } + transitionTo(mGroupNegotiationState); + } else { + mSavedPeerConfig = config; + int netId = configuredNetworkId(mSavedPeerConfig.deviceAddress); + if (netId >= 0) { + //TODO: if failure, remove config and do a regular p2pConnect() + mWifiNative.p2pReinvoke(netId, mSavedPeerConfig.deviceAddress); + } else { + //Stop discovery before issuing connect + mWifiNative.p2pStopFind(); + //If peer is a GO, we do not need to send provisional discovery, + //the supplicant takes care of it. + if (mWifiNative.isGroupOwner(mSavedPeerConfig.deviceAddress)) { + if (DBG) logd("Sending join to GO"); + p2pConnectWithPinDisplay(mSavedPeerConfig, JOIN_GROUP); + transitionTo(mGroupNegotiationState); + } else { + if (DBG) logd("Sending prov disc"); + transitionTo(mProvisionDiscoveryState); + } } } - updateDeviceStatus(mSavedPeerConfig.deviceAddress, WifiP2pDevice.INVITED); + mPeers.updateStatus(mSavedPeerConfig.deviceAddress, WifiP2pDevice.INVITED); sendP2pPeersChangedBroadcast(); replyToMessage(message, WifiP2pManager.CONNECT_SUCCEEDED); break; case WifiMonitor.P2P_GO_NEGOTIATION_REQUEST_EVENT: mSavedPeerConfig = (WifiP2pConfig) message.obj; - transitionTo(mUserAuthorizingInvitationState); + + if (!sendConnectNoticeToApp(mPeers.get(mSavedPeerConfig.deviceAddress), + mSavedPeerConfig)) { + transitionTo(mUserAuthorizingInvitationState); + } break; case WifiMonitor.P2P_INVITATION_RECEIVED_EVENT: WifiP2pGroup group = (WifiP2pGroup) message.obj; @@ -747,7 +814,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { //Check if we have the owner in peer list and use appropriate //wps method. Default is to use PBC. - if ((owner = getDeviceFromPeerList(owner.deviceAddress)) != null) { + if ((owner = mPeers.get(owner.deviceAddress)) != null) { if (owner.wpsPbcSupported()) { mSavedPeerConfig.wps.setup = WpsInfo.PBC; } else if (owner.wpsKeypadSupported()) { @@ -756,30 +823,26 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mSavedPeerConfig.wps.setup = WpsInfo.DISPLAY; } } - transitionTo(mUserAuthorizingInvitationState); + + //TODO In the p2p client case, we should set source address correctly. + if (!sendConnectNoticeToApp(mPeers.get(mSavedPeerConfig.deviceAddress), + mSavedPeerConfig)) { + transitionTo(mUserAuthorizingInvitationState); + } break; case WifiMonitor.P2P_PROV_DISC_PBC_REQ_EVENT: case WifiMonitor.P2P_PROV_DISC_ENTER_PIN_EVENT: case WifiMonitor.P2P_PROV_DISC_SHOW_PIN_EVENT: - WifiP2pProvDiscEvent provDisc = (WifiP2pProvDiscEvent) message.obj; - mSavedPeerConfig = new WifiP2pConfig(); - mSavedPeerConfig.deviceAddress = provDisc.device.deviceAddress; - if (message.what == WifiMonitor.P2P_PROV_DISC_ENTER_PIN_EVENT) { - mSavedPeerConfig.wps.setup = WpsInfo.KEYPAD; - if (DBG) logd("Keypad prov disc request"); - } else if (message.what == WifiMonitor.P2P_PROV_DISC_SHOW_PIN_EVENT) { - mSavedPeerConfig.wps.setup = WpsInfo.DISPLAY; - mSavedPeerConfig.wps.pin = provDisc.pin; - if (DBG) logd("Display prov disc request"); - } else { - mSavedPeerConfig.wps.setup = WpsInfo.PBC; - if (DBG) logd("PBC prov disc request"); - } - transitionTo(mUserAuthorizingInvitationState); - break; + //We let the supplicant handle the provision discovery response + //and wait instead for the GO_NEGOTIATION_REQUEST_EVENT. + //Handling provision discovery and issuing a p2p_connect before + //group negotiation comes through causes issues + break; case WifiP2pManager.CREATE_GROUP: - mPersistGroup = true; - if (mWifiNative.p2pGroupAdd()) { + mAutonomousGroup = true; + // An autonomous GO requires group idle settings to be reset + mWifiNative.setP2pGroupIdle(0); + if (mWifiNative.p2pGroupAdd()) { replyToMessage(message, WifiP2pManager.CREATE_GROUP_SUCCEEDED); } else { replyToMessage(message, WifiP2pManager.CREATE_GROUP_FAILED, @@ -800,6 +863,11 @@ public class WifiP2pService extends IWifiP2pManager.Stub { if (DBG) logd(getName()); sendMessageDelayed(obtainMessage(GROUP_CREATING_TIMED_OUT, ++mGroupCreatingTimeoutIndex, 0), GROUP_CREATING_WAIT_TIME_MS); + + // Set default group idle settings + if (!mAutonomousGroup) { + mWifiNative.setP2pGroupIdle(GROUP_IDLE_TIME_S); + } } @Override @@ -822,7 +890,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { //Do a supplicant p2p_cancel which only cancels an ongoing //group negotiation. This will fail for a pending provision //discovery or for a pending user action, but at the framework - //level, we always treat cancel as succeded and enter + //level, we always treat cancel as succeeded and enter //an inactive state mWifiNative.p2pCancelConnect(); handleGroupCreationFailure(); @@ -840,12 +908,16 @@ public class WifiP2pService extends IWifiP2pManager.Stub { @Override public void enter() { if (DBG) logd(getName()); - notifyInvitationReceived(); + if (!sendConnectNoticeToApp(mPeers.get(mSavedPeerConfig.deviceAddress), + mSavedPeerConfig)) { + notifyInvitationReceived(); + } } @Override public boolean processMessage(Message message) { if (DBG) logd(getName() + message.toString()); + boolean ret = HANDLED; switch (message.what) { case PEER_CONNECTION_USER_ACCEPT: //TODO: handle persistence @@ -854,7 +926,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } else { p2pConnectWithPinDisplay(mSavedPeerConfig, FORM_GROUP); } - updateDeviceStatus(mSavedPeerConfig.deviceAddress, WifiP2pDevice.INVITED); + mPeers.updateStatus(mSavedPeerConfig.deviceAddress, WifiP2pDevice.INVITED); sendP2pPeersChangedBroadcast(); transitionTo(mGroupNegotiationState); break; @@ -866,7 +938,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { default: return NOT_HANDLED; } - return HANDLED; + return ret; } @Override @@ -924,7 +996,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub { if (DBG) logd("Found a match " + mSavedPeerConfig); mSavedPeerConfig.wps.pin = provDisc.pin; mWifiNative.p2pConnect(mSavedPeerConfig, FORM_GROUP); - notifyInvitationSent(provDisc.pin, device.deviceAddress); + if (!sendShowPinReqToFrontApp(provDisc.pin)) { + notifyInvitationSent(provDisc.pin, device.deviceAddress); + } transitionTo(mGroupNegotiationState); } break; @@ -961,18 +1035,23 @@ public class WifiP2pService extends IWifiP2pManager.Stub { P2pStateMachine.this, mGroup.getInterface()); mDhcpStateMachine.sendMessage(DhcpStateMachine.CMD_START_DHCP); WifiP2pDevice groupOwner = mGroup.getOwner(); - updateDeviceStatus(groupOwner.deviceAddress, WifiP2pDevice.CONNECTED); + mPeers.updateStatus(groupOwner.deviceAddress, WifiP2pDevice.CONNECTED); sendP2pPeersChangedBroadcast(); } mSavedPeerConfig = null; transitionTo(mGroupCreatedState); break; case WifiMonitor.P2P_GO_NEGOTIATION_FAILURE_EVENT: - case WifiMonitor.P2P_GROUP_FORMATION_FAILURE_EVENT: + case WifiMonitor.P2P_GROUP_REMOVED_EVENT: if (DBG) logd(getName() + " go failure"); handleGroupCreationFailure(); transitionTo(mInactiveState); break; + // A group formation failure is always followed by + // a group removed event. Flushing things at group formation + // failure causes supplicant issues. Ignore right now. + case WifiMonitor.P2P_GROUP_FORMATION_FAILURE_EVENT: + break; default: return NOT_HANDLED; } @@ -995,10 +1074,6 @@ public class WifiP2pService extends IWifiP2pManager.Stub { setWifiP2pInfoOnGroupFormation(SERVER_ADDRESS); sendP2pConnectionChangedBroadcast(); } - - if (!mPersistGroup) { - mWifiNative.setP2pGroupIdle(mGroup.getInterface(), GROUP_IDLE_TIME_S); - } } @Override @@ -1009,8 +1084,12 @@ public class WifiP2pService extends IWifiP2pManager.Stub { WifiP2pDevice device = (WifiP2pDevice) message.obj; String deviceAddress = device.deviceAddress; if (deviceAddress != null) { + if (mSavedProvDiscDevice != null && + deviceAddress.equals(mSavedProvDiscDevice.deviceAddress)) { + mSavedProvDiscDevice = null; + } mGroup.addClient(deviceAddress); - updateDeviceStatus(deviceAddress, WifiP2pDevice.CONNECTED); + mPeers.updateStatus(deviceAddress, WifiP2pDevice.CONNECTED); if (DBG) logd(getName() + " ap sta connected"); sendP2pPeersChangedBroadcast(); } else { @@ -1021,10 +1100,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { device = (WifiP2pDevice) message.obj; deviceAddress = device.deviceAddress; if (deviceAddress != null) { - updateDeviceStatus(deviceAddress, WifiP2pDevice.AVAILABLE); + mPeers.updateStatus(deviceAddress, WifiP2pDevice.AVAILABLE); if (mGroup.removeClient(deviceAddress)) { if (DBG) logd("Removed client " + deviceAddress); - if (!mPersistGroup && mGroup.isClientListEmpty()) { + if (!mAutonomousGroup && mGroup.isClientListEmpty()) { Slog.d(TAG, "Client list empty, remove non-persistent p2p group"); mWifiNative.p2pGroupRemove(mGroup.getInterface()); } @@ -1085,6 +1164,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mGroup = null; mWifiNative.p2pFlush(); + mServiceDiscReqId = null; if (changed) sendP2pPeersChangedBroadcast(); transitionTo(mInactiveState); break; @@ -1103,14 +1183,45 @@ public class WifiP2pService extends IWifiP2pManager.Stub { break; case WifiP2pManager.CONNECT: WifiP2pConfig config = (WifiP2pConfig) message.obj; - logd("Inviting device : " + config.deviceAddress); - if (mWifiNative.p2pInvite(mGroup, config.deviceAddress)) { - updateDeviceStatus(config.deviceAddress, WifiP2pDevice.INVITED); - sendP2pPeersChangedBroadcast(); + if (config.deviceAddress == null || + (mSavedProvDiscDevice != null && + mSavedProvDiscDevice.deviceAddress.equals( + config.deviceAddress))) { + if (config.wps.setup == WpsInfo.PBC) { + mWifiNative.startWpsPbc(mGroup.getInterface(), null); + } else { + if (config.wps.pin == null) { + String pin = mWifiNative.startWpsPinDisplay(mGroup.getInterface()); + try { + Integer.parseInt(pin); + if (!sendShowPinReqToFrontApp(pin)) { + notifyInvitationSent(pin, + config.deviceAddress != null ? + config.deviceAddress : "any"); + } + } catch (NumberFormatException ignore) { + // do nothing if pin is invalid + } + } else { + mWifiNative.startWpsPinKeypad(mGroup.getInterface(), + config.wps.pin); + } + } + if (config.deviceAddress != null) { + mPeers.updateStatus(config.deviceAddress, WifiP2pDevice.INVITED); + sendP2pPeersChangedBroadcast(); + } replyToMessage(message, WifiP2pManager.CONNECT_SUCCEEDED); } else { - replyToMessage(message, WifiP2pManager.CONNECT_FAILED, - WifiP2pManager.ERROR); + logd("Inviting device : " + config.deviceAddress); + if (mWifiNative.p2pInvite(mGroup, config.deviceAddress)) { + mPeers.updateStatus(config.deviceAddress, WifiP2pDevice.INVITED); + sendP2pPeersChangedBroadcast(); + replyToMessage(message, WifiP2pManager.CONNECT_SUCCEEDED); + } else { + replyToMessage(message, WifiP2pManager.CONNECT_FAILED, + WifiP2pManager.ERROR); + } } // TODO: figure out updating the status to declined when invitation is rejected break; @@ -1118,6 +1229,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { case WifiMonitor.P2P_PROV_DISC_ENTER_PIN_EVENT: case WifiMonitor.P2P_PROV_DISC_SHOW_PIN_EVENT: WifiP2pProvDiscEvent provDisc = (WifiP2pProvDiscEvent) message.obj; + mSavedProvDiscDevice = provDisc.device; mSavedPeerConfig = new WifiP2pConfig(); mSavedPeerConfig.deviceAddress = provDisc.device.deviceAddress; if (message.what == WifiMonitor.P2P_PROV_DISC_ENTER_PIN_EVENT) { @@ -1128,7 +1240,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } else { mSavedPeerConfig.wps.setup = WpsInfo.PBC; } - transitionTo(mUserAuthorizingJoinState); + if (!sendConnectNoticeToApp(mSavedProvDiscDevice, mSavedPeerConfig)) { + transitionTo(mUserAuthorizingJoinState); + } break; case WifiMonitor.P2P_GROUP_STARTED_EVENT: Slog.e(TAG, "Duplicate group creation event notice, ignore"); @@ -1140,6 +1254,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } public void exit() { + mSavedProvDiscDevice = null; updateThisDevice(WifiP2pDevice.AVAILABLE); setWifiP2pInfoOnGroupTermination(); mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED, null, null); @@ -1151,6 +1266,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { @Override public void enter() { if (DBG) logd(getName()); + notifyInvitationReceived(); } @@ -1165,9 +1281,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { break; case PEER_CONNECTION_USER_ACCEPT: if (mSavedPeerConfig.wps.setup == WpsInfo.PBC) { - mWifiNative.startWpsPbc(null); + mWifiNative.startWpsPbc(mGroup.getInterface(), null); } else { - mWifiNative.startWpsPinKeypad(mSavedPeerConfig.wps.pin); + mWifiNative.startWpsPinKeypad(mGroup.getInterface(), + mSavedPeerConfig.wps.pin); } mSavedPeerConfig = null; transitionTo(mGroupCreatedState); @@ -1358,14 +1475,6 @@ public class WifiP2pService extends IWifiP2pManager.Stub { dialog.show(); } - private void updateDeviceStatus(String deviceAddress, int status) { - for (WifiP2pDevice d : mPeers.getDeviceList()) { - if (d.deviceAddress.equals(deviceAddress)) { - d.status = status; - } - } - } - //TODO: implement when wpa_supplicant is fixed private int configuredNetworkId(String deviceAddress) { return -1; @@ -1384,44 +1493,67 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } private String getDeviceName(String deviceAddress) { - for (WifiP2pDevice d : mPeers.getDeviceList()) { - if (d.deviceAddress.equals(deviceAddress)) { + WifiP2pDevice d = mPeers.get(deviceAddress); + if (d != null) { return d.deviceName; - } } //Treat the address as name if there is no match return deviceAddress; } - private WifiP2pDevice getDeviceFromPeerList(String deviceAddress) { - for (WifiP2pDevice d : mPeers.getDeviceList()) { - if (d.deviceAddress.equals(deviceAddress)) { - return d; - } - } - return null; - } - private void p2pConnectWithPinDisplay(WifiP2pConfig config, boolean join) { String pin = mWifiNative.p2pConnect(config, join); try { Integer.parseInt(pin); - notifyInvitationSent(pin, config.deviceAddress); + if (!sendShowPinReqToFrontApp(pin)) { + notifyInvitationSent(pin, config.deviceAddress); + } } catch (NumberFormatException ignore) { // do nothing if p2pConnect did not return a pin } } + private String getPersistedDeviceName() { + String deviceName = Settings.Secure.getString(mContext.getContentResolver(), + Settings.Secure.WIFI_P2P_DEVICE_NAME); + if (deviceName == null) { + /* We use the 4 digits of the ANDROID_ID to have a friendly + * default that has low likelihood of collision with a peer */ + String id = Settings.Secure.getString(mContext.getContentResolver(), + Settings.Secure.ANDROID_ID); + return "Android_" + id.substring(0,4); + } + return deviceName; + } + + private boolean setAndPersistDeviceName(String devName) { + if (devName == null) return false; + + if (!mWifiNative.setDeviceName(devName)) { + loge("Failed to set device name " + devName); + return false; + } + + mThisDevice.deviceName = devName; + mWifiNative.setP2pSsidPostfix("-" + mThisDevice.deviceName); + + Settings.Secure.putString(mContext.getContentResolver(), + Settings.Secure.WIFI_P2P_DEVICE_NAME, devName); + sendThisDeviceChangedBroadcast(); + return true; + } + private void initializeP2pSettings() { mWifiNative.setPersistentReconnect(true); + mThisDevice.deviceName = getPersistedDeviceName(); mWifiNative.setDeviceName(mThisDevice.deviceName); - //DIRECT-XY-DEVICENAME (XY is randomly generated) + // DIRECT-XY-DEVICENAME (XY is randomly generated) mWifiNative.setP2pSsidPostfix("-" + mThisDevice.deviceName); mWifiNative.setDeviceType(mThisDevice.primaryDeviceType); - //The supplicant default is to support everything, but a bug necessitates - //the framework to specify this explicitly - mWifiNative.setConfigMethods("keypad display push_button"); - //STA has higher priority over P2P + // Supplicant defaults to using virtual display with display + // which refers to a remote display. Use physical_display + mWifiNative.setConfigMethods("virtual_push_button physical_display keypad"); + // STA has higher priority over P2P mWifiNative.setConcurrencyPriority("sta"); mThisDevice.deviceAddress = mWifiNative.p2pGetDeviceAddress(); @@ -1445,11 +1577,12 @@ public class WifiP2pService extends IWifiP2pManager.Stub { /* After cancelling group formation, new connections on existing peers can fail * at supplicant. Flush and restart discovery */ mWifiNative.p2pFlush(); + mServiceDiscReqId = null; sendMessage(WifiP2pManager.DISCOVER_PEERS); } //State machine initiated requests can have replyTo set to null indicating - //there are no recepients, we ignore those reply actions + //there are no recipients, we ignore those reply actions private void replyToMessage(Message msg, int what) { if (msg.replyTo == null) return; Message dstMsg = obtainMessage(msg); @@ -1528,7 +1661,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mServiceDiscReqId = null; } - /* TODO: We could track individual service adds seperately and avoid + /* TODO: We could track individual service adds separately and avoid * having to do update all service requests on every new request */ private boolean addServiceRequest(Messenger m, WifiP2pServiceRequest req) { @@ -1736,6 +1869,139 @@ public class WifiP2pService extends IWifiP2pManager.Stub { return clientInfo; } + /** + * Send detached message to dialog listener in the foreground application. + * @param reason + */ + private void sendDetachedMsg(int reason) { + if (mForegroundAppMessenger == null) return; + + Message msg = Message.obtain(); + msg.what = WifiP2pManager.DIALOG_LISTENER_DETACHED; + msg.arg1 = reason; + try { + mForegroundAppMessenger.send(msg); + } catch (RemoteException e) { + } + mForegroundAppMessenger = null; + mForegroundAppPkgName = null; + } + + /** + * Send a request to show wps pin to dialog listener in the foreground application. + * @param pin WPS pin + * @return + */ + private boolean sendShowPinReqToFrontApp(String pin) { + if (!isForegroundApp(mForegroundAppPkgName)) { + sendDetachedMsg(WifiP2pManager.NOT_IN_FOREGROUND); + return false; + } + Message msg = Message.obtain(); + msg.what = WifiP2pManager.SHOW_PIN_REQUESTED; + Bundle bundle = new Bundle(); + bundle.putString(WifiP2pManager.WPS_PIN_BUNDLE_KEY, pin); + msg.setData(bundle); + return sendDialogMsgToFrontApp(msg); + } + + /** + * Send a request to establish the connection to dialog listener in the foreground + * application. + * @param dev source device + * @param config + * @return + */ + private boolean sendConnectNoticeToApp(WifiP2pDevice dev, WifiP2pConfig config) { + if (dev == null) { + dev = new WifiP2pDevice(config.deviceAddress); + } + + if (!isForegroundApp(mForegroundAppPkgName)) { + if (DBG) logd("application is NOT foreground"); + sendDetachedMsg(WifiP2pManager.NOT_IN_FOREGROUND); + return false; + } + + Message msg = Message.obtain(); + msg.what = WifiP2pManager.CONNECTION_REQUESTED; + Bundle bundle = new Bundle(); + bundle.putParcelable(WifiP2pManager.P2P_DEV_BUNDLE_KEY, dev); + bundle.putParcelable(WifiP2pManager.P2P_CONFIG_BUNDLE_KEY, config); + msg.setData(bundle); + return sendDialogMsgToFrontApp(msg); + } + + /** + * Send dialog event message to front application's dialog listener. + * @param msg + * @return true if success. + */ + private boolean sendDialogMsgToFrontApp(Message msg) { + try { + mForegroundAppMessenger.send(msg); + } catch (RemoteException e) { + mForegroundAppMessenger = null; + mForegroundAppPkgName = null; + return false; + } + return true; + } + + /** + * Set dialog listener application. + * @param m + * @param appPkgName if null, reset the listener. + * @param isReset if true, try to reset. + * @return + */ + private boolean setDialogListenerApp(Messenger m, + String appPkgName, boolean isReset) { + + if (mForegroundAppPkgName != null && !mForegroundAppPkgName.equals(appPkgName)) { + if (isForegroundApp(mForegroundAppPkgName)) { + // The current dialog listener is foreground app's. + if (DBG) logd("application is NOT foreground"); + return false; + } + // detach an old listener. + sendDetachedMsg(WifiP2pManager.NOT_IN_FOREGROUND); + } + + if (isReset) { + if (DBG) logd("reset dialog listener"); + mForegroundAppMessenger = null; + mForegroundAppPkgName = null; + return true; + } + + if (!isForegroundApp(appPkgName)) { + return false; + } + + mForegroundAppMessenger = m; + mForegroundAppPkgName = appPkgName; + if (DBG) logd("set dialog listener. app=" + appPkgName); + return true; + } + + /** + * Return true if the specified package name is foreground app's. + * + * @param pkgName application package name. + * @return + */ + private boolean isForegroundApp(String pkgName) { + if (pkgName == null) return false; + + List<RunningTaskInfo> tasks = mActivityMgr.getRunningTasks(1); + if (tasks.size() == 0) { + return false; + } + + return pkgName.equals(tasks.get(0).baseActivity.getPackageName()); + } + } /** @@ -1766,4 +2032,5 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mServList = new ArrayList<WifiP2pServiceInfo>(); } } + } |