summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/color/btn_colored_background_material.xml21
-rw-r--r--res/drawable-watch-280dpi/ic_cc_cancel.pngbin14774 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_cc_checkmark.pngbin14840 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_cc_deny.pngbin18879 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_calendar.pngbin20425 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_calendardisable.pngbin18888 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_call.pngbin20029 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_calldisable.pngbin18813 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_camera.pngbin20572 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_cameradisable.pngbin18391 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_contact.pngbin19960 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_contactdisable.pngbin18921 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_location.pngbin19625 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_locationdisable.pngbin18803 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_mic.pngbin20006 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_micdisable.pngbin20179 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_more.pngbin19946 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_sensor.pngbin20622 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_sensordisable.pngbin20391 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_shield.pngbin20403 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_shielddisable.pngbin19978 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_sms.pngbin20341 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_smsdisable.pngbin20159 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_storage.pngbin19814 -> 0 bytes
-rw-r--r--res/drawable-watch-280dpi/ic_permission_storagedisable.pngbin20135 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_cc_cancel.pngbin678 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_cc_checkmark.pngbin646 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_cc_deny.pngbin923 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_calendar.pngbin760 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_calendardisable.pngbin987 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_call.pngbin808 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_calldisable.pngbin940 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_camera.pngbin676 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_cameradisable.pngbin979 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_contact.pngbin717 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_contactdisable.pngbin989 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_location.pngbin804 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_locationdisable.pngbin932 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_mic.pngbin731 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_micdisable.pngbin911 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_more.pngbin579 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_sensor.pngbin911 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_sensordisable.pngbin1034 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_shield.pngbin751 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_shielddisable.pngbin896 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_sms.pngbin643 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_smsdisable.pngbin823 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_storage.pngbin523 -> 0 bytes
-rw-r--r--res/drawable-watch-hdpi/ic_permission_storagedisable.pngbin751 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_cc_cancel.pngbin535 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_cc_checkmark.pngbin509 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_cc_deny.pngbin661 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_calendar.pngbin608 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_calendardisable.pngbin708 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_call.pngbin599 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_calldisable.pngbin690 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_camera.pngbin539 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_cameradisable.pngbin691 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_contact.pngbin566 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_contactdisable.pngbin686 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_location.pngbin586 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_locationdisable.pngbin673 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_mic.pngbin561 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_micdisable.pngbin638 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_more.pngbin441 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_sensor.pngbin635 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_sensordisable.pngbin713 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_shield.pngbin562 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_shielddisable.pngbin652 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_sms.pngbin561 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_smsdisable.pngbin671 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_storage.pngbin471 -> 0 bytes
-rw-r--r--res/drawable-watch-mdpi/ic_permission_storagedisable.pngbin603 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_cc_cancel.pngbin312 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_cc_checkmark.pngbin321 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_cc_deny.pngbin18778 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_calendar.pngbin19782 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_calendardisable.pngbin18211 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_call.pngbin19995 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_calldisable.pngbin18621 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_camera.pngbin20027 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_cameradisable.pngbin18391 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_contact.pngbin19471 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_contactdisable.pngbin18283 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_location.pngbin19625 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_locationdisable.pngbin18292 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_mic.pngbin19554 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_micdisable.pngbin19609 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_more.pngbin19547 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_sensor.pngbin20118 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_sensordisable.pngbin19703 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_shield.pngbin19931 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_shielddisable.pngbin19978 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_sms.pngbin19807 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_smsdisable.pngbin19499 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_storage.pngbin19295 -> 0 bytes
-rw-r--r--res/drawable-watch-xhdpi/ic_permission_storagedisable.pngbin19443 -> 0 bytes
-rw-r--r--res/drawable-watch/accept_deny_dialog_negative_bg.xml32
-rw-r--r--res/drawable-watch/accept_deny_dialog_positive_bg.xml32
-rw-r--r--res/drawable-watch/action_negative_bg.xml21
-rw-r--r--res/drawable-watch/action_positive_bg.xml21
-rw-r--r--res/drawable-watch/cancel_button.xml4
-rw-r--r--res/drawable-watch/confirm_button.xml4
-rw-r--r--res/drawable-watch/deny_button.xml4
-rw-r--r--res/drawable-watch/ic_cc_checkmark.xml24
-rw-r--r--res/drawable-watch/ic_cc_clear.xml24
-rw-r--r--res/drawable-watch/ic_cc_deny.xml24
-rw-r--r--res/layout-watch/accept_deny_dialog.xml111
-rw-r--r--res/layout-watch/confirmation_dialog.xml131
-rw-r--r--res/layout-watch/permissions_settings_item.xml47
-rw-r--r--res/layout-watch/settings_internal.xml56
-rw-r--r--res/values-af-watch/strings.xml4
-rw-r--r--res/values-am-watch/strings.xml4
-rw-r--r--res/values-ar-watch/strings.xml4
-rw-r--r--res/values-ar/strings.xml2
-rw-r--r--res/values-az-rAZ-watch/strings.xml4
-rw-r--r--res/values-b+sr+Latn-watch/strings.xml4
-rw-r--r--res/values-b+sr+Latn/strings.xml2
-rw-r--r--res/values-be-rBY-watch/strings.xml4
-rw-r--r--res/values-bg-watch/strings.xml4
-rw-r--r--res/values-bn-rBD-watch/strings.xml4
-rw-r--r--res/values-bs-rBA-watch/strings.xml4
-rw-r--r--res/values-ca-watch/strings.xml4
-rw-r--r--res/values-cs-watch/strings.xml4
-rw-r--r--res/values-da-watch/strings.xml4
-rw-r--r--res/values-da/strings.xml2
-rw-r--r--res/values-de-watch/strings.xml4
-rw-r--r--res/values-el-watch/strings.xml4
-rw-r--r--res/values-el/strings.xml2
-rw-r--r--res/values-en-rAU-watch/strings.xml4
-rw-r--r--res/values-en-rGB-watch/strings.xml4
-rw-r--r--res/values-en-rIN-watch/strings.xml4
-rw-r--r--res/values-es-rUS-watch/strings.xml4
-rw-r--r--res/values-es-rUS/strings.xml2
-rw-r--r--res/values-es-watch/strings.xml4
-rw-r--r--res/values-et-rEE-watch/strings.xml4
-rw-r--r--res/values-eu-rES-watch/strings.xml4
-rw-r--r--res/values-fa-watch/strings.xml4
-rw-r--r--res/values-fi-watch/strings.xml4
-rw-r--r--res/values-fr-rCA-watch/strings.xml4
-rw-r--r--res/values-fr-watch/strings.xml4
-rw-r--r--res/values-gl-rES-watch/strings.xml4
-rw-r--r--res/values-gu-rIN-watch/strings.xml4
-rw-r--r--res/values-hi-watch/strings.xml4
-rw-r--r--res/values-hi/strings.xml2
-rw-r--r--res/values-hr-watch/strings.xml4
-rw-r--r--res/values-hu-watch/strings.xml4
-rw-r--r--res/values-hy-rAM-watch/strings.xml4
-rw-r--r--res/values-hy-rAM/strings.xml18
-rw-r--r--res/values-in-watch/strings.xml4
-rw-r--r--res/values-is-rIS-watch/strings.xml4
-rw-r--r--res/values-it-watch/strings.xml4
-rw-r--r--res/values-iw-watch/strings.xml4
-rw-r--r--res/values-ja-watch/strings.xml4
-rw-r--r--res/values-ka-rGE-watch/strings.xml4
-rw-r--r--res/values-kk-rKZ-watch/strings.xml4
-rw-r--r--res/values-km-rKH-watch/strings.xml4
-rw-r--r--res/values-kn-rIN-watch/strings.xml4
-rw-r--r--res/values-kn-rIN/strings.xml14
-rw-r--r--res/values-ko-watch/strings.xml4
-rw-r--r--res/values-ky-rKG-watch/strings.xml4
-rw-r--r--res/values-ky-rKG/strings.xml2
-rw-r--r--res/values-lo-rLA-watch/strings.xml4
-rw-r--r--res/values-lt-watch/strings.xml4
-rw-r--r--res/values-lv-watch/strings.xml4
-rw-r--r--res/values-mk-rMK-watch/strings.xml4
-rw-r--r--res/values-ml-rIN-watch/strings.xml4
-rw-r--r--res/values-mn-rMN-watch/strings.xml4
-rw-r--r--res/values-mr-rIN-watch/strings.xml4
-rw-r--r--res/values-ms-rMY-watch/strings.xml4
-rw-r--r--res/values-my-rMM-watch/strings.xml4
-rw-r--r--res/values-nb-watch/strings.xml4
-rw-r--r--res/values-ne-rNP-watch/strings.xml4
-rw-r--r--res/values-nl-watch/strings.xml4
-rw-r--r--res/values-nl/strings.xml20
-rw-r--r--res/values-notround-watch/dimens.xml (renamed from res/values-round/dimens.xml)17
-rw-r--r--res/values-pa-rIN-watch/strings.xml4
-rw-r--r--res/values-pa-rIN/strings.xml2
-rw-r--r--res/values-pl-watch/strings.xml4
-rw-r--r--res/values-pt-rBR-watch/strings.xml4
-rw-r--r--res/values-pt-rPT-watch/strings.xml4
-rw-r--r--res/values-pt-watch/strings.xml4
-rw-r--r--res/values-ro-watch/strings.xml4
-rw-r--r--res/values-round-watch/dimens.xml23
-rw-r--r--res/values-ru-watch/strings.xml4
-rw-r--r--res/values-si-rLK-watch/strings.xml4
-rw-r--r--res/values-sk-watch/strings.xml4
-rw-r--r--res/values-sl-watch/strings.xml4
-rw-r--r--res/values-sq-rAL-watch/strings.xml4
-rw-r--r--res/values-sr-watch/strings.xml4
-rw-r--r--res/values-sr/strings.xml2
-rw-r--r--res/values-sv-watch/strings.xml4
-rw-r--r--res/values-sw-watch/strings.xml4
-rw-r--r--res/values-sw180dp-notround-watch/dimens.xml (renamed from res/layout-watch/settings.xml)12
-rw-r--r--res/values-sw210dp-round-watch/dimens.xml19
-rw-r--r--res/values-ta-rIN-watch/strings.xml4
-rw-r--r--res/values-te-rIN-watch/strings.xml4
-rw-r--r--res/values-th-watch/strings.xml4
-rw-r--r--res/values-tl-watch/strings.xml4
-rw-r--r--res/values-tr-watch/strings.xml4
-rw-r--r--res/values-uk-watch/strings.xml4
-rw-r--r--res/values-ur-rPK-watch/strings.xml4
-rw-r--r--res/values-uz-rUZ-watch/strings.xml4
-rw-r--r--res/values-uz-rUZ/strings.xml2
-rw-r--r--res/values-vi-watch/strings.xml4
-rw-r--r--res/values-w192dp-watch/dimens_percent.xml21
-rw-r--r--res/values-w205dp-watch/dimens_percent.xml21
-rw-r--r--res/values-w225dp-watch/dimens_percent.xml21
-rw-r--r--res/values-w228dp-watch/dimens_percent.xml21
-rw-r--r--res/values-w240dp-watch/dimens_percent.xml21
-rw-r--r--res/values-watch/colors.xml16
-rw-r--r--res/values-watch/dimens.xml57
-rw-r--r--res/values-watch/strings.xml9
-rw-r--r--res/values-watch/styles.xml31
-rw-r--r--res/values-watch/themes.xml46
-rw-r--r--res/values-zh-rCN-watch/strings.xml4
-rw-r--r--res/values-zh-rCN/strings.xml4
-rw-r--r--res/values-zh-rHK-watch/strings.xml4
-rw-r--r--res/values-zh-rTW-watch/strings.xml4
-rw-r--r--res/values-zu-watch/strings.xml4
-rw-r--r--res/xml-watch/watch_permissions.xml22
-rw-r--r--src/android/support/wearable/view/AcceptDenyDialog.java182
-rw-r--r--src/android/support/wearable/view/WearableDialogHelper.java217
-rw-r--r--src/com/android/packageinstaller/PackageInstallerActivity.java1
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissionGroup.java14
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissions.java47
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java211
-rw-r--r--src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java6
-rw-r--r--src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java75
-rw-r--r--src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java14
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java369
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java381
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java243
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java118
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java30
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java84
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java101
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java276
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java48
-rw-r--r--src/com/android/packageinstaller/permission/utils/ArrayUtils.java18
-rw-r--r--src/com/android/packageinstaller/permission/utils/Utils.java10
-rw-r--r--src/com/android/packageinstaller/wear/WearPackageInstallerService.java46
242 files changed, 1535 insertions, 2269 deletions
diff --git a/res/color/btn_colored_background_material.xml b/res/color/btn_colored_background_material.xml
new file mode 100644
index 00000000..a6cd0890
--- /dev/null
+++ b/res/color/btn_colored_background_material.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="false"
+ android:alpha="?android:disabledAlpha"
+ android:color="?android:colorButtonNormal" />
+ <item android:color="?android:colorAccent" />
+</selector>
diff --git a/res/drawable-watch-280dpi/ic_cc_cancel.png b/res/drawable-watch-280dpi/ic_cc_cancel.png
deleted file mode 100644
index 249b8697..00000000
--- a/res/drawable-watch-280dpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_cc_checkmark.png b/res/drawable-watch-280dpi/ic_cc_checkmark.png
deleted file mode 100644
index 94db9ab0..00000000
--- a/res/drawable-watch-280dpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_cc_deny.png b/res/drawable-watch-280dpi/ic_cc_deny.png
deleted file mode 100644
index 1733669f..00000000
--- a/res/drawable-watch-280dpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_calendar.png b/res/drawable-watch-280dpi/ic_permission_calendar.png
deleted file mode 100644
index 602bddf0..00000000
--- a/res/drawable-watch-280dpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_calendardisable.png b/res/drawable-watch-280dpi/ic_permission_calendardisable.png
deleted file mode 100644
index b855932e..00000000
--- a/res/drawable-watch-280dpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_call.png b/res/drawable-watch-280dpi/ic_permission_call.png
deleted file mode 100644
index bcf4f868..00000000
--- a/res/drawable-watch-280dpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_calldisable.png b/res/drawable-watch-280dpi/ic_permission_calldisable.png
deleted file mode 100644
index 4781e1fe..00000000
--- a/res/drawable-watch-280dpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_camera.png b/res/drawable-watch-280dpi/ic_permission_camera.png
deleted file mode 100644
index 3d27269f..00000000
--- a/res/drawable-watch-280dpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_cameradisable.png b/res/drawable-watch-280dpi/ic_permission_cameradisable.png
deleted file mode 100644
index 51fa2c38..00000000
--- a/res/drawable-watch-280dpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_contact.png b/res/drawable-watch-280dpi/ic_permission_contact.png
deleted file mode 100644
index 3e26bfbb..00000000
--- a/res/drawable-watch-280dpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_contactdisable.png b/res/drawable-watch-280dpi/ic_permission_contactdisable.png
deleted file mode 100644
index 059b147c..00000000
--- a/res/drawable-watch-280dpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_location.png b/res/drawable-watch-280dpi/ic_permission_location.png
deleted file mode 100644
index f002a9cf..00000000
--- a/res/drawable-watch-280dpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_locationdisable.png b/res/drawable-watch-280dpi/ic_permission_locationdisable.png
deleted file mode 100644
index 98bbb869..00000000
--- a/res/drawable-watch-280dpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_mic.png b/res/drawable-watch-280dpi/ic_permission_mic.png
deleted file mode 100644
index 1ed9c941..00000000
--- a/res/drawable-watch-280dpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_micdisable.png b/res/drawable-watch-280dpi/ic_permission_micdisable.png
deleted file mode 100644
index d74f59b9..00000000
--- a/res/drawable-watch-280dpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_more.png b/res/drawable-watch-280dpi/ic_permission_more.png
deleted file mode 100644
index f33e02bf..00000000
--- a/res/drawable-watch-280dpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_sensor.png b/res/drawable-watch-280dpi/ic_permission_sensor.png
deleted file mode 100644
index 712c5d40..00000000
--- a/res/drawable-watch-280dpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_sensordisable.png b/res/drawable-watch-280dpi/ic_permission_sensordisable.png
deleted file mode 100644
index 8faa436f..00000000
--- a/res/drawable-watch-280dpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_shield.png b/res/drawable-watch-280dpi/ic_permission_shield.png
deleted file mode 100644
index 78d6742b..00000000
--- a/res/drawable-watch-280dpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_shielddisable.png b/res/drawable-watch-280dpi/ic_permission_shielddisable.png
deleted file mode 100644
index f0ef4134..00000000
--- a/res/drawable-watch-280dpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_sms.png b/res/drawable-watch-280dpi/ic_permission_sms.png
deleted file mode 100644
index 39bb4b3e..00000000
--- a/res/drawable-watch-280dpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_smsdisable.png b/res/drawable-watch-280dpi/ic_permission_smsdisable.png
deleted file mode 100644
index e9375b1f..00000000
--- a/res/drawable-watch-280dpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_storage.png b/res/drawable-watch-280dpi/ic_permission_storage.png
deleted file mode 100644
index 60ec50c7..00000000
--- a/res/drawable-watch-280dpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_storagedisable.png b/res/drawable-watch-280dpi/ic_permission_storagedisable.png
deleted file mode 100644
index 987b8249..00000000
--- a/res/drawable-watch-280dpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_cc_cancel.png b/res/drawable-watch-hdpi/ic_cc_cancel.png
deleted file mode 100644
index a57893e1..00000000
--- a/res/drawable-watch-hdpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_cc_checkmark.png b/res/drawable-watch-hdpi/ic_cc_checkmark.png
deleted file mode 100644
index a18fe7ab..00000000
--- a/res/drawable-watch-hdpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_cc_deny.png b/res/drawable-watch-hdpi/ic_cc_deny.png
deleted file mode 100644
index bab22a3d..00000000
--- a/res/drawable-watch-hdpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_calendar.png b/res/drawable-watch-hdpi/ic_permission_calendar.png
deleted file mode 100644
index b7424699..00000000
--- a/res/drawable-watch-hdpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_calendardisable.png b/res/drawable-watch-hdpi/ic_permission_calendardisable.png
deleted file mode 100644
index def76b03..00000000
--- a/res/drawable-watch-hdpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_call.png b/res/drawable-watch-hdpi/ic_permission_call.png
deleted file mode 100644
index e14a6bd2..00000000
--- a/res/drawable-watch-hdpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_calldisable.png b/res/drawable-watch-hdpi/ic_permission_calldisable.png
deleted file mode 100644
index e0f535ff..00000000
--- a/res/drawable-watch-hdpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_camera.png b/res/drawable-watch-hdpi/ic_permission_camera.png
deleted file mode 100644
index 7c1df6ba..00000000
--- a/res/drawable-watch-hdpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_cameradisable.png b/res/drawable-watch-hdpi/ic_permission_cameradisable.png
deleted file mode 100644
index 9637808a..00000000
--- a/res/drawable-watch-hdpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_contact.png b/res/drawable-watch-hdpi/ic_permission_contact.png
deleted file mode 100644
index 532e3a2c..00000000
--- a/res/drawable-watch-hdpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_contactdisable.png b/res/drawable-watch-hdpi/ic_permission_contactdisable.png
deleted file mode 100644
index 32b45c53..00000000
--- a/res/drawable-watch-hdpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_location.png b/res/drawable-watch-hdpi/ic_permission_location.png
deleted file mode 100644
index 3d6c0b9d..00000000
--- a/res/drawable-watch-hdpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_locationdisable.png b/res/drawable-watch-hdpi/ic_permission_locationdisable.png
deleted file mode 100644
index c2475e21..00000000
--- a/res/drawable-watch-hdpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_mic.png b/res/drawable-watch-hdpi/ic_permission_mic.png
deleted file mode 100644
index 8acb4c5f..00000000
--- a/res/drawable-watch-hdpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_micdisable.png b/res/drawable-watch-hdpi/ic_permission_micdisable.png
deleted file mode 100644
index a37a4e20..00000000
--- a/res/drawable-watch-hdpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_more.png b/res/drawable-watch-hdpi/ic_permission_more.png
deleted file mode 100644
index 08808bc4..00000000
--- a/res/drawable-watch-hdpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_sensor.png b/res/drawable-watch-hdpi/ic_permission_sensor.png
deleted file mode 100644
index fd2939ab..00000000
--- a/res/drawable-watch-hdpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_sensordisable.png b/res/drawable-watch-hdpi/ic_permission_sensordisable.png
deleted file mode 100644
index 487a4861..00000000
--- a/res/drawable-watch-hdpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_shield.png b/res/drawable-watch-hdpi/ic_permission_shield.png
deleted file mode 100644
index cab08e47..00000000
--- a/res/drawable-watch-hdpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_shielddisable.png b/res/drawable-watch-hdpi/ic_permission_shielddisable.png
deleted file mode 100644
index 548ac56c..00000000
--- a/res/drawable-watch-hdpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_sms.png b/res/drawable-watch-hdpi/ic_permission_sms.png
deleted file mode 100644
index dc3db2f9..00000000
--- a/res/drawable-watch-hdpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_smsdisable.png b/res/drawable-watch-hdpi/ic_permission_smsdisable.png
deleted file mode 100644
index 608c4d04..00000000
--- a/res/drawable-watch-hdpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_storage.png b/res/drawable-watch-hdpi/ic_permission_storage.png
deleted file mode 100644
index 031d989f..00000000
--- a/res/drawable-watch-hdpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_storagedisable.png b/res/drawable-watch-hdpi/ic_permission_storagedisable.png
deleted file mode 100644
index 08dc6625..00000000
--- a/res/drawable-watch-hdpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_cc_cancel.png b/res/drawable-watch-mdpi/ic_cc_cancel.png
deleted file mode 100644
index 87fc65ab..00000000
--- a/res/drawable-watch-mdpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_cc_checkmark.png b/res/drawable-watch-mdpi/ic_cc_checkmark.png
deleted file mode 100644
index 02c22b19..00000000
--- a/res/drawable-watch-mdpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_cc_deny.png b/res/drawable-watch-mdpi/ic_cc_deny.png
deleted file mode 100644
index f3b29f7f..00000000
--- a/res/drawable-watch-mdpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_calendar.png b/res/drawable-watch-mdpi/ic_permission_calendar.png
deleted file mode 100644
index 6ae24429..00000000
--- a/res/drawable-watch-mdpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_calendardisable.png b/res/drawable-watch-mdpi/ic_permission_calendardisable.png
deleted file mode 100644
index 639109fa..00000000
--- a/res/drawable-watch-mdpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_call.png b/res/drawable-watch-mdpi/ic_permission_call.png
deleted file mode 100644
index d67a03a5..00000000
--- a/res/drawable-watch-mdpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_calldisable.png b/res/drawable-watch-mdpi/ic_permission_calldisable.png
deleted file mode 100644
index 39760b74..00000000
--- a/res/drawable-watch-mdpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_camera.png b/res/drawable-watch-mdpi/ic_permission_camera.png
deleted file mode 100644
index 807a66f6..00000000
--- a/res/drawable-watch-mdpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_cameradisable.png b/res/drawable-watch-mdpi/ic_permission_cameradisable.png
deleted file mode 100644
index edf4f7a7..00000000
--- a/res/drawable-watch-mdpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_contact.png b/res/drawable-watch-mdpi/ic_permission_contact.png
deleted file mode 100644
index 2e146e20..00000000
--- a/res/drawable-watch-mdpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_contactdisable.png b/res/drawable-watch-mdpi/ic_permission_contactdisable.png
deleted file mode 100644
index e3903516..00000000
--- a/res/drawable-watch-mdpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_location.png b/res/drawable-watch-mdpi/ic_permission_location.png
deleted file mode 100644
index 3862b24c..00000000
--- a/res/drawable-watch-mdpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_locationdisable.png b/res/drawable-watch-mdpi/ic_permission_locationdisable.png
deleted file mode 100644
index 1f875bd8..00000000
--- a/res/drawable-watch-mdpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_mic.png b/res/drawable-watch-mdpi/ic_permission_mic.png
deleted file mode 100644
index 33327f0d..00000000
--- a/res/drawable-watch-mdpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_micdisable.png b/res/drawable-watch-mdpi/ic_permission_micdisable.png
deleted file mode 100644
index 7a1b39c4..00000000
--- a/res/drawable-watch-mdpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_more.png b/res/drawable-watch-mdpi/ic_permission_more.png
deleted file mode 100644
index a563f1a9..00000000
--- a/res/drawable-watch-mdpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_sensor.png b/res/drawable-watch-mdpi/ic_permission_sensor.png
deleted file mode 100644
index 59e1c01f..00000000
--- a/res/drawable-watch-mdpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_sensordisable.png b/res/drawable-watch-mdpi/ic_permission_sensordisable.png
deleted file mode 100644
index d8d55c6d..00000000
--- a/res/drawable-watch-mdpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_shield.png b/res/drawable-watch-mdpi/ic_permission_shield.png
deleted file mode 100644
index 7773fa48..00000000
--- a/res/drawable-watch-mdpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_shielddisable.png b/res/drawable-watch-mdpi/ic_permission_shielddisable.png
deleted file mode 100644
index 42f452bf..00000000
--- a/res/drawable-watch-mdpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_sms.png b/res/drawable-watch-mdpi/ic_permission_sms.png
deleted file mode 100644
index 11333ddb..00000000
--- a/res/drawable-watch-mdpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_smsdisable.png b/res/drawable-watch-mdpi/ic_permission_smsdisable.png
deleted file mode 100644
index b4416f4b..00000000
--- a/res/drawable-watch-mdpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_storage.png b/res/drawable-watch-mdpi/ic_permission_storage.png
deleted file mode 100644
index 07bd8f92..00000000
--- a/res/drawable-watch-mdpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_storagedisable.png b/res/drawable-watch-mdpi/ic_permission_storagedisable.png
deleted file mode 100644
index ed8af410..00000000
--- a/res/drawable-watch-mdpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_cc_cancel.png b/res/drawable-watch-xhdpi/ic_cc_cancel.png
deleted file mode 100644
index fec6ecb8..00000000
--- a/res/drawable-watch-xhdpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_cc_checkmark.png b/res/drawable-watch-xhdpi/ic_cc_checkmark.png
deleted file mode 100644
index 1302723b..00000000
--- a/res/drawable-watch-xhdpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_cc_deny.png b/res/drawable-watch-xhdpi/ic_cc_deny.png
deleted file mode 100644
index a5f8dc1b..00000000
--- a/res/drawable-watch-xhdpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_calendar.png b/res/drawable-watch-xhdpi/ic_permission_calendar.png
deleted file mode 100644
index 806438c6..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_calendardisable.png b/res/drawable-watch-xhdpi/ic_permission_calendardisable.png
deleted file mode 100644
index 821462e4..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_call.png b/res/drawable-watch-xhdpi/ic_permission_call.png
deleted file mode 100644
index 079942b5..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_calldisable.png b/res/drawable-watch-xhdpi/ic_permission_calldisable.png
deleted file mode 100644
index 13cd805e..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_camera.png b/res/drawable-watch-xhdpi/ic_permission_camera.png
deleted file mode 100644
index 03b0d8d0..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_cameradisable.png b/res/drawable-watch-xhdpi/ic_permission_cameradisable.png
deleted file mode 100644
index bcb2a350..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_contact.png b/res/drawable-watch-xhdpi/ic_permission_contact.png
deleted file mode 100644
index 996fe39d..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_contactdisable.png b/res/drawable-watch-xhdpi/ic_permission_contactdisable.png
deleted file mode 100644
index 1063f17b..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_location.png b/res/drawable-watch-xhdpi/ic_permission_location.png
deleted file mode 100644
index d9dc1fc9..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_locationdisable.png b/res/drawable-watch-xhdpi/ic_permission_locationdisable.png
deleted file mode 100644
index c3e7ae9f..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_mic.png b/res/drawable-watch-xhdpi/ic_permission_mic.png
deleted file mode 100644
index 3a951ea8..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_micdisable.png b/res/drawable-watch-xhdpi/ic_permission_micdisable.png
deleted file mode 100644
index a9c7c81e..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_more.png b/res/drawable-watch-xhdpi/ic_permission_more.png
deleted file mode 100644
index a3f7ee5b..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_sensor.png b/res/drawable-watch-xhdpi/ic_permission_sensor.png
deleted file mode 100644
index 73564014..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_sensordisable.png b/res/drawable-watch-xhdpi/ic_permission_sensordisable.png
deleted file mode 100644
index ef135a7e..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_shield.png b/res/drawable-watch-xhdpi/ic_permission_shield.png
deleted file mode 100644
index 2fc8fd07..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_shielddisable.png b/res/drawable-watch-xhdpi/ic_permission_shielddisable.png
deleted file mode 100644
index 08a862e8..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_sms.png b/res/drawable-watch-xhdpi/ic_permission_sms.png
deleted file mode 100644
index c74ce084..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_smsdisable.png b/res/drawable-watch-xhdpi/ic_permission_smsdisable.png
deleted file mode 100644
index b7256772..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_storage.png b/res/drawable-watch-xhdpi/ic_permission_storage.png
deleted file mode 100644
index 1f16bdb6..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_storagedisable.png b/res/drawable-watch-xhdpi/ic_permission_storagedisable.png
deleted file mode 100644
index 41d42d57..00000000
--- a/res/drawable-watch-xhdpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch/accept_deny_dialog_negative_bg.xml b/res/drawable-watch/accept_deny_dialog_negative_bg.xml
new file mode 100644
index 00000000..1ccc40ab
--- /dev/null
+++ b/res/drawable-watch/accept_deny_dialog_negative_bg.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <ripple android:color="?android:colorControlHighlight" />
+ </item>
+ <item>
+ <ripple android:color="?android:colorControlHighlight">
+ <item>
+ <shape android:shape="oval"
+ android:tint="?android:colorButtonNormal">
+ <solid android:color="@android:color/white" />
+ <size android:width="@dimen/diag_button_size"
+ android:height="@dimen/diag_button_size" />
+ </shape>
+ </item>
+ </ripple>
+ </item>
+</layer-list>
diff --git a/res/drawable-watch/accept_deny_dialog_positive_bg.xml b/res/drawable-watch/accept_deny_dialog_positive_bg.xml
new file mode 100644
index 00000000..786a35ba
--- /dev/null
+++ b/res/drawable-watch/accept_deny_dialog_positive_bg.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <ripple android:color="?android:colorAccent" />
+ </item>
+ <item>
+ <ripple android:color="?android:colorControlHighlight">
+ <item>
+ <shape android:shape="oval"
+ android:tint="@color/btn_colored_background_material">
+ <solid android:color="@android:color/white" />
+ <size android:width="@dimen/diag_button_size"
+ android:height="@dimen/diag_button_size" />
+ </shape>
+ </item>
+ </ripple>
+ </item>
+</layer-list>
diff --git a/res/drawable-watch/action_negative_bg.xml b/res/drawable-watch/action_negative_bg.xml
index 7b21ba6d..994ae8e2 100644
--- a/res/drawable-watch/action_negative_bg.xml
+++ b/res/drawable-watch/action_negative_bg.xml
@@ -13,23 +13,12 @@
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_enabled="false">
- <shape android:shape="oval">
- <solid android:color="@color/circular_button_disabled"/>
- <size android:width="40dp" android:height="40dp" />
- </shape>
- </item>
- <item android:state_pressed="true">
- <shape android:shape="oval">
- <solid android:color="#757575"/>
- <size android:width="40dp" android:height="40dp" />
- </shape>
- </item>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:colorControlHighlight">
<item>
- <shape android:shape="oval">
- <solid android:color="#BDBDBD"/>
+ <shape android:shape="oval" android:tint="?android:colorButtonNormal">
+ <solid android:color="@android:color/white" />
<size android:width="40dp" android:height="40dp" />
</shape>
</item>
-</selector>
+</ripple>
diff --git a/res/drawable-watch/action_positive_bg.xml b/res/drawable-watch/action_positive_bg.xml
index f3457c1a..3e8590f2 100644
--- a/res/drawable-watch/action_positive_bg.xml
+++ b/res/drawable-watch/action_positive_bg.xml
@@ -13,23 +13,12 @@
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_enabled="false">
- <shape android:shape="oval">
- <solid android:color="@color/circular_button_disabled"/>
- <size android:width="40dp" android:height="40dp" />
- </shape>
- </item>
- <item android:state_pressed="true">
- <shape android:shape="oval">
- <solid android:color="#009688"/>
- <size android:width="40dp" android:height="40dp" />
- </shape>
- </item>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:colorControlHighlight">
<item>
- <shape android:shape="oval">
- <solid android:color="#00BFA5"/>
+ <shape android:shape="oval" android:tint="@color/btn_colored_background_material">
+ <solid android:color="@android:color/white" />
<size android:width="40dp" android:height="40dp" />
</shape>
</item>
-</selector>
+</ripple>
diff --git a/res/drawable-watch/cancel_button.xml b/res/drawable-watch/cancel_button.xml
index 641526a5..8e4d2d48 100644
--- a/res/drawable-watch/cancel_button.xml
+++ b/res/drawable-watch/cancel_button.xml
@@ -15,7 +15,5 @@
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/action_negative_bg" />
- <item>
- <bitmap android:src="@drawable/ic_cc_cancel" android:gravity="center" />
- </item>
+ <item android:drawable="@drawable/ic_cc_clear" android:gravity="center" />
</layer-list>
diff --git a/res/drawable-watch/confirm_button.xml b/res/drawable-watch/confirm_button.xml
index 2b53e42e..d1bfae33 100644
--- a/res/drawable-watch/confirm_button.xml
+++ b/res/drawable-watch/confirm_button.xml
@@ -15,7 +15,5 @@
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/action_positive_bg" />
- <item>
- <bitmap android:src="@drawable/ic_cc_checkmark" android:gravity="center" />
- </item>
+ <item android:drawable="@drawable/ic_cc_checkmark" android:gravity="center" />
</layer-list>
diff --git a/res/drawable-watch/deny_button.xml b/res/drawable-watch/deny_button.xml
index 1e7582bc..0a2e1ae1 100644
--- a/res/drawable-watch/deny_button.xml
+++ b/res/drawable-watch/deny_button.xml
@@ -15,7 +15,5 @@
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/action_negative_bg" />
- <item>
- <bitmap android:src="@drawable/ic_cc_deny" android:gravity="center" />
- </item>
+ <item android:drawable="@drawable/ic_cc_deny" android:gravity="center" />
</layer-list>
diff --git a/res/drawable-watch/ic_cc_checkmark.xml b/res/drawable-watch/ic_cc_checkmark.xml
new file mode 100644
index 00000000..832e090f
--- /dev/null
+++ b/res/drawable-watch/ic_cc_checkmark.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"
+ android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/drawable-watch/ic_cc_clear.xml b/res/drawable-watch/ic_cc_clear.xml
new file mode 100644
index 00000000..06bb30b3
--- /dev/null
+++ b/res/drawable-watch/ic_cc_clear.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"
+ android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/drawable-watch/ic_cc_deny.xml b/res/drawable-watch/ic_cc_deny.xml
new file mode 100644
index 00000000..971dfcc8
--- /dev/null
+++ b/res/drawable-watch/ic_cc_deny.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"
+ android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/layout-watch/accept_deny_dialog.xml b/res/layout-watch/accept_deny_dialog.xml
new file mode 100644
index 00000000..1a0509ee
--- /dev/null
+++ b/res/layout-watch/accept_deny_dialog.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:fillViewport="true"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <LinearLayout
+ android:id="@android:id/content"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <FrameLayout
+ android:adjustViewBounds="true"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="@dimen/diag_preferred_padding">
+ <ImageView android:id="@android:id/icon"
+ android:adjustViewBounds="true"
+ android:maxHeight="24dp"
+ android:maxWidth="24dp"
+ android:layout_marginTop="@dimen/diag_icon_margin_top"
+ android:layout_marginBottom="8dp"
+ android:layout_gravity="center_horizontal"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:scaleType="centerInside"
+ android:visibility="gone"
+ android:src="@null" />
+ </FrameLayout>
+
+ <TextView android:id="@android:id/title"
+ android:gravity="center"
+ android:layout_marginBottom="8dp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="@dimen/diag_preferred_padding"
+ android:paddingRight="@dimen/diag_preferred_padding"
+ android:textAppearance="@android:style/TextAppearance.Material.Title" />
+
+ <TextView
+ android:id="@android:id/message"
+ android:gravity="center"
+ android:layout_marginBottom="8dp"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:paddingLeft="@dimen/diag_preferred_padding"
+ android:paddingRight="@dimen/diag_preferred_padding"
+ android:textAppearance="@android:style/TextAppearance.Material.Subhead"
+ android:visibility="gone" />
+
+ <FrameLayout
+ android:id="@+id/buttonPanel"
+ android:layout_weight="1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <LinearLayout
+ android:id="@+id/buttonContainer"
+ android:orientation="horizontal"
+ android:gravity="center_horizontal|top"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:paddingTop="8dp"
+ android:paddingBottom="@dimen/diag_button_padding_bottom"
+ android:paddingLeft="@dimen/diag_button_padding_horizontal"
+ android:paddingRight="@dimen/diag_button_padding_horizontal"
+ style="?android:attr/buttonBarStyle">
+
+ <ImageButton
+ android:id="@android:id/button2"
+ android:src="@drawable/ic_cc_clear"
+ android:background="@drawable/accept_deny_dialog_negative_bg"
+ android:contentDescription="@string/generic_cancel"
+ android:layout_width="@dimen/diag_button_size"
+ android:layout_height="@dimen/diag_button_size"
+ android:visibility="gone" />
+
+ <Space
+ android:id="@+id/spacer"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:visibility="gone"
+ android:layout_weight="1" />
+
+ <ImageButton
+ android:id="@android:id/button1"
+ android:src="@drawable/ic_cc_checkmark"
+ android:background="@drawable/accept_deny_dialog_positive_bg"
+ android:contentDescription="@string/generic_yes"
+ android:layout_width="@dimen/diag_button_size"
+ android:layout_height="@dimen/diag_button_size"
+ android:visibility="gone" />
+ </LinearLayout>
+ </FrameLayout>
+ </LinearLayout>
+</ScrollView>
diff --git a/res/layout-watch/confirmation_dialog.xml b/res/layout-watch/confirmation_dialog.xml
deleted file mode 100644
index ea25b6b4..00000000
--- a/res/layout-watch/confirmation_dialog.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/confirmation"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ScrollView
- android:id="@+id/scrolling_container"
- android:overScrollMode="never"
- android:scrollbars="none"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:id="@+id/content"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="@dimen/conf_diag_content_padding_top">
-
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/conf_diag_min_space_above_message"
- android:gravity="bottom">
- <TextView
- android:id="@+id/current_page_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="@dimen/grant_permissions_app_breadcrumb_margin_top"
- android:textAppearance="@style/GrantPermissions.BreadcrumbText" />
-
- <ImageView
- android:id="@+id/icon"
- android:layout_width="@dimen/grant_permissions_app_icon_size"
- android:layout_height="@dimen/grant_permissions_app_icon_size"
- android:tint="@color/grant_permissions_app_color"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="@dimen/grant_permissions_app_icon_margin_top"/>
- </LinearLayout>
-
- <TextView
- android:id="@+id/message"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/grant_permissions_title_margin_top"
- android:paddingLeft="@dimen/grant_permissions_message_side_padding"
- android:paddingRight="@dimen/grant_permissions_message_side_padding"
- android:gravity="center"
- android:textAppearance="@style/GrantPermissions.TitleText"/>
- </LinearLayout>
- </ScrollView>
-
- <!-- TODO: Change this to use a ViewStub instead of show/hiding the two layouts -->
- <FrameLayout android:id="@+id/button_bar_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:background="#FF606060">
- <FrameLayout
- android:id="@+id/horizontal_button_bar"
- android:layout_width="match_parent"
- android:layout_height="@dimen/conf_diag_button_container_height">
- <Button
- android:id="@+id/permission_deny_button"
- android:layout_width="54dp"
- android:layout_height="54dp"
- android:layout_gravity="top|left"
- android:layout_marginLeft="@dimen/conf_diag_2button_margin_side"
- android:layout_marginTop="@dimen/conf_diag_2button_margin_top"
- android:background="@drawable/cancel_button"/>
-
- <Button
- android:id="@+id/permission_allow_button"
- android:layout_width="54dp"
- android:layout_height="54dp"
- android:layout_gravity="top|right"
- android:layout_marginRight="@dimen/conf_diag_2button_margin_side"
- android:layout_marginTop="@dimen/conf_diag_2button_margin_top"
- android:background="@drawable/confirm_button"/>
- </FrameLayout>
-
- <FrameLayout
- android:id="@+id/vertical_button_bar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="@dimen/conf_diag_3button_padding_side"
- android:paddingRight="@dimen/conf_diag_3button_padding_side"
- android:visibility="gone">
- <LinearLayout
- android:id="@+id/buttonPanel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <Button
- android:id="@+id/vertical_button1"
- style="@style/Widget.WearDiag.Button"/>
-
- <Button
- android:id="@+id/vertical_button2"
- style="@style/Widget.WearDiag.Button"/>
-
- <Button
- android:id="@+id/vertical_button3"
- style="@style/Widget.WearDiag.Button"/>
-
- <!-- Adding padding to the bottom button causes rendering issues, so add
- an empty view here instead -->
- <Space android:layout_width="match_parent"
- android:layout_height="@dimen/conf_diag_3button_padding_bottom"/>
- </LinearLayout>
- </FrameLayout>
- </FrameLayout>
-</FrameLayout>
diff --git a/res/layout-watch/permissions_settings_item.xml b/res/layout-watch/permissions_settings_item.xml
deleted file mode 100644
index b370f1ac..00000000
--- a/res/layout-watch/permissions_settings_item.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- <android.support.wearable.view.CircledImageView
- android:id="@+id/image"
- android:alpha="0.5"
- android:layout_height="52dp"
- android:layout_width="52dp"
- android:layout_gravity="center_vertical"
- app:circle_border_color="#FFFFFFFF"
- app:circle_border_width="1dp"
- app:circle_color="#00000000"
- app:image_tint="#FFFFFFFF"/>
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/settings_text_margin_left"
- android:layout_gravity="center_vertical"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/text"
- android:alpha="0.5"
- android:fontFamily="sans-serif-condensed-light"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/permissions_settings_item_color"
- android:textSize="14sp"
- android:maxLines="2"
- android:ellipsize="end"/>
- <TextView
- android:id="@+id/state"
- android:alpha="0.5"
- android:fontFamily="sans-serif-condensed-light"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/permissions_settings_item_color"
- android:textSize="14sp"
- android:maxLines="1"
- android:ellipsize="end"/>
- </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout-watch/settings_internal.xml b/res/layout-watch/settings_internal.xml
deleted file mode 100644
index e1947aaa..00000000
--- a/res/layout-watch/settings_internal.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <TextView
- android:id="@+id/header"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/settings_header_base_height"
- android:layout_marginLeft="16dp"
- android:layout_marginTop="@dimen/settings_header_top_margin"
- android:textSize="@dimen/setting_short_header_text_size"
- android:maxLines="2"
- android:ellipsize="end"
- android:textColor="#9E9E9E"
- android:fontFamily="sans-serif-condensed-light"
- />
-
- <TextView
- android:id="@+id/details"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/settings_header_base_height"
- android:layout_marginLeft="16dp"
- android:layout_marginTop="@dimen/settings_header_top_margin"
- android:maxLines="2"
- android:ellipsize="end"
- android:textColor="@color/permissions_settings_item_color"
- android:textSize="14sp"
- android:visibility="gone"
- />
- </LinearLayout>
-
- <android.support.wearable.view.WearableListView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/wheel"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- />
-</merge>
diff --git a/res/values-af-watch/strings.xml b/res/values-af-watch/strings.xml
index c32ca2b1..a62540f6 100644
--- a/res/values-af-watch/strings.xml
+++ b/res/values-af-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Wys stelselprogramme"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Onveranderbaar"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"GEAKTIVEER"</string>
- <string name="generic_disabled" msgid="576339310027394867">"GEDEAKTIVEER"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Kanselleer"</string>
</resources>
diff --git a/res/values-am-watch/strings.xml b/res/values-am-watch/strings.xml
index 73397e34..1b01ddd3 100644
--- a/res/values-am-watch/strings.xml
+++ b/res/values-am-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"የስርዓት መተግበሪያዎችን አሳይ"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ሊለወጥ አይችልም"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ነቅቷል"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ተሰናክሏል"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"አዎ"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ይቅር"</string>
</resources>
diff --git a/res/values-ar-watch/strings.xml b/res/values-ar-watch/strings.xml
index 144f7868..19930ea7 100644
--- a/res/values-ar-watch/strings.xml
+++ b/res/values-ar-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"عرض تطبيقات النظام"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"لا يمكن التغيير"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ممكّن"</string>
- <string name="generic_disabled" msgid="576339310027394867">"معطّل"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"نعم"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"إلغاء"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 8c49138d..1f32e914 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -86,7 +86,7 @@
<string name="grant_dialog_button_deny" msgid="2176510645406614340">"رفض"</string>
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"الرفض على أي حال"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> من <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"‏هل تريد السماح لـ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بإجراء <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
+ <string name="permission_warning_template" msgid="7332275268559121742">"‏هل توافق على منح &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; إذن <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
<string name="grant_dialog_button_allow" msgid="4616529495342337095">"سماح"</string>
<string name="app_permissions_breadcrumb" msgid="3390836200791539264">"التطبيقات"</string>
<string name="app_permissions" msgid="3146758905824597178">"أذونات التطبيق"</string>
diff --git a/res/values-az-rAZ-watch/strings.xml b/res/values-az-rAZ-watch/strings.xml
index 5d28398e..ef6723b5 100644
--- a/res/values-az-rAZ-watch/strings.xml
+++ b/res/values-az-rAZ-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Sistem tətbiqlərini göstərin"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Dəyişdirilə bilməz"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"AKTİV"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DEAKTİV"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Bəli"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Ləğv edin"</string>
</resources>
diff --git a/res/values-b+sr+Latn-watch/strings.xml b/res/values-b+sr+Latn-watch/strings.xml
index 716694a4..63a44db9 100644
--- a/res/values-b+sr+Latn-watch/strings.xml
+++ b/res/values-b+sr+Latn-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaži sistemske aplikacije"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ne može da se promeni"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"OMOGUĆENO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ONEMOGUĆENO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Otkaži"</string>
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 70c664d6..42455ced 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -86,7 +86,7 @@
<string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odbaci"</string>
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ipak odbij"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. od <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"Želite li da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; obavi sledeću radnju: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_warning_template" msgid="7332275268559121742">"Želite li da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="grant_dialog_button_allow" msgid="4616529495342337095">"Dozvoli"</string>
<string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacije"</string>
<string name="app_permissions" msgid="3146758905824597178">"Dozvole za aplikacije"</string>
diff --git a/res/values-be-rBY-watch/strings.xml b/res/values-be-rBY-watch/strings.xml
index ca2e3341..99b2ce8a 100644
--- a/res/values-be-rBY-watch/strings.xml
+++ b/res/values-be-rBY-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Паказваць сістэмныя праграмы"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Нельга змяніць"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"УКЛЮЧАНА"</string>
- <string name="generic_disabled" msgid="576339310027394867">"АДКЛЮЧАНА"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Так"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Скасаваць"</string>
</resources>
diff --git a/res/values-bg-watch/strings.xml b/res/values-bg-watch/strings.xml
index af81f2a8..b71606b4 100644
--- a/res/values-bg-watch/strings.xml
+++ b/res/values-bg-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Показване на системните приложения"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Без промяна"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"АКТИВИРАНО"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ДЕАКТИВИРАНО"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Отказ"</string>
</resources>
diff --git a/res/values-bn-rBD-watch/strings.xml b/res/values-bn-rBD-watch/strings.xml
index d642be1c..79a91f48 100644
--- a/res/values-bn-rBD-watch/strings.xml
+++ b/res/values-bn-rBD-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"সিস্টেম অ্যাপ্লিকেশানগুলি দেখান"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"পরিবর্তন করা যাবে না"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"সক্ষম করা রয়েছে"</string>
- <string name="generic_disabled" msgid="576339310027394867">"অক্ষম করা রয়েছে"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"হ্যাঁ"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"বাতিল করুন"</string>
</resources>
diff --git a/res/values-bs-rBA-watch/strings.xml b/res/values-bs-rBA-watch/strings.xml
index d168fbcc..dcae0979 100644
--- a/res/values-bs-rBA-watch/strings.xml
+++ b/res/values-bs-rBA-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaži sistemske aplikacije"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ne mijenja se"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"OMOGUĆENO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ONEMOGUĆENO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Otkaži"</string>
</resources>
diff --git a/res/values-ca-watch/strings.xml b/res/values-ca-watch/strings.xml
index c4f9e3ff..d289b560 100644
--- a/res/values-ca-watch/strings.xml
+++ b/res/values-ca-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostra les aplicacions del sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"No es pot canviar"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ACTIVAT"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DESACTIVAT"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sí"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancel·la"</string>
</resources>
diff --git a/res/values-cs-watch/strings.xml b/res/values-cs-watch/strings.xml
index ae6cfbcf..160d7aa1 100644
--- a/res/values-cs-watch/strings.xml
+++ b/res/values-cs-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Zobrazit systémové aplikace"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nelze změnit"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ZAPNUTO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"VYPNUTO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ano"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Zrušit"</string>
</resources>
diff --git a/res/values-da-watch/strings.xml b/res/values-da-watch/strings.xml
index 2fd6279d..616b1c2e 100644
--- a/res/values-da-watch/strings.xml
+++ b/res/values-da-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Vis systemapps"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan ikke ændres"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"AKTIVERET"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DEAKTIVERET"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Annuller"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 921ca808..0415803c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -86,7 +86,7 @@
<string name="grant_dialog_button_deny" msgid="2176510645406614340">"Afvis"</string>
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Afvis alligevel"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ud af <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_warning_template" msgid="7332275268559121742">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="grant_dialog_button_allow" msgid="4616529495342337095">"Tillad"</string>
<string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string>
<string name="app_permissions" msgid="3146758905824597178">"Apptilladelser"</string>
diff --git a/res/values-de-watch/strings.xml b/res/values-de-watch/strings.xml
index be893682..3b12e0b8 100644
--- a/res/values-de-watch/strings.xml
+++ b/res/values-de-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"System-Apps anzeigen"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Keine Änderung möglich"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"Aktiviert"</string>
- <string name="generic_disabled" msgid="576339310027394867">"Deaktiviert"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Abbrechen"</string>
</resources>
diff --git a/res/values-el-watch/strings.xml b/res/values-el-watch/strings.xml
index 2aa34551..3d923dcc 100644
--- a/res/values-el-watch/strings.xml
+++ b/res/values-el-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Εμφάνιση εφαρμογών συστήματος"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Δεν είναι δυνατή η αλλαγή"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ΕΝΕΡΓΟ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ΑΝΕΝΕΡΓΟ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ναι"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Ακύρωση"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index a82a5562..ad4c3e24 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -87,7 +87,7 @@
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Απόρριψη"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> από <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="7332275268559121742">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να <xliff:g id="ACTION">%2$s</xliff:g>;"</string>
- <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Να επιτραπεί"</string>
+ <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Να επιτρέπεται"</string>
<string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Εφαρμογές"</string>
<string name="app_permissions" msgid="3146758905824597178">"Δικαιώματα εφ/γών"</string>
<string name="never_ask_again" msgid="1089938738199748687">"Να μην ερωτηθώ ξανά"</string>
diff --git a/res/values-en-rAU-watch/strings.xml b/res/values-en-rAU-watch/strings.xml
index 755d64f0..e0d0edbc 100644
--- a/res/values-en-rAU-watch/strings.xml
+++ b/res/values-en-rAU-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Show system apps"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ENABLED"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DISABLED"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
</resources>
diff --git a/res/values-en-rGB-watch/strings.xml b/res/values-en-rGB-watch/strings.xml
index 755d64f0..e0d0edbc 100644
--- a/res/values-en-rGB-watch/strings.xml
+++ b/res/values-en-rGB-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Show system apps"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ENABLED"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DISABLED"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
</resources>
diff --git a/res/values-en-rIN-watch/strings.xml b/res/values-en-rIN-watch/strings.xml
index 755d64f0..e0d0edbc 100644
--- a/res/values-en-rIN-watch/strings.xml
+++ b/res/values-en-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Show system apps"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ENABLED"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DISABLED"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string>
</resources>
diff --git a/res/values-es-rUS-watch/strings.xml b/res/values-es-rUS-watch/strings.xml
index 120b19bd..145b7361 100644
--- a/res/values-es-rUS-watch/strings.xml
+++ b/res/values-es-rUS-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicaciones del sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Inalterable"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"HABILITADA"</string>
- <string name="generic_disabled" msgid="576339310027394867">"INHABILITADA"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sí"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 894f1c7a..fedbe451 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -86,7 +86,7 @@
<string name="grant_dialog_button_deny" msgid="2176510645406614340">"Rechazar"</string>
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Denegar de todos modos"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"¿Permitir que la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_warning_template" msgid="7332275268559121742">"¿Quieres que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string>
<string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicaciones"</string>
<string name="app_permissions" msgid="3146758905824597178">"Permisos de aplicaciones"</string>
diff --git a/res/values-es-watch/strings.xml b/res/values-es-watch/strings.xml
index 198c266f..b3c4ff12 100644
--- a/res/values-es-watch/strings.xml
+++ b/res/values-es-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicaciones del sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"No se puede cambiar"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"HABILITADO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"INHABILITADO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sí"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
</resources>
diff --git a/res/values-et-rEE-watch/strings.xml b/res/values-et-rEE-watch/strings.xml
index 947809d9..328e2150 100644
--- a/res/values-et-rEE-watch/strings.xml
+++ b/res/values-et-rEE-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Kuva süsteemirakendused"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ei saa muuta"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"LUBATUD"</string>
- <string name="generic_disabled" msgid="576339310027394867">"KEELATUD"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Jah"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Tühista"</string>
</resources>
diff --git a/res/values-eu-rES-watch/strings.xml b/res/values-eu-rES-watch/strings.xml
index 25e2429e..89eb2968 100644
--- a/res/values-eu-rES-watch/strings.xml
+++ b/res/values-eu-rES-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Erakutsi sistema-aplikazioak"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ezin da aldatu"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"GAITUTA"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DESGAITUTA"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Bai"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Utzi"</string>
</resources>
diff --git a/res/values-fa-watch/strings.xml b/res/values-fa-watch/strings.xml
index 5dc5a3f6..8d149541 100644
--- a/res/values-fa-watch/strings.xml
+++ b/res/values-fa-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"نمایش‌ برنامه‌های سیستم"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"نمی‌تواند تغییر کند"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"فعال شد"</string>
- <string name="generic_disabled" msgid="576339310027394867">"غیرفعال"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"بله"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"لغو"</string>
</resources>
diff --git a/res/values-fi-watch/strings.xml b/res/values-fi-watch/strings.xml
index 5305299c..292c4173 100644
--- a/res/values-fi-watch/strings.xml
+++ b/res/values-fi-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Näytä järjestelmäsovellukset"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ei muutettavissa"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"KÄYTÖSSÄ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"POIS KÄYTÖSTÄ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Kyllä"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Peruuta"</string>
</resources>
diff --git a/res/values-fr-rCA-watch/strings.xml b/res/values-fr-rCA-watch/strings.xml
index cb176c27..ad86d016 100644
--- a/res/values-fr-rCA-watch/strings.xml
+++ b/res/values-fr-rCA-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Afficher les applications système"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Inchangeable"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ACTIVÉ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DÉSACTIVÉ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Oui"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Annuler"</string>
</resources>
diff --git a/res/values-fr-watch/strings.xml b/res/values-fr-watch/strings.xml
index c567d03b..a172e1c7 100644
--- a/res/values-fr-watch/strings.xml
+++ b/res/values-fr-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Afficher les applications système"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Non modifiable"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ACTIVÉ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DÉSACTIVÉ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Oui"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Annuler"</string>
</resources>
diff --git a/res/values-gl-rES-watch/strings.xml b/res/values-gl-rES-watch/strings.xml
index 38e4e6cb..5cbb970c 100644
--- a/res/values-gl-rES-watch/strings.xml
+++ b/res/values-gl-rES-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicacións do sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Cambio imposible"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ACTIVADO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DESACTIVADO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Si"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
</resources>
diff --git a/res/values-gu-rIN-watch/strings.xml b/res/values-gu-rIN-watch/strings.xml
index 10ee4306..6e83cf2e 100644
--- a/res/values-gu-rIN-watch/strings.xml
+++ b/res/values-gu-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"સિસ્ટમ ઍપ્લિકેશનો બતાવો"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"બદલી શકતાં નથી"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"સક્ષમ કરેલ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"અક્ષમ કરેલ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"હા"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"રદ કરો"</string>
</resources>
diff --git a/res/values-hi-watch/strings.xml b/res/values-hi-watch/strings.xml
index 39c93948..f7adb0ce 100644
--- a/res/values-hi-watch/strings.xml
+++ b/res/values-hi-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"सिस्टम ऐप्स दिखाएं"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"बदला नहीं जा सकता"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"सक्षम"</string>
- <string name="generic_disabled" msgid="576339310027394867">"अक्षम"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"हां"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"रद्द करें"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 9149bc93..26293534 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -79,7 +79,7 @@
<string name="Parse_error_dlg_text" msgid="7623286983621067011">"पैकेज को पार्स करने में कोई समस्‍या थी."</string>
<string name="newPerms" msgid="6039428254474104210">"नया"</string>
<string name="allPerms" msgid="1024385515840703981">"सभी"</string>
- <string name="privacyPerms" msgid="1850527049572617">"गोपनीयता"</string>
+ <string name="privacyPerms" msgid="1850527049572617">"निजता"</string>
<string name="devicePerms" msgid="6733560207731294504">"डिवाइस पहुंच"</string>
<string name="no_new_perms" msgid="6657813692169565975">"इस नई जानकारी के लिए अनुमति की आवश्‍यकता नहीं है."</string>
<string name="grant_confirm_question" msgid="4690289297029223742">"क्या आप निम्नलिखित के लिए अनुमति देना चाहते हैं ? इसे इन पर एक्सेस प्राप्त होगी:"</string>
diff --git a/res/values-hr-watch/strings.xml b/res/values-hr-watch/strings.xml
index 37658e5e..cd44eee0 100644
--- a/res/values-hr-watch/strings.xml
+++ b/res/values-hr-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaži aplikacije sustava"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Promjena nemoguća"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"OMOGUĆENO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ONEMOGUĆENO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Odustani"</string>
</resources>
diff --git a/res/values-hu-watch/strings.xml b/res/values-hu-watch/strings.xml
index 8a116dff..8ae3504e 100644
--- a/res/values-hu-watch/strings.xml
+++ b/res/values-hu-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>/<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Rendszeralkalmazások megjelenítése"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nem változtatható"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ENGEDÉLYEZVE"</string>
- <string name="generic_disabled" msgid="576339310027394867">"LETILTVA"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Igen"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Mégse"</string>
</resources>
diff --git a/res/values-hy-rAM-watch/strings.xml b/res/values-hy-rAM-watch/strings.xml
index 08786c11..5538858c 100644
--- a/res/values-hy-rAM-watch/strings.xml
+++ b/res/values-hy-rAM-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Ցուցադրել համակարգի հավելվածները"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Հնարավոր չէ փոխել"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ՄԻԱՑՎԱԾ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ԱՆՋԱՏՎԱԾ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Այո"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Չեղարկել"</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index b7d5c2a2..8b892d64 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -19,7 +19,7 @@
<string name="app_name" msgid="2738748390251381682">"Փաթեթի տեղադրիչ"</string>
<string name="next" msgid="3057143178373252333">"Հաջորդը"</string>
<string name="install" msgid="5896438203900042068">"Տեղադրել"</string>
- <string name="done" msgid="3889387558374211719">"Կատարված է"</string>
+ <string name="done" msgid="3889387558374211719">"Պատրաստ է"</string>
<string name="security_settings_desc" msgid="2706691034244052604">"Թույլատրել այս հավելվածին`"</string>
<string name="cancel" msgid="8360346460165114585">"Չեղարկել"</string>
<string name="unknown" msgid="4742479012767208045">"Անհայտ"</string>
@@ -50,8 +50,8 @@
<string name="settings" msgid="6743583734099755409">"Կարգավորումներ"</string>
<string name="manage_applications" msgid="4033876279091996596">"Կառավարել հավելվածները"</string>
<string name="dlg_app_replacement_title" msgid="1232230739563820951">"Փոխարինե՞լ հավելվածը:"</string>
- <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ծրագիրը, որը դուք տեղադրում եք, կփոխարինի մեկ այլ ծրագրի:\n\nՁեր բոլոր նախկին օգտվողի տվյալները կպահվեն:"</string>
- <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Սա համակարգային ծրագիր է:\n\nՁեր բոլոր նախկին օգտվողի տվյալները կպահվեն:"</string>
+ <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ծրագիրը, որը դուք տեղադրում եք, կփոխարինի մեկ այլ ծրագրի:\n\nՁեր բոլոր նախկին օգտատիրոջ տվյալները կպահվեն:"</string>
+ <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Սա համակարգային ծրագիր է:\n\nՁեր բոլոր նախկին օգտատիրոջ տվյալները կպահվեն:"</string>
<string name="out_of_space_dlg_title" msgid="7843674437613797326">"Տարածքից դուրս"</string>
<string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց տեղադրել: Ազատեք որոշակի տարածք և կրկին փորձեք:"</string>
<string name="dlg_ok" msgid="6944357727705699232">"Լավ"</string>
@@ -61,20 +61,20 @@
<string name="uninstall_update_title" msgid="4146940097553335390">"Ապատեղադրել թարմացումը"</string>
<string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>-ը հետևյալ հավելվածի մասն է`"</string>
<string name="uninstall_application_text" msgid="6691975835951187030">"Ցանկանու՞մ եք ապատեղադրել այս ծրագիրը:"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ցանկանու՞մ եք ապատեղադրել այս հավելվածը "<b>"բոլոր"</b>" օգտվողների համար: Հավելվածը և դրա տվյալները կհեռացվեն սարքի "<b>"բոլոր"</b>" օգտվողներից:"</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ցանկանում եք ապատեղադրե՞լ այս ծրագիրը <xliff:g id="USERNAME">%1$s</xliff:g> օգտվողի համար:"</string>
+ <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ցանկանու՞մ եք ապատեղադրել այս հավելվածը "<b>"բոլոր"</b>" օգտատերերի համար: Հավելվածը և դրա տվյալները կհեռացվեն սարքի "<b>"բոլոր"</b>" օգտատերերից:"</string>
+ <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ցանկանում եք ապատեղադրե՞լ այս ծրագիրը <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար:"</string>
<string name="uninstall_update_text" msgid="1394549691152728409">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն:"</string>
- <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն: Դա վերաբերում է այս սարքի բոլոր օգտվողներին, այդ թվում նաև աշխատանքային պրոֆիլներ ունեցողներին:"</string>
+ <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն: Դա վերաբերում է այս սարքի բոլոր օգտատերերին, այդ թվում նաև աշխատանքային պրոֆիլներ ունեցողներին:"</string>
<string name="uninstalling" msgid="5556217435895938250">"Ապատեղադրում է..."</string>
<string name="uninstall_done" msgid="3792487853420281888">"Ապատեղադրումը ավարտված է:"</string>
<string name="uninstall_failed" msgid="631122574306299512">"Ապատեղադրումն անհաջող է:"</string>
<string name="uninstall_failed_device_policy_manager" msgid="3493789239037852035">"Հնարավոր չէ ապատեղադրել, քանի որ այս փաթեթն ակտիվ սարքի ադմինիստրատոր է:"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="4466062391552204291">"Հնարավոր չէ ապատեղադրել, քանի որ այս փաթեթը ակտիվ սարքի ադմինիստրատոր է <xliff:g id="USERNAME">%1$s</xliff:g> օգտվողի համար:"</string>
- <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Այս հավելվածն անհրաժեշտ է որոշ օգտվողների կամ պրոֆիլների համար և մնացածի մոտ հեռացվել է"</string>
+ <string name="uninstall_failed_device_policy_manager_of_user" msgid="4466062391552204291">"Հնարավոր չէ ապատեղադրել, քանի որ այս փաթեթը ակտիվ սարքի ադմինիստրատոր է <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար:"</string>
+ <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Այս հավելվածն անհրաժեշտ է որոշ օգտատերերի կամ պրոֆիլների համար և մնացածի մոտ հեռացվել է"</string>
<string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Այս հավելվածն անհրաժեշտ է ձեր պրոֆիլի համար: Այն հնարավոր չէ հեռացնել:"</string>
<string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ծրագիրը ձեր սարքի ադմինիստրատորի կողմից նշվել է որպես պարտադիր և չի կարող հեռացվել:"</string>
<string name="manage_device_administrators" msgid="891392489300312370">"Կառավարել սարքի ադմինիստրատորներին"</string>
- <string name="manage_users" msgid="3125018886835668847">"Կառավարել օգտվողներին"</string>
+ <string name="manage_users" msgid="3125018886835668847">"Կառավարել օգտատերերին"</string>
<string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց ապատեղադրել:"</string>
<string name="Parse_error_dlg_text" msgid="7623286983621067011">"Փաթեթը վերլուծելիս խնդիր առաջացավ:"</string>
<string name="newPerms" msgid="6039428254474104210">"Նոր"</string>
diff --git a/res/values-in-watch/strings.xml b/res/values-in-watch/strings.xml
index 38ad48b9..ca2e087e 100644
--- a/res/values-in-watch/strings.xml
+++ b/res/values-in-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Tampilkan aplikasi sistem"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Tidak dapat diubah"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"DIAKTIFKAN"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DINONAKTIFKAN"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ya"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Batal"</string>
</resources>
diff --git a/res/values-is-rIS-watch/strings.xml b/res/values-is-rIS-watch/strings.xml
index c8f92448..b82da5e5 100644
--- a/res/values-is-rIS-watch/strings.xml
+++ b/res/values-is-rIS-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Sýna kerfisforrit"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Má ekki breyta"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"VIRKT"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ÓVIRKT"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Já"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Hætta við"</string>
</resources>
diff --git a/res/values-it-watch/strings.xml b/res/values-it-watch/strings.xml
index 4a44dca9..73b2ab15 100644
--- a/res/values-it-watch/strings.xml
+++ b/res/values-it-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostra app di sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Imposs modif"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ATTIVATO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DISATTIVATO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sì"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Annulla"</string>
</resources>
diff --git a/res/values-iw-watch/strings.xml b/res/values-iw-watch/strings.xml
index d27e2d7d..34dd0d3c 100644
--- a/res/values-iw-watch/strings.xml
+++ b/res/values-iw-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"הצג אפליקציות מערכת"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"לא ניתן לשנות"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"מופעל"</string>
- <string name="generic_disabled" msgid="576339310027394867">"מושבת"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"כן"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ביטול"</string>
</resources>
diff --git a/res/values-ja-watch/strings.xml b/res/values-ja-watch/strings.xml
index f3e83c84..735b908c 100644
--- a/res/values-ja-watch/strings.xml
+++ b/res/values-ja-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"システムアプリの表示"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"変更不可"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"有効"</string>
- <string name="generic_disabled" msgid="576339310027394867">"無効"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"はい"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"キャンセル"</string>
</resources>
diff --git a/res/values-ka-rGE-watch/strings.xml b/res/values-ka-rGE-watch/strings.xml
index 6498a4dc..15749127 100644
--- a/res/values-ka-rGE-watch/strings.xml
+++ b/res/values-ka-rGE-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"სისტემის აპების ჩვენება"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ვერ შეიცვლება"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ჩართულია"</string>
- <string name="generic_disabled" msgid="576339310027394867">"გამორთულია"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"დიახ"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"გაუქმება"</string>
</resources>
diff --git a/res/values-kk-rKZ-watch/strings.xml b/res/values-kk-rKZ-watch/strings.xml
index dfff10bf..8996bcbe 100644
--- a/res/values-kk-rKZ-watch/strings.xml
+++ b/res/values-kk-rKZ-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Жүйелік қолданбаларды көрсету"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өзгерту мүмкін емес"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ҚОСЫЛҒАН"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ӨШІРІЛГЕН"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Иә"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Бас тарту"</string>
</resources>
diff --git a/res/values-km-rKH-watch/strings.xml b/res/values-km-rKH-watch/strings.xml
index 1beebfdb..c5f49c54 100644
--- a/res/values-km-rKH-watch/strings.xml
+++ b/res/values-km-rKH-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"បង្ហាញកម្មវិធីប្រព័ន្ធ"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"មិនអាចប្តូរបានទេ"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"បានបើកដំណើរការ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"បានបិទដំណើរការ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"បាទ/ចាស"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"បោះបង់"</string>
</resources>
diff --git a/res/values-kn-rIN-watch/strings.xml b/res/values-kn-rIN-watch/strings.xml
index 6ed8b36f..1a9a9939 100644
--- a/res/values-kn-rIN-watch/strings.xml
+++ b/res/values-kn-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"ಸಿಸ್ಟಂ ಅಪ್ಲಿಕೇಶನ್‌‌ಗಳನ್ನು ತೋರಿಸು"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ಹೌದು"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ರದ್ದುಮಾಡಿ"</string>
</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 4a64b97c..7cd63d5d 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -21,8 +21,8 @@
<string name="install" msgid="5896438203900042068">"ಸ್ಥಾಪಿಸು"</string>
<string name="done" msgid="3889387558374211719">"ಮುಗಿದಿದೆ"</string>
<string name="security_settings_desc" msgid="2706691034244052604">"ಇದಕ್ಕಾಗಿ ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸಿ:"</string>
- <string name="cancel" msgid="8360346460165114585">"ರದ್ದುಮಾಡು"</string>
- <string name="unknown" msgid="4742479012767208045">"ಅಜ್ಞಾತ"</string>
+ <string name="cancel" msgid="8360346460165114585">"ರದ್ದುಮಾಡಿ"</string>
+ <string name="unknown" msgid="4742479012767208045">"ಅಪರಿಚಿತ"</string>
<string name="installing" msgid="8613631001631998372">"ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ…"</string>
<string name="install_done" msgid="3682715442154357097">"ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲಾಗಿದೆ."</string>
<string name="install_confirm_question" msgid="7295206719219043890">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಇದು ಇಲ್ಲಿಗೆ ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ:"</string>
@@ -42,9 +42,9 @@
<string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ನಿಮ್ಮ ಟಿವಿಗೆ ಸ್ಥಾಪಿಸಲಾಗುವುದಿಲ್ಲ."</string>
<string name="install_failed_msg" product="default" msgid="8554909560982962052">"ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
<string name="launch" msgid="4826921505917605463">"ತೆರೆ"</string>
- <string name="unknown_apps_dlg_text" product="tablet" msgid="7504186369474734767">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್‌‌ ಅನ್ನು ಅಜ್ಞಾತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್‍‍ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
- <string name="unknown_apps_dlg_text" product="tv" msgid="7195713985140602351">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟಿವಿ ಅನ್ನು ಅಜ್ಞಾತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್‍‍ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
- <string name="unknown_apps_dlg_text" product="default" msgid="133213135679009316">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಅಜ್ಞಾತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್‍‍ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
+ <string name="unknown_apps_dlg_text" product="tablet" msgid="7504186369474734767">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್‌‌ ಅನ್ನು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್‍‍ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
+ <string name="unknown_apps_dlg_text" product="tv" msgid="7195713985140602351">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟಿವಿ ಅನ್ನು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್‍‍ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
+ <string name="unknown_apps_dlg_text" product="default" msgid="133213135679009316">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್‍‍ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
<string name="unknown_apps_admin_dlg_text" msgid="1189146324736698462">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ."</string>
<string name="ok" msgid="3468756155452870475">"ಸರಿ"</string>
<string name="settings" msgid="6743583734099755409">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -98,7 +98,7 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಇನ್ನಷ್ಟು</item>
</plurals>
<string name="old_sdk_deny_warning" msgid="3872277112584842615">"ಈ ಅಪ್ಲಿಕೇಶನ್ Android ನ ಹಳೆಯ ಆವೃತ್ತಿಗೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿತ್ತು. ಅನುಮತಿ ನಿರಾಕರಿಸುವಿಕೆ ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಿಸಲ್ಪಟ್ಟಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರುವುದಕ್ಕೆ ಇದು ಕಾರಣವಾಗಬಹುದು."</string>
- <string name="default_permission_description" msgid="4992892207044156668">"ಅಜ್ಞಾತ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿ"</string>
+ <string name="default_permission_description" msgid="4992892207044156668">"ಅಪರಿಚಿತ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿ"</string>
<string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_1">%2$d</xliff:g> ನಲ್ಲಿ <xliff:g id="COUNT_0">%1$d</xliff:g> ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ"</string>
<string name="menu_show_system" msgid="6773743421743728921">"ಸಿಸ್ಟಂ ತೋರಿಸು"</string>
<string name="menu_hide_system" msgid="7595471742649432977">"ಸಿಸ್ಟಮ್ ಮರೆಮಾಡು"</string>
@@ -120,7 +120,7 @@
<string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಇದನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="APP_NAME_1">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?"</string>
<string name="permission_review_title_template_install" msgid="6535540493936469336">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ"</string>
<string name="permission_review_title_template_update" msgid="2548815248828051885">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ"</string>
- <string name="review_button_cancel" msgid="957906817733578877">"ರದ್ದುಮಾಡು"</string>
+ <string name="review_button_cancel" msgid="957906817733578877">"ರದ್ದುಮಾಡಿ"</string>
<string name="review_button_continue" msgid="4809162078179371370">"ಮುಂದುವರಿಸು"</string>
<string name="new_permissions_category" msgid="3213523410139204183">"ಹೊಸ ಅನುಮತಿಗಳು"</string>
<string name="current_permissions_category" msgid="998210994450606094">"ಪ್ರಸ್ತುತ ಅನುಮತಿಗಳು"</string>
diff --git a/res/values-ko-watch/strings.xml b/res/values-ko-watch/strings.xml
index 0bdafac3..6cce6f94 100644
--- a/res/values-ko-watch/strings.xml
+++ b/res/values-ko-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"시스템 앱 보기"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"변경할 수 없음"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"사용"</string>
- <string name="generic_disabled" msgid="576339310027394867">"사용 안함"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"예"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"취소"</string>
</resources>
diff --git a/res/values-ky-rKG-watch/strings.xml b/res/values-ky-rKG-watch/strings.xml
index 74a3b8b3..aadb7c49 100644
--- a/res/values-ky-rKG-watch/strings.xml
+++ b/res/values-ky-rKG-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Тутум колдонмолорун көрсөтүү"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өзгөртүүгө болбойт"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ИШТЕТИЛГЕН"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ӨЧҮРҮЛГӨН"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ооба"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Жокко чыгаруу"</string>
</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 12bef9f0..b23ee7de 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -104,7 +104,7 @@
<string name="menu_hide_system" msgid="7595471742649432977">"Тутумдагы процесстерди жашыруу"</string>
<string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксат"</string>
<string name="no_apps" msgid="1965493419005012569">"Эч бир колдонмо жок"</string>
- <string name="location_settings" msgid="1774875730854491297">"Жайгашкан жерди анктоо жөндлрү"</string>
+ <string name="location_settings" msgid="1774875730854491297">"Геолокация параметрлери"</string>
<string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> - бул түзмөктөгү жайгашкан жерди аныктоо кызматынын камсыздоочусу. Жайгашкан жерди көрүү мүмкүнчүлүгүн жайгашкан жерди аныктоо жөндөөлөрүнөн өзгөртсө болот."</string>
<string name="system_warning" msgid="7103819124542305179">"Эгер бул уруксатты четке каксаңыз, түзмөгүңүздүн негизги функциялары талаптагыдай иштебей калышы мүмкүн."</string>
<string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Саясат тарабынан күчүнө киргизилген"</string>
diff --git a/res/values-lo-rLA-watch/strings.xml b/res/values-lo-rLA-watch/strings.xml
index e362c39f..4fae329c 100644
--- a/res/values-lo-rLA-watch/strings.xml
+++ b/res/values-lo-rLA-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"ສະ​ແດງ​ແອັບ​ລະ​ບົບ"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ບໍ່​ສາ​ມາດ​ປ່ຽນ​ແປງ​ໄດ້"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ເປີດໃຊ້ງານ​ແລ້ວ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ປິດໃຊ້ງານແລ້ວ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ແມ່ນແລ້ວ"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ຍົກເລີກ"</string>
</resources>
diff --git a/res/values-lt-watch/strings.xml b/res/values-lt-watch/strings.xml
index c10c5e8f..85eebcf4 100644
--- a/res/values-lt-watch/strings.xml
+++ b/res/values-lt-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Rodyti sistemos programas"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Negalima pakeisti"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ĮGALINTAS"</string>
- <string name="generic_disabled" msgid="576339310027394867">"IŠJUNGTAS"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Taip"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Atšaukti"</string>
</resources>
diff --git a/res/values-lv-watch/strings.xml b/res/values-lv-watch/strings.xml
index aeb3c045..29aef48d 100644
--- a/res/values-lv-watch/strings.xml
+++ b/res/values-lv-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Rādīt sistēmas lietotnes"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nevar mainīt"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"IESPĒJOTS"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ATSPĒJOTS"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Jā"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Atcelt"</string>
</resources>
diff --git a/res/values-mk-rMK-watch/strings.xml b/res/values-mk-rMK-watch/strings.xml
index d23ce70d..5906f56d 100644
--- a/res/values-mk-rMK-watch/strings.xml
+++ b/res/values-mk-rMK-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Прикажи ги системските апликации"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не може да се смени"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ОВОЗМОЖЕНО"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ОНЕВОЗМОЖЕНО"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Откажи"</string>
</resources>
diff --git a/res/values-ml-rIN-watch/strings.xml b/res/values-ml-rIN-watch/strings.xml
index b5056315..13e38761 100644
--- a/res/values-ml-rIN-watch/strings.xml
+++ b/res/values-ml-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"സിസ്റ്റം ആപ്‌സ് കാണിക്കുക"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"മാറ്റാനാവില്ല"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"പ്രവർത്തനക്ഷമമാക്കി"</string>
- <string name="generic_disabled" msgid="576339310027394867">"പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"അതെ"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"റദ്ദാക്കുക"</string>
</resources>
diff --git a/res/values-mn-rMN-watch/strings.xml b/res/values-mn-rMN-watch/strings.xml
index 38c8c9a2..946cd297 100644
--- a/res/values-mn-rMN-watch/strings.xml
+++ b/res/values-mn-rMN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Системийн апп-ыг харуулах"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өөрчлөх боломжгүй"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ИДЭВХЖҮҮЛСЭН"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ИДЭВХГҮЙ БОЛГОСОН"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Тийм"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Цуцлах"</string>
</resources>
diff --git a/res/values-mr-rIN-watch/strings.xml b/res/values-mr-rIN-watch/strings.xml
index 55b6dd33..09ed3bf0 100644
--- a/res/values-mr-rIN-watch/strings.xml
+++ b/res/values-mr-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"सिस्टीम अॅप्स दर्शवा"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"बदलू शकत नाही"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"सक्षम केले"</string>
- <string name="generic_disabled" msgid="576339310027394867">"अक्षम केले"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"होय"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"रद्द करा"</string>
</resources>
diff --git a/res/values-ms-rMY-watch/strings.xml b/res/values-ms-rMY-watch/strings.xml
index b69b711d..dad185fa 100644
--- a/res/values-ms-rMY-watch/strings.xml
+++ b/res/values-ms-rMY-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Tunjukkan apl sistem"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Tidak dpt diubah"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"DIDAYAKAN"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DILUMPUHKAN"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ya"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Batal"</string>
</resources>
diff --git a/res/values-my-rMM-watch/strings.xml b/res/values-my-rMM-watch/strings.xml
index 1babba21..21283c03 100644
--- a/res/values-my-rMM-watch/strings.xml
+++ b/res/values-my-rMM-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"စနစ်အပ်ဖ်များ ပြသရန်"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ပြောင်းလဲ မရနိုင်ပါ"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ဖွင့်ထား"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ပိတ်ထား"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Yes"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"မလုပ်တော့"</string>
</resources>
diff --git a/res/values-nb-watch/strings.xml b/res/values-nb-watch/strings.xml
index d2c99f3f..332a8fe3 100644
--- a/res/values-nb-watch/strings.xml
+++ b/res/values-nb-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Vis systemapper"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan ikke endres"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"SLÅTT PÅ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"SLÅTT AV"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Avbryt"</string>
</resources>
diff --git a/res/values-ne-rNP-watch/strings.xml b/res/values-ne-rNP-watch/strings.xml
index 89e48dd4..ffcc2f7f 100644
--- a/res/values-ne-rNP-watch/strings.xml
+++ b/res/values-ne-rNP-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"प्रणाली अनुप्रयोगहरू देखाउनुहोस्"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"परिवर्तन गर्न सकिँदैन"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"सक्षम गरियो"</string>
- <string name="generic_disabled" msgid="576339310027394867">"असक्षम गरियो"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"हो"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"रद्द गर्नुहोस्"</string>
</resources>
diff --git a/res/values-nl-watch/strings.xml b/res/values-nl-watch/strings.xml
index 820875e3..2ed09952 100644
--- a/res/values-nl-watch/strings.xml
+++ b/res/values-nl-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Systeem-apps weergeven"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Niet aanpasbaar"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"INGESCHAKELD"</string>
- <string name="generic_disabled" msgid="576339310027394867">"UITGESCHAKELD"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Annuleren"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 069f97ec..c58c4e7b 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -25,12 +25,12 @@
<string name="unknown" msgid="4742479012767208045">"Onbekend"</string>
<string name="installing" msgid="8613631001631998372">"Installeren..."</string>
<string name="install_done" msgid="3682715442154357097">"App geïnstalleerd."</string>
- <string name="install_confirm_question" msgid="7295206719219043890">"Wilt u deze app installeren? Deze krijgt toegang tot:"</string>
- <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Wilt u deze app installeren? Hiervoor is geen speciale toegang vereist."</string>
- <string name="install_confirm_question_update" msgid="4624159567361487964">"Wilt u een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string>
- <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Wilt u een update van deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string>
- <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Wilt u een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string>
- <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Wilt u een update voor deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string>
+ <string name="install_confirm_question" msgid="7295206719219043890">"Wil je deze app installeren? Deze krijgt toegang tot:"</string>
+ <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Wil je deze app installeren? Hiervoor is geen speciale toegang vereist."</string>
+ <string name="install_confirm_question_update" msgid="4624159567361487964">"Wil je een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string>
+ <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Wil je een update van deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string>
+ <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Wil je een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string>
+ <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Wil je een update voor deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string>
<string name="install_failed" msgid="6579998651498970899">"App niet geïnstalleerd."</string>
<string name="install_failed_blocked" msgid="1606870930588770025">"De installatie van het pakket is geblokkeerd."</string>
<string name="install_failed_conflict" msgid="5349055145440204106">"Het pakket conflicteert met een bestaand pakket met dezelfde naam."</string>
@@ -60,9 +60,9 @@
<string name="uninstall_application_title" msgid="1860074100811653963">"App verwijderen"</string>
<string name="uninstall_update_title" msgid="4146940097553335390">"Update verwijderen"</string>
<string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> maakt deel uit van de volgende app:"</string>
- <string name="uninstall_application_text" msgid="6691975835951187030">"Wilt u deze app verwijderen?"</string>
- <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Wilt u deze app verwijderen voor "<b>"alle"</b>" gebruikers? Deze app en de gegevens ervan worden verwijderd voor "<b>"alle"</b>" gebruikers van het apparaat."</string>
- <string name="uninstall_application_text_user" msgid="8766882355635485733">"Wilt u deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
+ <string name="uninstall_application_text" msgid="6691975835951187030">"Wil je deze app verwijderen?"</string>
+ <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Wil je deze app verwijderen voor "<b>"alle"</b>" gebruikers? Deze app en de gegevens ervan worden verwijderd voor "<b>"alle"</b>" gebruikers van het apparaat."</string>
+ <string name="uninstall_application_text_user" msgid="8766882355635485733">"Wil je deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="1394549691152728409">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd."</string>
<string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd. Dit geldt voor alle gebruikers van het apparaat, dus ook voor gebruikers met een werkprofiel."</string>
<string name="uninstalling" msgid="5556217435895938250">"Verwijderen..."</string>
@@ -82,7 +82,7 @@
<string name="privacyPerms" msgid="1850527049572617">"Privacy"</string>
<string name="devicePerms" msgid="6733560207731294504">"Apparaattoegang"</string>
<string name="no_new_perms" msgid="6657813692169565975">"Voor deze update zijn geen nieuwe machtigingen vereist."</string>
- <string name="grant_confirm_question" msgid="4690289297029223742">"Wilt u de volgende machtigingen verlenen? Hiermee kan toegang worden verkregen tot:"</string>
+ <string name="grant_confirm_question" msgid="4690289297029223742">"Wil je de volgende machtigingen verlenen? Hiermee kan toegang worden verkregen tot:"</string>
<string name="grant_dialog_button_deny" msgid="2176510645406614340">"Weigeren"</string>
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Toch weigeren"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> van <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
diff --git a/res/values-round/dimens.xml b/res/values-notround-watch/dimens.xml
index bed41ce0..55d62488 100644
--- a/res/values-round/dimens.xml
+++ b/res/values-notround-watch/dimens.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- Copyright (C) 2016 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,14 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<resources>
- <!-- Dimensions for the Grant permissions Confirmation Dialog -->
- <dimen name="conf_diag_button_container_height">96dp</dimen>
- <dimen name="conf_diag_2button_margin_side">32dp</dimen>
- <dimen name="conf_diag_2button_margin_top">10dp</dimen>
- <!-- On round screens, the message can't be too close to the top or the corners will be
- clipped. -->
- <dimen name="conf_diag_min_space_above_message">26dp</dimen>
-
+ <!-- Dimens for dialog layouts -->
+ <dimen name="diag_button_size">44dp</dimen>
+ <dimen name="diag_preferred_padding">8dp</dimen>
+ <dimen name="diag_button_padding_horizontal">16dp</dimen>
+ <dimen name="diag_button_padding_bottom">8dp</dimen>
+ <dimen name="diag_icon_margin_top">8dp</dimen>
</resources>
diff --git a/res/values-pa-rIN-watch/strings.xml b/res/values-pa-rIN-watch/strings.xml
index d6cfe6c8..e0930212 100644
--- a/res/values-pa-rIN-watch/strings.xml
+++ b/res/values-pa-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"ਸਿਸਟਮ ਐਪਸ ਦਿਖਾਓ"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ਸਮਰਥਿਤ ਕੀਤਾ ਗਿਆ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ਅਸਮਰਥਿਤ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ਹਾਂ"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ਰੱਦ ਕਰੋ"</string>
</resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 7799286f..b7132ad3 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -115,7 +115,7 @@
<string name="screen_overlay_title" msgid="3021729846864038529">"ਸਕਰੀਨ ਓਵਰਲੇਅ ਲੱਭ ਗਿਆ"</string>
<string name="screen_overlay_message" msgid="2141944461571677331">"ਇਸ ਇਜ਼ਾਜਤ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣ ਲਈ; ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਸੈਟਿੰਗਜ਼ ਅਤੇ ਐਪਸ ਤੋਂ ਸਕ੍ਰੀਨ ਓਵਰਲੇਅ ਬੰਦ ਕਰਨਾ ਪਵੇਗਾ"</string>
<string name="screen_overlay_button" msgid="4344544843349937743">"ਸੈਟਿੰਗਜ਼ ਖੋਲ੍ਹੋ"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android ਵੀਅਰ"</string>
+ <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
<string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ਵੀਅਰ \'ਤੇ ਸਥਾਪਤ/ਅਣਸਥਾਪਤ ਕਾਰਵਾਈਆਂ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।"</string>
<string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਚੁੱਕਿਆ ਹੈ। ਕੀ <xliff:g id="APP_NAME_1">%1$s</xliff:g> ਨੂੰ ਅੱਗੇ ਦਿੱਤਿਆਂ ਗਿਆ \'ਤੇ ਪਹੁੰਚ ਦੀ ਮਨਜ਼ੂਰੀ ਦੇਣੀ ਹੈ?"</string>
<string name="permission_review_title_template_install" msgid="6535540493936469336">"ਇਹ ਚੁਣੋ ਕਿ <xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਕਿਸ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੀ ਮਨਜ਼ੂਰੀ ਦੇਣੀ ਹੈ"</string>
diff --git a/res/values-pl-watch/strings.xml b/res/values-pl-watch/strings.xml
index 2bf7d356..95c36875 100644
--- a/res/values-pl-watch/strings.xml
+++ b/res/values-pl-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Pokaż aplikacje systemowe"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nie można zmienić"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"WŁ."</string>
- <string name="generic_disabled" msgid="576339310027394867">"WYŁĄCZONE"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Tak"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Anuluj"</string>
</resources>
diff --git a/res/values-pt-rBR-watch/strings.xml b/res/values-pt-rBR-watch/strings.xml
index cb228f9d..8742c2db 100644
--- a/res/values-pt-rBR-watch/strings.xml
+++ b/res/values-pt-rBR-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar apps do sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Impossível alterar"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ATIVADA"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DESATIVADA"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sim"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
</resources>
diff --git a/res/values-pt-rPT-watch/strings.xml b/res/values-pt-rPT-watch/strings.xml
index e8d1bda4..e3c9e9f3 100644
--- a/res/values-pt-rPT-watch/strings.xml
+++ b/res/values-pt-rPT-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicações do sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Não pode ser alterado"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ATIVADO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DESATIVADO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sim"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
</resources>
diff --git a/res/values-pt-watch/strings.xml b/res/values-pt-watch/strings.xml
index cb228f9d..8742c2db 100644
--- a/res/values-pt-watch/strings.xml
+++ b/res/values-pt-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar apps do sistema"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Impossível alterar"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ATIVADA"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DESATIVADA"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Sim"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string>
</resources>
diff --git a/res/values-ro-watch/strings.xml b/res/values-ro-watch/strings.xml
index 5ff2575b..ea699f32 100644
--- a/res/values-ro-watch/strings.xml
+++ b/res/values-ro-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Afișează aplicațiile de sistem"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nu se poate modifica"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ACTIVATĂ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DEZACTIVATĂ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Anulați"</string>
</resources>
diff --git a/res/values-round-watch/dimens.xml b/res/values-round-watch/dimens.xml
new file mode 100644
index 00000000..fa364644
--- /dev/null
+++ b/res/values-round-watch/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- Dimens for dialog layouts -->
+ <dimen name="diag_button_size">48dp</dimen>
+ <dimen name="diag_preferred_padding">@dimen/screen_percentage_15</dimen>
+ <dimen name="diag_button_padding_horizontal">@dimen/screen_percentage_15</dimen>
+ <dimen name="diag_button_padding_bottom">@dimen/screen_percentage_12</dimen>
+ <dimen name="diag_icon_margin_top">@dimen/screen_percentage_10</dimen>
+</resources>
diff --git a/res/values-ru-watch/strings.xml b/res/values-ru-watch/strings.xml
index 309dc244..f58db32d 100644
--- a/res/values-ru-watch/strings.xml
+++ b/res/values-ru-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Показать системные приложения"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Нельзя изменить"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ВКЛЮЧЕНО"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ОТКЛЮЧЕНО"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Отмена"</string>
</resources>
diff --git a/res/values-si-rLK-watch/strings.xml b/res/values-si-rLK-watch/strings.xml
index b2559567..c5d9ae41 100644
--- a/res/values-si-rLK-watch/strings.xml
+++ b/res/values-si-rLK-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"පද්ධති යෙදුම් පෙන්වන්න"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"වෙනස් කළ නොහැකිය"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"සබලයි"</string>
- <string name="generic_disabled" msgid="576339310027394867">"අබලයි"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ඔව්"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"අවලංගු කර."</string>
</resources>
diff --git a/res/values-sk-watch/strings.xml b/res/values-sk-watch/strings.xml
index 9b17f9ba..dc3ce4fa 100644
--- a/res/values-sk-watch/strings.xml
+++ b/res/values-sk-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Zobraziť systémové aplikácie"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nedá sa zmeniť"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"POVOLENÉ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ZAKÁZANÉ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Áno"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Zrušiť"</string>
</resources>
diff --git a/res/values-sl-watch/strings.xml b/res/values-sl-watch/strings.xml
index cd71f48c..906a5519 100644
--- a/res/values-sl-watch/strings.xml
+++ b/res/values-sl-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaz sistemskih aplikacij"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ni mogoče sprem."</string>
- <string name="generic_enabled" msgid="5221039415230005888">"OMOGOČENO"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ONEMOGOČENO"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Da"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Prekliči"</string>
</resources>
diff --git a/res/values-sq-rAL-watch/strings.xml b/res/values-sq-rAL-watch/strings.xml
index 213ce5a4..772bb7aa 100644
--- a/res/values-sq-rAL-watch/strings.xml
+++ b/res/values-sq-rAL-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Shfaq aplikacionet e sistemit"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nuk mund të ndryshohet"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"AKTIVIZUAR"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ÇAKTIVIZUAR"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Po"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Anulo"</string>
</resources>
diff --git a/res/values-sr-watch/strings.xml b/res/values-sr-watch/strings.xml
index e51b35a4..7e15b013 100644
--- a/res/values-sr-watch/strings.xml
+++ b/res/values-sr-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Прикажи системске апликације"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не може да се промени"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ОМОГУЋЕНО"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ОНЕМОГУЋЕНО"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Да"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Откажи"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 895b4172..5c7c5fab 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -86,7 +86,7 @@
<string name="grant_dialog_button_deny" msgid="2176510645406614340">"Одбаци"</string>
<string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ипак одбиј"</string>
<string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. од <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
- <string name="permission_warning_template" msgid="7332275268559121742">"Желите ли да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; обави следећу радњу: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
+ <string name="permission_warning_template" msgid="7332275268559121742">"Желите ли да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="grant_dialog_button_allow" msgid="4616529495342337095">"Дозволи"</string>
<string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Апликације"</string>
<string name="app_permissions" msgid="3146758905824597178">"Дозволе за апликације"</string>
diff --git a/res/values-sv-watch/strings.xml b/res/values-sv-watch/strings.xml
index 66465f4d..f20ec21b 100644
--- a/res/values-sv-watch/strings.xml
+++ b/res/values-sv-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Visa systemappar"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan inte ändras"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"AKTIVERAD"</string>
- <string name="generic_disabled" msgid="576339310027394867">"INAKTIVERAD"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ja"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Avbryt"</string>
</resources>
diff --git a/res/values-sw-watch/strings.xml b/res/values-sw-watch/strings.xml
index b4adaca4..accac4ed 100644
--- a/res/values-sw-watch/strings.xml
+++ b/res/values-sw-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Onyesha programu za mfumo"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Haiwezi kubadilishwa"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"IMEWASHWA"</string>
- <string name="generic_disabled" msgid="576339310027394867">"IMEZIMWA"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ndiyo"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Ghairi"</string>
</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw180dp-notround-watch/dimens.xml
index 46249d50..84072a28 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw180dp-notround-watch/dimens.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- Copyright (C) 2016 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,9 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/container"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+ <!-- Dimens for dialog layouts -->
+ <dimen name="diag_button_size">48dp</dimen>
+</resources>
diff --git a/res/values-sw210dp-round-watch/dimens.xml b/res/values-sw210dp-round-watch/dimens.xml
new file mode 100644
index 00000000..d896138b
--- /dev/null
+++ b/res/values-sw210dp-round-watch/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- Dimens for dialog layouts -->
+ <dimen name="diag_button_size">54dp</dimen>
+</resources>
diff --git a/res/values-ta-rIN-watch/strings.xml b/res/values-ta-rIN-watch/strings.xml
index 54c61e7c..23dab29d 100644
--- a/res/values-ta-rIN-watch/strings.xml
+++ b/res/values-ta-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"முறைமைப் பயன்பாடுகளைக் காட்டு"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"மாற்ற முடியாது"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"இயக்கப்பட்டது"</string>
- <string name="generic_disabled" msgid="576339310027394867">"முடக்கப்பட்டது"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ஆம்"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ரத்துசெய்"</string>
</resources>
diff --git a/res/values-te-rIN-watch/strings.xml b/res/values-te-rIN-watch/strings.xml
index e13ba44e..d97e9707 100644
--- a/res/values-te-rIN-watch/strings.xml
+++ b/res/values-te-rIN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"సిస్టమ్ అనువర్తనాలను చూపు"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"మార్చడం సాధ్యపడదు"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ప్రారంభించబడింది"</string>
- <string name="generic_disabled" msgid="576339310027394867">"నిలిపివేయబడింది"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"అవును"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"రద్దు చేయి"</string>
</resources>
diff --git a/res/values-th-watch/strings.xml b/res/values-th-watch/strings.xml
index ba86f12c..05af1e84 100644
--- a/res/values-th-watch/strings.xml
+++ b/res/values-th-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"แสดงแอประบบ"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ไม่สามารถเปลี่ยน"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"เปิดใช้อยู่"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ปิดใช้อยู่"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ใช่"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"ยกเลิก"</string>
</resources>
diff --git a/res/values-tl-watch/strings.xml b/res/values-tl-watch/strings.xml
index 8885a84f..85974514 100644
--- a/res/values-tl-watch/strings.xml
+++ b/res/values-tl-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Ipakita ang mga app ng system"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Hindi mababago"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"NAKA-ENABLE"</string>
- <string name="generic_disabled" msgid="576339310027394867">"NAKA-DISABLE"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Oo"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Kanselahin"</string>
</resources>
diff --git a/res/values-tr-watch/strings.xml b/res/values-tr-watch/strings.xml
index c7eddced..fbc5b930 100644
--- a/res/values-tr-watch/strings.xml
+++ b/res/values-tr-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Sistem uygulamalarını göster"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Değiştirilemez"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ETKİN"</string>
- <string name="generic_disabled" msgid="576339310027394867">"DEVRE DIŞI"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Evet"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"İptal"</string>
</resources>
diff --git a/res/values-uk-watch/strings.xml b/res/values-uk-watch/strings.xml
index aac71cbe..e539d836 100644
--- a/res/values-uk-watch/strings.xml
+++ b/res/values-uk-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> з <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Показати системні додатки"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не можна змінити"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"УВІМКНЕНО"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ВИМКНЕНО"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Так"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Скасувати"</string>
</resources>
diff --git a/res/values-ur-rPK-watch/strings.xml b/res/values-ur-rPK-watch/strings.xml
index f3746d50..197ac849 100644
--- a/res/values-ur-rPK-watch/strings.xml
+++ b/res/values-ur-rPK-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"سسٹم ایپس دکھائیں"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ناقابل تبدیل"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"فعال"</string>
- <string name="generic_disabled" msgid="576339310027394867">"غیر فعال"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"ہاں"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"منسوخ کریں"</string>
</resources>
diff --git a/res/values-uz-rUZ-watch/strings.xml b/res/values-uz-rUZ-watch/strings.xml
index dca320a9..83f8da7f 100644
--- a/res/values-uz-rUZ-watch/strings.xml
+++ b/res/values-uz-rUZ-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Tizim ilovalarini ko‘rsatish"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"O‘zgartirilmaydi"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"YONIQ"</string>
- <string name="generic_disabled" msgid="576339310027394867">"O‘CHIQ"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Ha"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Bekor qilish"</string>
</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 081a3d35..75a08eea 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -112,7 +112,7 @@
<string name="all_permissions" msgid="5156669007784613042">"Barcha ruxsatnomalar"</string>
<string name="other_permissions" msgid="2016192512386091933">"Ilovaning boshqa imkoniyatlari"</string>
<string name="permission_request_title" msgid="1204446718549121199">"Ruxsatnoma so‘rovi"</string>
- <string name="screen_overlay_title" msgid="3021729846864038529">"Ekran ustidan ochiladigan ilova aniqlandi"</string>
+ <string name="screen_overlay_title" msgid="3021729846864038529">"Boshqa oynalar ustidan ochiladigan ilova aniqlandi"</string>
<string name="screen_overlay_message" msgid="2141944461571677331">"Bu ruxsatnoma parametrini o‘zgartirish uchun avval Sozlamalar &gt; Ilovalar bo‘limidan ekran ustidan ochilish funksiyasini o‘chirib qo‘ying"</string>
<string name="screen_overlay_button" msgid="4344544843349937743">"Sozlamalarni ochish"</string>
<string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string>
diff --git a/res/values-vi-watch/strings.xml b/res/values-vi-watch/strings.xml
index c342949e..d63ef286 100644
--- a/res/values-vi-watch/strings.xml
+++ b/res/values-vi-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Hiển thị ứng dụng hệ thống"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ko thể thay đổi"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"ĐÃ BẬT"</string>
- <string name="generic_disabled" msgid="576339310027394867">"ĐÃ TẮT"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Có"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Hủy"</string>
</resources>
diff --git a/res/values-w192dp-watch/dimens_percent.xml b/res/values-w192dp-watch/dimens_percent.xml
new file mode 100644
index 00000000..b5beca32
--- /dev/null
+++ b/res/values-w192dp-watch/dimens_percent.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="screen_percentage_05">9.6dp</dimen>
+ <dimen name="screen_percentage_10">19.2dp</dimen>
+ <dimen name="screen_percentage_12">23.04dp</dimen>
+ <dimen name="screen_percentage_15">28.8dp</dimen>
+</resources>
diff --git a/res/values-w205dp-watch/dimens_percent.xml b/res/values-w205dp-watch/dimens_percent.xml
new file mode 100644
index 00000000..302d23ec
--- /dev/null
+++ b/res/values-w205dp-watch/dimens_percent.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="screen_percentage_05">10.25dp</dimen>
+ <dimen name="screen_percentage_10">20.5dp</dimen>
+ <dimen name="screen_percentage_12">24.6dp</dimen>
+ <dimen name="screen_percentage_15">30.75dp</dimen>
+</resources>
diff --git a/res/values-w225dp-watch/dimens_percent.xml b/res/values-w225dp-watch/dimens_percent.xml
new file mode 100644
index 00000000..937c5d00
--- /dev/null
+++ b/res/values-w225dp-watch/dimens_percent.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="screen_percentage_05">11.25dp</dimen>
+ <dimen name="screen_percentage_10">22.5dp</dimen>
+ <dimen name="screen_percentage_12">27dp</dimen>
+ <dimen name="screen_percentage_15">33.75dp</dimen>
+</resources>
diff --git a/res/values-w228dp-watch/dimens_percent.xml b/res/values-w228dp-watch/dimens_percent.xml
new file mode 100644
index 00000000..b2ad3343
--- /dev/null
+++ b/res/values-w228dp-watch/dimens_percent.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="screen_percentage_05">11.4dp</dimen>
+ <dimen name="screen_percentage_10">22.8dp</dimen>
+ <dimen name="screen_percentage_12">27.36dp</dimen>
+ <dimen name="screen_percentage_15">34.2dp</dimen>
+</resources>
diff --git a/res/values-w240dp-watch/dimens_percent.xml b/res/values-w240dp-watch/dimens_percent.xml
new file mode 100644
index 00000000..ebc8c752
--- /dev/null
+++ b/res/values-w240dp-watch/dimens_percent.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="screen_percentage_05">12dp</dimen>
+ <dimen name="screen_percentage_10">24dp</dimen>
+ <dimen name="screen_percentage_12">28.8dp</dimen>
+ <dimen name="screen_percentage_15">36dp</dimen>
+</resources>
diff --git a/res/values-watch/colors.xml b/res/values-watch/colors.xml
index b81d6e3b..81d0459c 100644
--- a/res/values-watch/colors.xml
+++ b/res/values-watch/colors.xml
@@ -15,22 +15,6 @@
-->
<resources>
- <color name="grant_permissions_app_color">@color/grant_permissions_white_text_alpha_100</color>
- <color name="grant_permissions_progress_color">@color/grant_permissions_white_text_alpha_100</color>
- <color name="grant_permissions_title_color">@color/grant_permissions_white_text_alpha_70</color>
-
- <color name="grant_permissions_white_text_alpha_100">@color/off_white</color>
- <color name="grant_permissions_white_text_alpha_70">#b2eeeeee</color>
-
- <color name="permissions_settings_item_color">#FFFFFFFF</color>
-
- <color name="off_white">#ffeeeeee</color>
-
- <color name="primary_text_light">#424242</color>
-
<!-- Copied from wearable support -->
<color name="circular_button_disabled">#757575</color>
-
- <!-- Copied from wearable Clockwork Settings -->
- <color name="cw_dark_gray">#424242</color>
</resources>
diff --git a/res/values-watch/dimens.xml b/res/values-watch/dimens.xml
deleted file mode 100644
index 96f32148..00000000
--- a/res/values-watch/dimens.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<resources>
- <dimen name="grant_permissions_app_icon_size">20dp</dimen>
- <dimen name="grant_permissions_app_icon_margin_top">6dp</dimen>
-
- <dimen name="grant_permissions_app_breadcrumb_margin_top">6dp</dimen>
- <dimen name="grant_permissions_title_margin_top">6dp</dimen>
- <dimen name="grant_permissions_message_side_padding">32dp</dimen>
-
- <dimen name="action_dialog_z">16dp</dimen>
-
- <!-- Dimensions for the Grant permissions Confirmation Dialog -->
- <dimen name="conf_diag_floating_height">16dp</dimen>
- <dimen name="conf_diag_button_container_top_margin">6dp</dimen>
- <dimen name="conf_diag_button_container_height">72dp</dimen>
- <dimen name="conf_diag_2button_margin_side">16dp</dimen>
- <dimen name="conf_diag_2button_margin_top">9dp</dimen>
- <dimen name="conf_diag_3button_padding_side">32dp</dimen>
- <dimen name="conf_diag_3button_padding_bottom">22dp</dimen>
- <dimen name="conf_diag_content_padding_top">6dp</dimen>
- <!-- On square screens, the message can be at the top of the screen. -->
- <dimen name="conf_diag_min_space_above_message">0dp</dimen>
-
-
- <!-- START: Ported values -->
- <item name="default_settings_circle_radius_percent" format="fraction" type="dimen">40%</item>
- <item name="selected_settings_circle_radius_percent" format="fraction" type="dimen">50%</item>
- <dimen name="round_content_padding_left">40dp</dimen>
- <dimen name="round_content_padding_right">24dp</dimen>
- <dimen name="content_padding_left">12dp</dimen>
- <dimen name="settings_wearable_list_view_vertical_padding_round">14dp</dimen>
- <dimen name="setting_header_extra_line_height">16dp</dimen>
- <dimen name="setting_long_header_text_size">20dp</dimen>
- <dimen name="settings_header_base_height">50dp</dimen>
- <dimen name="settings_header_top_margin">14dp</dimen>
- <dimen name="settings_header_top_margin_circular">18dp</dimen>
- <dimen name="settings_header_top_margin_multiline">6dp</dimen>
- <dimen name="settings_header_top_margin_circular_multiline">16dp</dimen>
- <dimen name="setting_short_header_text_size">24dp</dimen>
- <dimen name="settings_text_margin_left">10dp</dimen>
- <!-- END: Ported values -->
-</resources>
diff --git a/res/values-watch/strings.xml b/res/values-watch/strings.xml
index 82fe4ae9..f940eae6 100644
--- a/res/values-watch/strings.xml
+++ b/res/values-watch/strings.xml
@@ -30,8 +30,9 @@
<!-- Summary of a permission switch when it's enforced by policy [CHAR LIMIT=17] -->
<string name="permission_summary_enforced_by_policy">Can\'t be changed</string>
- <!-- Generic text to indicate that a setting is enabled. Should be in all caps. [CHAR LIMIT=40] -->
- <string name="generic_enabled">ENABLED</string>
- <!-- Generic text to indicate that a setting is disabled. Should be in all caps. [CHAR LIMIT=40] -->
- <string name="generic_disabled">DISABLED</string>
+ <!-- Generic text to indicate a yes. [CHAR LIMIT=10] -->
+ <string name="generic_yes">Yes</string>
+
+ <!-- Generic text to indicate Cancel. [CHAR LIMIT=10] -->
+ <string name="generic_cancel">Cancel</string>
</resources>
diff --git a/res/values-watch/styles.xml b/res/values-watch/styles.xml
index 01ab90eb..18fce93e 100644
--- a/res/values-watch/styles.xml
+++ b/res/values-watch/styles.xml
@@ -17,33 +17,6 @@
<resources>
<style name="Theme.DialogWhenLarge" parent="@android:style/Theme.DeviceDefault.NoActionBar"/>
- <!-- START: Ported values -->
- <style name="TextAppearance.Wearable.Small" parent="android:TextAppearance.Medium">
- <item name="android:textSize">16sp</item>
- <item name="android:textColor">@color/primary_text_light</item>
- </style>
-
- <style name="TextView.Small" parent="@android:style/Widget.Holo.Light">
- <item name="android:fontFamily">sans-serif-condensed</item>
- <item name="android:textAppearance">@style/TextAppearance.Wearable.Small</item>
- </style>
-
- <style name="TextView.Small.Light">
- <item name="android:fontFamily">sans-serif-condensed-light</item>
- <item name="android:textAppearance">@style/TextAppearance.Wearable.Small</item>
- </style>
-
- <style name="TextAppearance.Settings.Label" parent="android:TextAppearance.Medium">
- <item name="android:textSize">14sp</item>
- <item name="android:textColor">#FFFFFFFF</item>
- </style>
-
- <style name="TextAppearance.Settings.Label.Large">
- <item name="android:textSize">16sp</item>
- </style>
-
- <style name="TextView.Settings.Label" parent="TextView.Small.Light">
- <item name="android:textAppearance">@style/TextAppearance.Settings.Label</item>
- </style>
- <!-- END: Ported values -->
+ <style name="BreadcrumbText" parent="@android:style/TextAppearance.Material.Body2"/>
+ <style name="TitleText" parent="@android:style/TextAppearance.Material.Subhead"/>
</resources>
diff --git a/res/values-watch/themes.xml b/res/values-watch/themes.xml
index dea42907..a8186dd9 100644
--- a/res/values-watch/themes.xml
+++ b/res/values-watch/themes.xml
@@ -16,49 +16,9 @@
-->
<resources>
- <style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar">
- <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Permissions</item>
- <item name="android:windowBackground">@color/cw_dark_gray</item>
- <item name="android:colorBackground">@color/cw_dark_gray</item>
- </style>
-
- <style name="GrantPermissions" parent="Settings">
- <item name="android:windowIsFloating">true</item>
- <item name="android:windowElevation">@dimen/action_dialog_z</item>
- <item name="android:windowSwipeToDismiss">false</item>
- </style>
-
- <style name="GrantPermissions.BreadcrumbText">
- <item name="android:fontFamily">sans-serif-condensed</item>
- <item name="android:textSize">16sp</item>
- <item name="android:textColor">@color/grant_permissions_progress_color</item>
- </style>
+ <style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar" />
- <style name="GrantPermissions.TitleText">
- <item name="android:fontFamily">sans-serif-condensed-light</item>
- <item name="android:textSize">18sp</item>
- <item name="android:textColor">@color/grant_permissions_title_color</item>
- <item name="android:lineSpacingMultiplier">1.221</item>
- </style>
-
- <!-- Copied from WearableSupport lib -->
- <style name="TextAppearance.WearDiag" parent="android:TextAppearance.Medium">
- <item name="android:textColor">#FFFFFF</item>
- <item name="android:textSize">16sp</item>
- </style>
- <style name="TextAppearance.WearDiag.Button">
- <item name="android:textSize">16sp</item>
- </style>
- <style name="Widget.WearDiag.Button" parent="@android:style/Widget.DeviceDefault.Button">
- <item name="android:fontFamily">sans-serif-condensed-light</item>
- <item name="android:gravity">center_vertical|left</item>
- <item name="android:textAppearance">@style/TextAppearance.WearDiag.Button</item>
- <item name="android:background">@android:color/transparent</item>
- <item name="android:minLines">1</item>
- <item name="android:maxLines">3</item>
- <item name="android:ellipsize">marquee</item>
- <item name="android:layout_height">60dp</item>
- <item name="android:layout_width">wrap_content</item>
- <item name="android:drawablePadding">12dp</item>
+ <style name="GrantPermissions" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+ <item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>
diff --git a/res/values-zh-rCN-watch/strings.xml b/res/values-zh-rCN-watch/strings.xml
index d6e64c34..25256194 100644
--- a/res/values-zh-rCN-watch/strings.xml
+++ b/res/values-zh-rCN-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"显示系统应用"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"无法更改"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"已启用"</string>
- <string name="generic_disabled" msgid="576339310027394867">"已停用"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"是"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"取消"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 82b8569d..f6aa8d35 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -32,8 +32,8 @@
<string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"是否要为这一现有应用安装更新?您现有的数据不会丢失,且安装过程无需任何特殊权限。"</string>
<string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"是否要为这一内置应用安装更新?您现有的数据不会丢失,且安装过程无需任何特殊权限。"</string>
<string name="install_failed" msgid="6579998651498970899">"应用未安装。"</string>
- <string name="install_failed_blocked" msgid="1606870930588770025">"系统禁止安装该文件包。"</string>
- <string name="install_failed_conflict" msgid="5349055145440204106">"该文件包与具有同一名称的现有文件包存在冲突。"</string>
+ <string name="install_failed_blocked" msgid="1606870930588770025">"系统禁止安装该软件包。"</string>
+ <string name="install_failed_conflict" msgid="5349055145440204106">"该软件包与具有同一名称的现有软件包存在冲突。"</string>
<string name="install_failed_incompatible" product="tablet" msgid="119054044615117271">"此应用与您的平板电脑不兼容。"</string>
<string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"此应用与您的电视不兼容。"</string>
<string name="install_failed_incompatible" product="default" msgid="6677057915876853610">"此应用与您的手机不兼容。"</string>
diff --git a/res/values-zh-rHK-watch/strings.xml b/res/values-zh-rHK-watch/strings.xml
index 9c21b2ab..112cccdd 100644
--- a/res/values-zh-rHK-watch/strings.xml
+++ b/res/values-zh-rHK-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"顯示系統應用程式"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"不可變更"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"已啟用"</string>
- <string name="generic_disabled" msgid="576339310027394867">"已停用"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"是"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"取消"</string>
</resources>
diff --git a/res/values-zh-rTW-watch/strings.xml b/res/values-zh-rTW-watch/strings.xml
index 4c9245d1..edaf7ead 100644
--- a/res/values-zh-rTW-watch/strings.xml
+++ b/res/values-zh-rTW-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"顯示系統應用程式"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"無法變更"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"已啟用"</string>
- <string name="generic_disabled" msgid="576339310027394867">"已停用"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"是"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"取消"</string>
</resources>
diff --git a/res/values-zu-watch/strings.xml b/res/values-zu-watch/strings.xml
index 82f45df9..38fe1c8e 100644
--- a/res/values-zu-watch/strings.xml
+++ b/res/values-zu-watch/strings.xml
@@ -20,6 +20,6 @@
<string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="7042886929865431207">"Bonisa izinhlelo zokusebenza zesistimu"</string>
<string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Akukwazi ukushintshwa"</string>
- <string name="generic_enabled" msgid="5221039415230005888">"KUNIKWE AMANDLA"</string>
- <string name="generic_disabled" msgid="576339310027394867">"KUKHUTSHAZIWE"</string>
+ <string name="generic_yes" msgid="3394094077553763689">"Yebo"</string>
+ <string name="generic_cancel" msgid="6384078447202012984">"Khansela"</string>
</resources>
diff --git a/res/xml-watch/watch_permissions.xml b/res/xml-watch/watch_permissions.xml
new file mode 100644
index 00000000..8ec8d196
--- /dev/null
+++ b/res/xml-watch/watch_permissions.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/app_permissions"
+ android:orderingFromXml="true">
+ <Preference
+ android:key="no_permissions"
+ android:title="@string/no_permissions" />
+</PreferenceScreen>
diff --git a/src/android/support/wearable/view/AcceptDenyDialog.java b/src/android/support/wearable/view/AcceptDenyDialog.java
new file mode 100644
index 00000000..8961ee71
--- /dev/null
+++ b/src/android/support/wearable/view/AcceptDenyDialog.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package android.support.wearable.view;
+
+import android.annotation.TargetApi;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.annotation.StyleRes;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.Space;
+import android.widget.TextView;
+
+import com.android.packageinstaller.R;
+
+/**
+ * A dialog to display a title, a message, and/or an icon with a positive and a negative button.
+ *
+ * <p>The buttons are hidden away unless there is a listener attached to the button. Since there's
+ * no click listener attached by default, the buttons are hidden be default.
+ */
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+public class AcceptDenyDialog extends Dialog {
+ /** Icon at the top of the dialog. */
+ protected ImageView mIcon;
+ /** Title at the top of the dialog. */
+ protected TextView mTitle;
+ /** Message content of the dialog. */
+ protected TextView mMessage;
+ /** Panel containing the buttons. */
+ protected View mButtonPanel;
+ /** Positive button in the button panel. */
+ protected ImageButton mPositiveButton;
+ /** Negative button in the button panel. */
+ protected ImageButton mNegativeButton;
+ /**
+ * Click listener for the positive button. Positive button should hide if this is <code>null
+ * </code>.
+ */
+ protected DialogInterface.OnClickListener mPositiveButtonListener;
+ /**
+ * Click listener for the negative button. Negative button should hide if this is <code>null
+ * </code>.
+ */
+ protected DialogInterface.OnClickListener mNegativeButtonListener;
+ /** Spacer between the positive and negative button. Hidden if one button is hidden. */
+ protected View mSpacer;
+
+ private final View.OnClickListener mButtonHandler = (v) -> {
+ if (v == mPositiveButton && mPositiveButtonListener != null) {
+ mPositiveButtonListener.onClick(this, DialogInterface.BUTTON_POSITIVE);
+ dismiss();
+ } else if (v == mNegativeButton && mNegativeButtonListener != null) {
+ mNegativeButtonListener.onClick(this, DialogInterface.BUTTON_NEGATIVE);
+ dismiss();
+ }
+ };
+
+ public AcceptDenyDialog(Context context) {
+ this(context, 0 /* use default context theme */);
+ }
+
+ public AcceptDenyDialog(Context context, @StyleRes int themeResId) {
+ super(context, themeResId);
+
+ setContentView(R.layout.accept_deny_dialog);
+
+ mTitle = (TextView) findViewById(android.R.id.title);
+ mMessage = (TextView) findViewById(android.R.id.message);
+ mIcon = (ImageView) findViewById(android.R.id.icon);
+ mPositiveButton = (ImageButton) findViewById(android.R.id.button1);
+ mPositiveButton.setOnClickListener(mButtonHandler);
+ mNegativeButton = (ImageButton) findViewById(android.R.id.button2);
+ mNegativeButton.setOnClickListener(mButtonHandler);
+ mSpacer = (Space) findViewById(R.id.spacer);
+ mButtonPanel = findViewById(R.id.buttonPanel);
+ }
+
+ public ImageButton getButton(int whichButton) {
+ switch (whichButton) {
+ case DialogInterface.BUTTON_POSITIVE:
+ return mPositiveButton;
+ case DialogInterface.BUTTON_NEGATIVE:
+ return mNegativeButton;
+ default:
+ return null;
+ }
+ }
+
+ public void setIcon(Drawable icon) {
+ mIcon.setVisibility(icon == null ? View.GONE : View.VISIBLE);
+ mIcon.setImageDrawable(icon);
+ }
+
+ /**
+ * @param resId the resourceId of the drawable to use as the icon or 0 if you don't want an icon.
+ */
+ public void setIcon(int resId) {
+ mIcon.setVisibility(resId == 0 ? View.GONE : View.VISIBLE);
+ mIcon.setImageResource(resId);
+ }
+
+ /** @param message the content message text of the dialog. */
+ public void setMessage(CharSequence message) {
+ mMessage.setText(message);
+ mMessage.setVisibility(message == null ? View.GONE : View.VISIBLE);
+ }
+
+ /** @param title the title text of the dialog. */
+ @Override
+ public void setTitle(CharSequence title) {
+ mTitle.setText(title);
+ }
+
+ /**
+ * Sets a click listener for a button.
+ *
+ * <p>Will hide button bar if all buttons are hidden (i.e. their click listeners are <code>null
+ * </code>).
+ *
+ * @param whichButton {@link DialogInterface.BUTTON_POSITIVE} or {@link
+ * DialogInterface.BUTTON_NEGATIVE}
+ * @param listener the listener to set for the button. Hide button if <code>null</code>.
+ */
+ public void setButton(int whichButton, DialogInterface.OnClickListener listener) {
+ switch (whichButton) {
+ case DialogInterface.BUTTON_POSITIVE:
+ mPositiveButtonListener = listener;
+ break;
+ case DialogInterface.BUTTON_NEGATIVE:
+ mNegativeButtonListener = listener;
+ break;
+ default:
+ return;
+ }
+
+ mSpacer.setVisibility(mPositiveButtonListener == null || mNegativeButtonListener == null
+ ? View.GONE : View.INVISIBLE);
+ mPositiveButton.setVisibility(
+ mPositiveButtonListener == null ? View.GONE : View.VISIBLE);
+ mNegativeButton.setVisibility(
+ mNegativeButtonListener == null ? View.GONE : View.VISIBLE);
+ mButtonPanel.setVisibility(
+ mPositiveButtonListener == null && mNegativeButtonListener == null
+ ? View.GONE : View.VISIBLE);
+ }
+
+ /**
+ * Convenience method for <code>setButton(DialogInterface.BUTTON_POSITIVE, listener)</code>.
+ *
+ * @param listener the listener for the positive button.
+ */
+ public void setPositiveButton(DialogInterface.OnClickListener listener) {
+ setButton(DialogInterface.BUTTON_POSITIVE, listener);
+ }
+
+ /**
+ * Convenience method for <code>setButton(DialogInterface.BUTTON_NEGATIVE, listener)</code>.
+ *
+ * @param listener the listener for the positive button.
+ */
+ public void setNegativeButton(DialogInterface.OnClickListener listener) {
+ setButton(DialogInterface.BUTTON_NEGATIVE, listener);
+ }
+}
diff --git a/src/android/support/wearable/view/WearableDialogHelper.java b/src/android/support/wearable/view/WearableDialogHelper.java
new file mode 100644
index 00000000..0bdc1cc9
--- /dev/null
+++ b/src/android/support/wearable/view/WearableDialogHelper.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package android.support.wearable.view;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+import android.widget.Button;
+
+/**
+ * Helper to add icons to AlertDialog buttons.AlertDialog buttons.
+ */
+public class WearableDialogHelper {
+ private static final String TAG = "WearableDialogHelper";
+
+ private int mPositiveIconId;
+ private Drawable mPositiveIcon;
+
+ private int mNeutralIconId;
+ private Drawable mNeutralIcon;
+
+ private int mNegativeIconId;
+ private Drawable mNegativeIcon;
+
+ @VisibleForTesting /* package */ Resources mResources;
+ @VisibleForTesting /* package */ Resources.Theme mTheme;
+
+ /**
+ * Convenience constructor, equivalent to {@code new WearableDialogHelper(context.getResources(),
+ * context.getTheme())}.
+ */
+ public WearableDialogHelper(@NonNull Context context) {
+ this(context.getResources(), context.getTheme());
+ }
+
+ /**
+ * @param resources the Resources used to obtain Drawables from resource IDs.
+ * @param theme the Theme used to properly obtain Drawables from resource IDs.
+ */
+ public WearableDialogHelper(@NonNull Resources resources, @NonNull Resources.Theme theme) {
+ mResources = resources;
+ mTheme = theme;
+ }
+
+ @Nullable
+ public Drawable getPositiveIcon() {
+ return resolveDrawable(mPositiveIcon, mPositiveIconId);
+ }
+
+ @Nullable
+ public Drawable getNegativeIcon() {
+ return resolveDrawable(mNegativeIcon, mNegativeIconId);
+ }
+
+ @Nullable
+ public Drawable getNeutralIcon() {
+ return resolveDrawable(mNeutralIcon, mNeutralIconId);
+ }
+
+ @NonNull
+ public WearableDialogHelper setPositiveIcon(@DrawableRes int resId) {
+ mPositiveIconId = resId;
+ mPositiveIcon = null;
+ return this;
+ }
+
+ @NonNull
+ public WearableDialogHelper setPositiveIcon(@Nullable Drawable icon) {
+ mPositiveIcon = icon;
+ mPositiveIconId = 0;
+ return this;
+ }
+
+ @NonNull
+ public WearableDialogHelper setNegativeIcon(@DrawableRes int resId) {
+ mNegativeIconId = resId;
+ mNegativeIcon = null;
+ return this;
+ }
+
+ @NonNull
+ public WearableDialogHelper setNegativeIcon(@Nullable Drawable icon) {
+ mNegativeIcon = icon;
+ mNegativeIconId = 0;
+ return this;
+ }
+
+ @NonNull
+ public WearableDialogHelper setNeutralIcon(@DrawableRes int resId) {
+ mNeutralIconId = resId;
+ mNeutralIcon = null;
+ return this;
+ }
+
+ @NonNull
+ public WearableDialogHelper setNeutralIcon(@Nullable Drawable icon) {
+ mNeutralIcon = icon;
+ mNeutralIconId = 0;
+ return this;
+ }
+
+ /**
+ * Applies the button icons setup in the helper to the buttons in the dialog.
+ *
+ * <p>Note that this should be called after {@code AlertDialog.create()}, NOT {@code
+ * AlertDialog.Builder.create()}. Calling {@code AlertDialog.Builder.show()} would also accomplish
+ * the same thing.
+ *
+ * @param dialog the AlertDialog to style with the helper.
+ */
+ public void apply(@NonNull AlertDialog dialog) {
+ applyButton(dialog.getButton(DialogInterface.BUTTON_POSITIVE), getPositiveIcon());
+ applyButton(dialog.getButton(DialogInterface.BUTTON_NEGATIVE), getNegativeIcon());
+ applyButton(dialog.getButton(DialogInterface.BUTTON_NEUTRAL), getNeutralIcon());
+ }
+
+ /** Applies the specified drawable to the button. */
+ @VisibleForTesting
+ /* package */ void applyButton(@Nullable Button button, @Nullable Drawable drawable) {
+ if (button != null) {
+ button.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null);
+ button.setAllCaps(false);
+ } else if (drawable != null) {
+ Log.w(TAG, "non-null drawable used with missing button, did you call AlertDialog.create()?");
+ }
+ }
+
+ /** Obtain a drawable between a drawable and a resource ID. */
+ @VisibleForTesting
+ /* package */ Drawable resolveDrawable(@Nullable Drawable drawable, @DrawableRes int resId) {
+ return drawable == null && resId != 0 ? mResources.getDrawable(resId, mTheme) : drawable;
+ }
+
+ /** Convenience builder to generate an AlertDialog with icons in buttons. */
+ public static class DialogBuilder extends AlertDialog.Builder {
+ private final WearableDialogHelper mHelper;
+
+ public DialogBuilder(Context context) {
+ super(context);
+ mHelper = new WearableDialogHelper(context.getResources(), context.getTheme());
+ }
+
+ public DialogBuilder(Context context, int themeResId) {
+ super(context, themeResId);
+ mHelper = new WearableDialogHelper(context.getResources(), context.getTheme());
+ }
+
+ public WearableDialogHelper getHelper() {
+ return mHelper;
+ }
+
+ public DialogBuilder setPositiveIcon(@DrawableRes int iconId) {
+ mHelper.setPositiveIcon(iconId);
+ return this;
+ }
+
+ public DialogBuilder setPositiveIcon(@Nullable Drawable icon) {
+ mHelper.setPositiveIcon(icon);
+ return this;
+ }
+
+ public DialogBuilder setNegativeIcon(@DrawableRes int iconId) {
+ mHelper.setNegativeIcon(iconId);
+ return this;
+ }
+
+ public DialogBuilder setNegativeIcon(@Nullable Drawable icon) {
+ mHelper.setNegativeIcon(icon);
+ return this;
+ }
+
+ public DialogBuilder setNeutralIcon(@DrawableRes int iconId) {
+ mHelper.setNeutralIcon(iconId);
+ return this;
+ }
+
+ public DialogBuilder setNeutralIcon(@Nullable Drawable icon) {
+ mHelper.setNeutralIcon(icon);
+ return this;
+ }
+
+ @Override
+ public AlertDialog create() {
+ final AlertDialog dialog = super.create();
+ dialog.create();
+ mHelper.apply(dialog);
+ return dialog;
+ }
+
+ @Override
+ public AlertDialog show() {
+ final AlertDialog dialog = this.create();
+ dialog.show();
+ return dialog;
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java
index 55a1f814..de685825 100644
--- a/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -477,6 +477,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
final boolean requestFromUnknownSource = isInstallRequestFromUnknownSource(getIntent());
if (!requestFromUnknownSource) {
initiateInstall();
+ return;
}
// If the admin prohibits it, or we're running in a managed profile, just show error
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
index a6601165..5a1a9d64 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
@@ -353,7 +353,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
// no longer has it fixed in a denied state.
if (permission.isUserFixed() || permission.isUserSet()) {
permission.setUserFixed(false);
- permission.setUserSet(true);
+ permission.setUserSet(false);
mPackageManager.updatePermissionFlags(permission.getName(),
mPackageInfo.packageName,
PackageManager.FLAG_PERMISSION_USER_FIXED
@@ -538,11 +538,11 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
final int permissionCount = mPermissions.size();
for (int i = 0; i < permissionCount; i++) {
Permission permission = mPermissions.valueAt(i);
- if (!permission.isUserFixed()) {
- return false;
+ if (permission.isUserFixed()) {
+ return true;
}
}
- return true;
+ return false;
}
public boolean isPolicyFixed() {
@@ -560,11 +560,11 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
final int permissionCount = mPermissions.size();
for (int i = 0; i < permissionCount; i++) {
Permission permission = mPermissions.valueAt(i);
- if (!permission.isUserSet()) {
- return false;
+ if (permission.isUserSet()) {
+ return true;
}
}
- return true;
+ return false;
}
public boolean isSystemFixed() {
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java
index e455ef13..099e5b07 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java
@@ -48,11 +48,11 @@ public final class AppPermissions {
private PackageInfo mPackageInfo;
- public AppPermissions(Context context, PackageInfo packageInfo, String[] permissions,
+ public AppPermissions(Context context, PackageInfo packageInfo, String[] filterPermissions,
boolean sortGroups, Runnable onErrorCallback) {
mContext = context;
mPackageInfo = packageInfo;
- mFilterPermissions = permissions;
+ mFilterPermissions = filterPermissions;
mAppLabel = BidiFormatter.getInstance().unicodeWrap(
packageInfo.applicationInfo.loadSafeLabel(
context.getPackageManager()).toString());
@@ -83,7 +83,9 @@ public final class AppPermissions {
}
public boolean isReviewRequired() {
- if (!Build.PERMISSIONS_REVIEW_REQUIRED) {
+ if (!mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_permissionReviewRequired)
+ && !Build.PERMISSIONS_REVIEW_REQUIRED) {
return false;
}
final int groupCount = mGroups.size();
@@ -120,34 +122,13 @@ public final class AppPermissions {
if (!filterPermission.equals(requestedPerm)) {
continue;
}
-
- if (hasGroupForPermission(requestedPerm)) {
- break;
- }
-
- AppPermissionGroup group = AppPermissionGroup.create(mContext,
- mPackageInfo, requestedPerm);
- if (group == null) {
- break;
- }
-
- mGroups.add(group);
+ addPermissionGroupIfNeeded(requestedPerm);
break;
}
}
} else {
for (String requestedPerm : mPackageInfo.requestedPermissions) {
- if (hasGroupForPermission(requestedPerm)) {
- continue;
- }
-
- AppPermissionGroup group = AppPermissionGroup.create(mContext,
- mPackageInfo, requestedPerm);
- if (group == null) {
- continue;
- }
-
- mGroups.add(group);
+ addPermissionGroupIfNeeded(requestedPerm);
}
}
@@ -161,6 +142,20 @@ public final class AppPermissions {
}
}
+ private void addPermissionGroupIfNeeded(String permission) {
+ if (hasGroupForPermission(permission)) {
+ return;
+ }
+
+ AppPermissionGroup group = AppPermissionGroup.create(mContext,
+ mPackageInfo, permission);
+ if (group == null) {
+ return;
+ }
+
+ mGroups.add(group);
+ }
+
private boolean hasGroupForPermission(String permission) {
for (AppPermissionGroup group : mGroups) {
if (group.hasPermission(permission)) {
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
index 21042f00..82cfccb0 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
@@ -1,30 +1,51 @@
package com.android.packageinstaller.permission.ui;
+import android.app.AlertDialog;
+import android.app.Dialog;
import android.content.Context;
-import android.graphics.PixelFormat;
+import android.content.DialogInterface;
+import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
import android.os.Bundle;
+import android.support.wearable.view.AcceptDenyDialog;
+import android.support.wearable.view.WearableDialogHelper;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.style.ImageSpan;
+import android.text.style.TextAppearanceSpan;
+import android.text.TextUtils;
import android.util.Log;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
+import android.widget.Space;
import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.ui.wear.ConfirmationViewHandler;
/**
* Watch-specific view handler for the grant permissions activity.
*/
-final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler
- implements GrantPermissionsViewHandler {
+final class GrantPermissionsWatchViewHandler implements GrantPermissionsViewHandler,
+ DialogInterface.OnClickListener {
private static final String TAG = "GrantPermsWatchViewH";
- private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME";
+ private static final String WATCH_HANDLER_BUNDLE = "watch_handler_bundle";
+ private static final String DIALOG_BUNDLE = "dialog_bundle";
+ private static final String GROUP_NAME = "group_name";
+ private static final String SHOW_DO_NOT_ASK = "show_do_not_ask";
+ private static final String ICON = "icon";
+ private static final String MESSAGE = "message";
+ private static final String CURRENT_PAGE_TEXT = "current_page_text";
private final Context mContext;
-
+
private ResultListener mResultListener;
-
+
+ private Dialog mDialog;
+
private String mGroupName;
private boolean mShowDoNotAsk;
@@ -33,7 +54,6 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler
private Icon mIcon;
GrantPermissionsWatchViewHandler(Context context) {
- super(context);
mContext = context;
}
@@ -45,13 +65,7 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler
@Override
public View createView() {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "createView()");
- }
-
- mShowDoNotAsk = false;
-
- return super.createView();
+ return new Space(mContext);
}
@Override
@@ -79,96 +93,117 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler
mShowDoNotAsk = showDoNotAsk;
mMessage = message;
mIcon = icon;
- mCurrentPageText = (groupCount > 1 ?
- mContext.getString(R.string.current_permission_template, groupIndex + 1, groupCount)
- : null);
+ mCurrentPageText = groupCount > 1
+ ? mContext.getString(R.string.current_permission_template,
+ groupIndex + 1, groupCount)
+ : null;
+ showDialog(null);
+ }
+
+ private void showDialog(Bundle savedInstanceState) {
+ TypedArray a = mContext.obtainStyledAttributes(
+ new int[] { android.R.attr.textColorPrimary });
+ int color = a.getColor(0, mContext.getColor(android.R.color.white));
+ a.recycle();
+ Drawable drawable = mIcon == null ? null : mIcon.setTint(color).loadDrawable(mContext);
+
+ SpannableStringBuilder ssb = new SpannableStringBuilder();
+ if (!TextUtils.isEmpty(mCurrentPageText)) {
+ ssb.append(mCurrentPageText, new TextAppearanceSpan(mContext, R.style.BreadcrumbText),
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ ssb.append('\n');
+ }
+ if (!TextUtils.isEmpty(mMessage)) {
+ ssb.append(mMessage, new TextAppearanceSpan(mContext, R.style.TitleText),
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
- invalidate();
+ if (mDialog != null) {
+ mDialog.dismiss();
+ mDialog = null;
+ }
+
+ if (mShowDoNotAsk) {
+ AlertDialog alertDialog = new WearableDialogHelper.DialogBuilder(mContext)
+ .setPositiveIcon(R.drawable.confirm_button)
+ .setNeutralIcon(R.drawable.cancel_button)
+ .setNegativeIcon(R.drawable.deny_button)
+ .setTitle(ssb)
+ .setIcon(drawable)
+ .setPositiveButton(R.string.grant_dialog_button_allow, this)
+ .setNeutralButton(R.string.grant_dialog_button_deny, this)
+ .setNegativeButton(R.string.grant_dialog_button_deny_dont_ask_again, this)
+ .show();
+ alertDialog.getButton(DialogInterface.BUTTON_POSITIVE)
+ .setId(R.id.permission_allow_button);
+ alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL)
+ .setId(R.id.permission_deny_button);
+ alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE)
+ .setId(R.id.permission_deny_dont_ask_again_button);
+
+ mDialog = alertDialog;
+ } else {
+ AcceptDenyDialog acceptDenyDialog = new AcceptDenyDialog(mContext);
+ acceptDenyDialog.setTitle(ssb);
+ acceptDenyDialog.setIcon(drawable);
+ acceptDenyDialog.setPositiveButton(this);
+ acceptDenyDialog.setNegativeButton(this);
+ acceptDenyDialog.show();
+ acceptDenyDialog.getButton(DialogInterface.BUTTON_POSITIVE)
+ .setId(R.id.permission_allow_button);
+ acceptDenyDialog.getButton(DialogInterface.BUTTON_NEGATIVE)
+ .setId(R.id.permission_deny_button);
+
+ mDialog = acceptDenyDialog;
+ }
+ mDialog.setCancelable(false);
+
+ if (savedInstanceState != null) {
+ mDialog.onRestoreInstanceState(savedInstanceState);
+ }
}
@Override
public void saveInstanceState(Bundle outState) {
- outState.putString(ARG_GROUP_NAME, mGroupName);
+ Bundle b = new Bundle();
+ b.putByte(SHOW_DO_NOT_ASK, (byte) (mShowDoNotAsk ? 1 : 0));
+ b.putString(GROUP_NAME, mGroupName);
+ b.putBundle(DIALOG_BUNDLE, mDialog.onSaveInstanceState());
+
+ outState.putBundle(WATCH_HANDLER_BUNDLE, b);
}
@Override
public void loadInstanceState(Bundle savedInstanceState) {
- mGroupName = savedInstanceState.getString(ARG_GROUP_NAME);
+ Bundle b = savedInstanceState.getBundle(WATCH_HANDLER_BUNDLE);
+ mShowDoNotAsk = b.getByte(SHOW_DO_NOT_ASK) == 1;
+ mGroupName = b.getString(GROUP_NAME);
+ showDialog(b.getBundle(DIALOG_BUNDLE));
}
@Override
public void onBackPressed() {
- if (mResultListener != null) {
- mResultListener.onPermissionGrantResult(mGroupName, false, false);
- }
- }
-
- @Override // ConfirmationViewHandler
- public void onButton1() {
- onClick(true /* granted */, false /* doNotAskAgain */);
- }
-
- @Override // ConfirmationViewHandler
- public void onButton2() {
- onClick(false /* granted */, false /* doNotAskAgain */);
+ notifyListener(false, false);
}
- @Override // ConfirmationViewHandler
- public void onButton3() {
- onClick(false /* granted */, true /* doNotAskAgain */);
- }
-
- @Override // ConfirmationViewHandler
- public CharSequence getCurrentPageText() {
- return mCurrentPageText;
- }
-
- @Override // ConfirmationViewHandler
- public Icon getPermissionIcon() {
- return mIcon;
- }
-
- @Override // ConfirmationViewHandler
- public CharSequence getMessage() {
- return mMessage;
- }
-
- @Override // ConfirmationViewHandler
- public int getButtonBarMode() {
- return mShowDoNotAsk ? MODE_VERTICAL_BUTTONS : MODE_HORIZONTAL_BUTTONS;
- }
-
- @Override // ConfirmationViewHandler
- public CharSequence getVerticalButton1Text() {
- return mContext.getString(R.string.grant_dialog_button_allow);
- }
-
- @Override // ConfirmationViewHandler
- public CharSequence getVerticalButton2Text() {
- return mContext.getString(R.string.grant_dialog_button_deny);
- }
-
- @Override // ConfirmationViewHandler
- public CharSequence getVerticalButton3Text() {
- return mContext.getString(R.string.grant_dialog_button_deny_dont_ask_again);
- }
-
- @Override // ConfirmationViewHandler
- public Drawable getVerticalButton1Icon(){
- return mContext.getDrawable(R.drawable.confirm_button);
- }
-
- @Override // ConfirmationViewHandler
- public Drawable getVerticalButton2Icon(){
- return mContext.getDrawable(R.drawable.cancel_button);
- }
-
- @Override // ConfirmationViewHandler
- public Drawable getVerticalButton3Icon(){
- return mContext.getDrawable(R.drawable.deny_button);
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ notifyListener(true, false);
+ break;
+ case DialogInterface.BUTTON_NEUTRAL:
+ notifyListener(false, false);
+ break;
+ case DialogInterface.BUTTON_NEGATIVE:
+ notifyListener(false,
+ /* In AlertDialog, the negative button is also a don't ask again button. */
+ dialog instanceof AlertDialog);
+ break;
+ }
}
- private void onClick(boolean granted, boolean doNotAskAgain) {
+ private void notifyListener(boolean granted, boolean doNotAskAgain) {
if (mResultListener != null) {
mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain);
}
diff --git a/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java
index 0f8cb5b1..d3f3e407 100644
--- a/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java
@@ -288,8 +288,10 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader {
return Utils.applyTint(context, icon, android.R.attr.colorControlNormal);
}
- private static boolean isMutableGranularPermission(String name) {
- if (!Build.PERMISSIONS_REVIEW_REQUIRED) {
+ private boolean isMutableGranularPermission(String name) {
+ if (!getResources().getBoolean(
+ com.android.internal.R.bool.config_permissionReviewRequired)
+ && !Build.PERMISSIONS_REVIEW_REQUIRED) {
return false;
}
switch (name) {
diff --git a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java
index be7d159c..26467de9 100644
--- a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java
@@ -33,7 +33,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
-import android.support.v17.leanback.widget.VerticalGridView;
import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.Preference.OnPreferenceClickListener;
@@ -48,7 +47,9 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
+
import com.android.packageinstaller.R;
+
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.ui.ReviewPermissionsActivity;
@@ -182,17 +183,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader
R.string.app_permissions_decor_title));
}
- @Override
- protected void updateHeader() {
-
- super.updateHeader();
- Preference headerLineTwo = getPreferenceScreen().findPreference(HEADER_PREFERENCE_KEY);
- if (headerLineTwo != null) {
- headerLineTwo.setTitle(mLabel);
- headerLineTwo.setIcon(mIcon);
- }
- }
-
private void loadPreferences() {
Context context = getPreferenceManager().getContext();
if (context == null) {
@@ -201,25 +191,11 @@ public final class AppPermissionsFragment extends SettingsWithHeader
PreferenceScreen screen = getPreferenceScreen();
screen.removeAll();
-
- // Setting the second-line header that contains the app banner icon and its name.
- // The styling used is the same as a leanback preference with a customized background color.
- Preference headerLineTwo = new Preference(context) {
- @Override
- public void onBindViewHolder(PreferenceViewHolder holder) {
- super.onBindViewHolder(holder);
- holder.itemView.setBackgroundColor(
- getResources().getColor(R.color.lb_header_banner_color));
- }
- };
- headerLineTwo.setKey(HEADER_PREFERENCE_KEY);
- headerLineTwo.setSelectable(false);
- headerLineTwo.setTitle(mLabel);
- headerLineTwo.setIcon(mIcon);
- screen.addPreference(headerLineTwo);
+ screen.addPreference(createHeaderLineTwoPreference(context));
if (mExtraScreen != null) {
mExtraScreen.removeAll();
+ mExtraScreen = null;
}
final Preference extraPerms = new Preference(context);
@@ -253,6 +229,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader
} else {
if (mExtraScreen == null) {
mExtraScreen = getPreferenceManager().createPreferenceScreen(context);
+ mExtraScreen.addPreference(createHeaderLineTwoPreference(context));
}
mExtraScreen.addPreference(preference);
}
@@ -281,6 +258,30 @@ public final class AppPermissionsFragment extends SettingsWithHeader
setLoading(false /* loading */, true /* animate */);
}
+ /**
+ * Creates a heading below decor_title and above the rest of the preferences. This heading
+ * displays the app name and banner icon. It's used in both system and additional permissions
+ * fragments for each app. The styling used is the same as a leanback preference with a
+ * customized background color
+ * @param context The context the preferences created on
+ * @return The preference header to be inserted as the first preference in the list.
+ */
+ private Preference createHeaderLineTwoPreference(Context context) {
+ Preference headerLineTwo = new Preference(context) {
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ holder.itemView.setBackgroundColor(
+ getResources().getColor(R.color.lb_header_banner_color));
+ }
+ };
+ headerLineTwo.setKey(HEADER_PREFERENCE_KEY);
+ headerLineTwo.setSelectable(false);
+ headerLineTwo.setTitle(mLabel);
+ headerLineTwo.setIcon(mIcon);
+ return headerLineTwo;
+ }
+
@Override
public boolean onPreferenceChange(final Preference preference, Object newValue) {
String groupName = preference.getKey();
@@ -390,8 +391,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader
public void onCreate(Bundle savedInstanceState) {
mOuterFragment = (AppPermissionsFragment) getTargetFragment();
super.onCreate(savedInstanceState);
- setHeader(mOuterFragment.mIcon, mOuterFragment.mLabel, mOuterFragment.mInfoIntent,
- null);
setHasOptionsMenu(true);
}
@@ -407,6 +406,22 @@ public final class AppPermissionsFragment extends SettingsWithHeader
bindUi(this, getPackageInfo(getActivity(), packageName));
}
+ private static void bindUi(SettingsWithHeader fragment, PackageInfo packageInfo) {
+ Activity activity = fragment.getActivity();
+ PackageManager pm = activity.getPackageManager();
+ ApplicationInfo appInfo = packageInfo.applicationInfo;
+ Intent infoIntent = null;
+ if (!activity.getIntent().getBooleanExtra(EXTRA_HIDE_INFO_BUTTON, false)) {
+ infoIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
+ .setData(Uri.fromParts("package", packageInfo.packageName, null));
+ }
+
+ Drawable icon = appInfo.loadIcon(pm);
+ CharSequence label = appInfo.loadLabel(pm);
+ fragment.setHeader(icon, label, infoIntent, fragment.getString(
+ R.string.additional_permissions_decor_title));
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
diff --git a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
index ec320701..e6ad66da 100644
--- a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
@@ -421,6 +421,18 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
bindUi(this, permissionApps);
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ mOuterFragment.mPermissionApps.refresh(true);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ mOuterFragment.setOnPermissionsLoadedListener(null);
+ }
+
private static void bindUi(SettingsWithHeader fragment, PermissionApps permissionApps) {
final CharSequence label = permissionApps.getLabel();
@@ -428,11 +440,9 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
fragment.getString(R.string.system_apps_decor_title, label));
}
-
@Override
public void onPermissionsLoaded(PermissionApps permissionApps) {
setPreferenceScreen();
- mOuterFragment.setOnPermissionsLoadedListener(null);
}
private void setPreferenceScreen() {
diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
index db1c94d8..4ef27426 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
@@ -22,8 +22,14 @@ import android.app.Fragment;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
import android.os.Bundle;
-import android.support.wearable.view.WearableListView;
+import android.os.UserHandle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
+import android.support.wearable.view.WearableDialogHelper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -33,25 +39,21 @@ import android.widget.Toast;
import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
-import com.android.packageinstaller.permission.ui.wear.settings.PermissionsSettingsAdapter;
-import com.android.packageinstaller.permission.ui.wear.settings.SettingsAdapter;
+import com.android.packageinstaller.permission.model.Permission;
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
+import com.android.packageinstaller.permission.utils.ArrayUtils;
import com.android.packageinstaller.permission.utils.Utils;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import java.util.ArrayList;
import java.util.List;
-public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
+public final class AppPermissionsFragmentWear extends PreferenceFragment {
+ private static final String LOG_TAG = "AppPermFragWear";
- private static final String LOG_TAG = "ManagePermsFragment";
-
- private static final int WARNING_CONFIRMATION_REQUEST = 252;
- private List<AppPermissionGroup> mToggledGroups;
- private AppPermissions mAppPermissions;
- private PermissionsSettingsAdapter mAdapter;
-
- private boolean mHasConfirmedRevoke;
+ private static final String KEY_NO_PERMISSIONS = "no_permissions";
public static AppPermissionsFragmentWear newInstance(String packageName) {
return setPackageName(new AppPermissionsFragmentWear(), packageName);
@@ -64,17 +66,53 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
return fragment;
}
+ private PackageManager mPackageManager;
+ private List<AppPermissionGroup> mToggledGroups;
+ private AppPermissions mAppPermissions;
+
+ private boolean mHasConfirmedRevoke;
+
+ /**
+ * Provides click behavior for disabled preferences.
+ * We can't use {@link PreferenceFragment#onPreferenceTreeClick}, as the base
+ * {@link SwitchPreference} doesn't delegate to that method if the preference is disabled.
+ */
+ private static class PermissionSwitchPreference extends SwitchPreference {
+
+ private final Activity mActivity;
+
+ public PermissionSwitchPreference(Activity activity) {
+ super(activity);
+ this.mActivity = activity;
+ }
+
+ @Override
+ public void performClick(PreferenceScreen preferenceScreen) {
+ super.performClick(preferenceScreen);
+ if (!isEnabled()) {
+ // If setting the permission is disabled, it must have been locked
+ // by the device or profile owner. So get that info and pass it to
+ // the support details dialog.
+ EnforcedAdmin deviceOrProfileOwner = RestrictedLockUtils.getProfileOrDeviceOwner(
+ mActivity, UserHandle.myUserId());
+ RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+ mActivity, deviceOrProfileOwner);
+ }
+ }
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
Activity activity = getActivity();
- PackageManager pm = activity.getPackageManager();
+ mPackageManager = activity.getPackageManager();
+
PackageInfo packageInfo;
try {
- packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
+ packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
} catch (PackageManager.NameNotFoundException e) {
Log.i(LOG_TAG, "No package:" + activity.getCallingPackage(), e);
packageInfo = null;
@@ -86,172 +124,180 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
return;
}
- mAppPermissions = new AppPermissions(activity, packageInfo, null, true, new Runnable() {
- @Override
- public void run() {
- getActivity().finish();
- }
- });
-
- mAdapter = new PermissionsSettingsAdapter(getContext());
+ mAppPermissions = new AppPermissions(
+ activity, packageInfo, null, true, () -> getActivity().finish());
+ addPreferencesFromResource(R.xml.watch_permissions);
initializePermissionGroupList();
}
@Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- return inflater.inflate(R.layout.settings, container, false);
- }
-
- @Override
public void onResume() {
super.onResume();
mAppPermissions.refresh();
// Also refresh the UI
- final int count = mAdapter.getItemCount();
- for (int i = 0; i < count; ++i) {
- updatePermissionGroupSetting(i);
+ for (final AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
+ if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) {
+ for (PermissionInfo perm : getPermissionInfosFromGroup(group)) {
+ setPreferenceCheckedIfPresent(perm.name,
+ group.areRuntimePermissionsGranted(new String[]{ perm.name }));
+ }
+ } else {
+ setPreferenceCheckedIfPresent(group.getName(), group.areRuntimePermissionsGranted());
+ }
}
}
@Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- if (mAppPermissions != null) {
- initializeLayout(mAdapter);
- mHeader.setText(R.string.app_permissions);
- mDetails.setText(R.string.no_permissions);
- if (mAdapter.getItemCount() == 0) {
- mDetails.setVisibility(View.VISIBLE);
- mWheel.setVisibility(View.GONE);
- } else {
- mDetails.setVisibility(View.GONE);
- mWheel.setVisibility(View.VISIBLE);
- }
- }
+ public void onPause() {
+ super.onPause();
+ logAndClearToggledGroups();
}
private void initializePermissionGroupList() {
final String packageName = mAppPermissions.getPackageInfo().packageName;
List<AppPermissionGroup> groups = mAppPermissions.getPermissionGroups();
- List<SettingsAdapter.Setting<AppPermissionGroup>> nonSystemGroups = new ArrayList<>();
+ List<SwitchPreference> nonSystemPreferences = new ArrayList<>();
- final int count = groups.size();
- for (int i = 0; i < count; ++i) {
- final AppPermissionGroup group = groups.get(i);
+ if (!groups.isEmpty()) {
+ getPreferenceScreen().removePreference(findPreference(KEY_NO_PERMISSIONS));
+ }
+
+ for (final AppPermissionGroup group : groups) {
if (!Utils.shouldShowPermission(group, packageName)) {
continue;
}
boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);
- SettingsAdapter.Setting<AppPermissionGroup> setting =
- new SettingsAdapter.Setting<AppPermissionGroup>(
- group.getLabel(),
- getPermissionGroupIcon(group),
- i);
- setting.data = group;
-
- // The UI shows System settings first, then non-system settings
- if (isPlatform) {
- mAdapter.addSetting(setting);
+ if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) {
+ // If permission is controlled individually, we show all requested permission
+ // inside this group.
+ for (PermissionInfo perm : getPermissionInfosFromGroup(group)) {
+ final SwitchPreference pref = createSwitchPreferenceForPermission(group, perm);
+ showOrAddToNonSystemPreferences(pref, nonSystemPreferences, isPlatform);
+ }
} else {
- nonSystemGroups.add(setting);
+ final SwitchPreference pref = createSwitchPreferenceForGroup(group);
+ showOrAddToNonSystemPreferences(pref, nonSystemPreferences, isPlatform);
}
}
// Now add the non-system settings to the end of the list
- final int nonSystemCount = nonSystemGroups.size();
- for (int i = 0; i < nonSystemCount; ++i) {
- final SettingsAdapter.Setting<AppPermissionGroup> setting = nonSystemGroups.get(i);
- mAdapter.addSetting(setting);
+ for (SwitchPreference nonSystemPreference : nonSystemPreferences) {
+ getPreferenceScreen().addPreference(nonSystemPreference);
}
}
- @Override
- public void onPause() {
- super.onPause();
- logAndClearToggledGroups();
+ private void showOrAddToNonSystemPreferences(SwitchPreference pref,
+ List<SwitchPreference> nonSystemPreferences, // Mutate
+ boolean isPlatform) {
+ // The UI shows System settings first, then non-system settings
+ if (isPlatform) {
+ getPreferenceScreen().addPreference(pref);
+ } else {
+ nonSystemPreferences.add(pref);
+ }
}
- @Override
- public void onClick(WearableListView.ViewHolder view) {
- final int index = view.getPosition();
- SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
- final AppPermissionGroup group = setting.data;
+ private SwitchPreference createSwitchPreferenceForPermission(AppPermissionGroup group,
+ PermissionInfo perm) {
+ final SwitchPreference pref = new PermissionSwitchPreference(getActivity());
+ pref.setKey(perm.name);
+ pref.setTitle(perm.loadLabel(mPackageManager));
+ pref.setChecked(group.areRuntimePermissionsGranted(new String[]{ perm.name }));
+ pref.setOnPreferenceChangeListener((p, newVal) -> {
+ if((Boolean) newVal) {
+ group.grantRuntimePermissions(false, new String[]{ perm.name });
+ } else {
+ group.revokeRuntimePermissions(true, new String[]{ perm.name });
+ }
- if (group == null) {
- Log.e(LOG_TAG, "Error: AppPermissionGroup is null");
- return;
- }
+ if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())
+ && group.hasRuntimePermission()) {
+ // As long as one permission is changed in individually controlled group
+ // permissions, we will set user_fixed for non-granted permissions in that group.
+ // This avoids the system to automatically grant runtime permissions based on the
+ // fact that one of dangerous permission in that group is already granted.
+ String[] revokedPermissionsToFix = null;
+ final int permissionCount = group.getPermissions().size();
+
+ for (int i = 0; i < permissionCount; i++) {
+ Permission current = group.getPermissions().get(i);
+ if (!current.isGranted() && !current.isUserFixed()) {
+ revokedPermissionsToFix = ArrayUtils.appendString(
+ revokedPermissionsToFix, current.getName());
+ }
+ }
- // The way WearableListView is designed, there is no way to avoid this click handler
- // Since the policy is fixed, ignore the click as the user is not able to change the state
- // of this permission group
- if (group.isPolicyFixed()) {
- return;
- }
+ if (revokedPermissionsToFix != null) {
+ group.revokeRuntimePermissions(true, revokedPermissionsToFix);
+ }
+ }
+ return true;
+ });
+ return pref;
+ }
- addToggledGroup(group);
+ private SwitchPreference createSwitchPreferenceForGroup(AppPermissionGroup group) {
+ final SwitchPreference pref = new PermissionSwitchPreference(getActivity());
- if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) {
- LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel());
- return;
- }
+ pref.setKey(group.getName());
+ pref.setTitle(group.getLabel());
+ pref.setChecked(group.areRuntimePermissionsGranted());
- if (!group.areRuntimePermissionsGranted()) {
- group.grantRuntimePermissions(false);
+ if (group.isPolicyFixed()) {
+ pref.setEnabled(false);
} else {
- final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
- if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) {
- Intent intent = new Intent(getActivity(), WarningConfirmationActivity.class);
- intent.putExtra(WarningConfirmationActivity.EXTRA_WARNING_MESSAGE,
- getString(grantedByDefault ?
- R.string.system_warning : R.string.old_sdk_deny_warning));
- intent.putExtra(WarningConfirmationActivity.EXTRA_INDEX, index);
- startActivityForResult(intent, WARNING_CONFIRMATION_REQUEST);
- } else {
- group.revokeRuntimePermissions(false);
- }
- }
-
- updatePermissionGroupSetting(index);
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == WARNING_CONFIRMATION_REQUEST) {
- if (resultCode == Activity.RESULT_OK) {
- int index = data.getIntExtra(WarningConfirmationActivity.EXTRA_INDEX, -1);
- if (index == -1) {
- Log.e(LOG_TAG, "Warning confirmation request came back with no index.");
- return;
+ pref.setOnPreferenceChangeListener((p, newVal) -> {
+ if (LocationUtils.isLocationGroupAndProvider(
+ group.getName(), group.getApp().packageName)) {
+ LocationUtils.showLocationDialog(
+ getContext(), mAppPermissions.getAppLabel());
+ return false;
}
- SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
- final AppPermissionGroup group = setting.data;
- group.revokeRuntimePermissions(false);
- if (!group.hasGrantedByDefaultPermission()) {
- mHasConfirmedRevoke = true;
+ if ((Boolean) newVal) {
+ setPermission(group, pref, true);
+ } else {
+ final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
+ if (grantedByDefault
+ || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) {
+ new WearableDialogHelper.DialogBuilder(getContext())
+ .setNegativeIcon(R.drawable.confirm_button)
+ .setPositiveIcon(R.drawable.cancel_button)
+ .setNegativeButton(R.string.grant_dialog_button_deny_anyway,
+ (dialog, which) -> {
+ setPermission(group, pref, false);
+ if (!group.hasGrantedByDefaultPermission()) {
+ mHasConfirmedRevoke = true;
+ }
+ })
+ .setPositiveButton(R.string.cancel, (dialog, which) -> {})
+ .setMessage(grantedByDefault ?
+ R.string.system_warning : R.string.old_sdk_deny_warning)
+ .show();
+ return false;
+ } else {
+ setPermission(group, pref, false);
+ }
}
- updatePermissionGroupSetting(index);
- }
- } else {
- super.onActivityResult(requestCode, resultCode, data);
+ return true;
+ });
}
+ return pref;
}
- private void updatePermissionGroupSetting(int index) {
- SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
- AppPermissionGroup group = setting.data;
- mAdapter.updateSetting(
- index,
- group.getLabel(),
- getPermissionGroupIcon(group),
- group);
+ private void setPermission(AppPermissionGroup group, SwitchPreference pref, boolean grant) {
+ if (grant) {
+ group.grantRuntimePermissions(false);
+ } else {
+ group.revokeRuntimePermissions(false);
+ }
+ addToggledGroup(group);
+ pref.setChecked(grant);
}
private void addToggledGroup(AppPermissionGroup group) {
@@ -274,53 +320,22 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
}
}
- private int getPermissionGroupIcon(AppPermissionGroup group) {
- String groupName = group.getName();
- boolean isEnabled = group.areRuntimePermissionsGranted();
- int resId;
-
- switch (groupName) {
- case Manifest.permission_group.CALENDAR:
- resId = isEnabled ? R.drawable.ic_permission_calendar
- : R.drawable.ic_permission_calendardisable;
- break;
- case Manifest.permission_group.CAMERA:
- resId = isEnabled ? R.drawable.ic_permission_camera
- : R.drawable.ic_permission_cameradisable;
- break;
- case Manifest.permission_group.CONTACTS:
- resId = isEnabled ? R.drawable.ic_permission_contact
- : R.drawable.ic_permission_contactdisable;
- break;
- case Manifest.permission_group.LOCATION:
- resId = isEnabled ? R.drawable.ic_permission_location
- : R.drawable.ic_permission_locationdisable;
- break;
- case Manifest.permission_group.MICROPHONE:
- resId = isEnabled ? R.drawable.ic_permission_mic
- : R.drawable.ic_permission_micdisable;
- break;
- case Manifest.permission_group.PHONE:
- resId = isEnabled ? R.drawable.ic_permission_call
- : R.drawable.ic_permission_calldisable;
- break;
- case Manifest.permission_group.SENSORS:
- resId = isEnabled ? R.drawable.ic_permission_sensor
- : R.drawable.ic_permission_sensordisable;
- break;
- case Manifest.permission_group.SMS:
- resId = isEnabled ? R.drawable.ic_permission_sms
- : R.drawable.ic_permission_smsdisable;
- break;
- case Manifest.permission_group.STORAGE:
- resId = isEnabled ? R.drawable.ic_permission_storage
- : R.drawable.ic_permission_storagedisable;
- break;
- default:
- resId = isEnabled ? R.drawable.ic_permission_shield
- : R.drawable.ic_permission_shielddisable;
+ private List<PermissionInfo> getPermissionInfosFromGroup(AppPermissionGroup group) {
+ ArrayList<PermissionInfo> permInfos = new ArrayList<>(group.getPermissions().size());
+ for(Permission perm : group.getPermissions()) {
+ try {
+ permInfos.add(mPackageManager.getPermissionInfo(perm.getName(), 0));
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(LOG_TAG, "No permission:" + perm.getName());
+ }
}
+ return permInfos;
+ }
- return resId;
+ private void setPreferenceCheckedIfPresent(String preferenceKey, boolean checked) {
+ Preference pref = findPreference(preferenceKey);
+ if (pref instanceof SwitchPreference) {
+ ((SwitchPreference) pref).setChecked(checked);
+ }
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
deleted file mode 100644
index 1c55e1bd..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
+++ /dev/null
@@ -1,381 +0,0 @@
-package com.android.packageinstaller.permission.ui.wear;
-
-import android.animation.ObjectAnimator;
-import android.animation.PropertyValuesHolder;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
-import android.view.animation.AnimationUtils;
-import android.view.animation.Interpolator;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-
-public abstract class ConfirmationViewHandler implements
- Handler.Callback,
- View.OnClickListener,
- ViewTreeObserver.OnScrollChangedListener,
- ViewTreeObserver.OnGlobalLayoutListener {
- private static final String TAG = "ConfirmationViewHandler";
-
- public static final int MODE_HORIZONTAL_BUTTONS = 0;
- public static final int MODE_VERTICAL_BUTTONS = 1;
-
- private static final int MSG_SHOW_BUTTON_BAR = 1001;
- private static final int MSG_HIDE_BUTTON_BAR = 1002;
- private static final long HIDE_ANIM_DURATION = 500;
-
- private View mRoot;
- private TextView mCurrentPageText;
- private ImageView mIcon;
- private TextView mMessage;
- private ScrollView mScrollingContainer;
- private ViewGroup mContent;
- private ViewGroup mHorizontalButtonBar;
- private ViewGroup mVerticalButtonBar;
- private Button mVerticalButton1;
- private Button mVerticalButton2;
- private Button mVerticalButton3;
- private View mButtonBarContainer;
-
- private Context mContext;
-
- private Handler mHideHandler;
- private Interpolator mInterpolator;
- private float mButtonBarFloatingHeight;
- private ObjectAnimator mButtonBarAnimator;
- private float mCurrentTranslation;
- private boolean mHiddenBefore;
-
- // TODO: Move these into a builder
- /** In the 2 button layout, this is allow button */
- public abstract void onButton1();
- /** In the 2 button layout, this is deny button */
- public abstract void onButton2();
- public abstract void onButton3();
- public abstract CharSequence getVerticalButton1Text();
- public abstract CharSequence getVerticalButton2Text();
- public abstract CharSequence getVerticalButton3Text();
- public abstract Drawable getVerticalButton1Icon();
- public abstract Drawable getVerticalButton2Icon();
- public abstract Drawable getVerticalButton3Icon();
- public abstract CharSequence getCurrentPageText();
- public abstract Icon getPermissionIcon();
- public abstract CharSequence getMessage();
-
- public ConfirmationViewHandler(Context context) {
- mContext = context;
- }
-
- public View createView() {
- mRoot = LayoutInflater.from(mContext).inflate(R.layout.confirmation_dialog, null);
-
- mMessage = (TextView) mRoot.findViewById(R.id.message);
- mCurrentPageText = (TextView) mRoot.findViewById(R.id.current_page_text);
- mIcon = (ImageView) mRoot.findViewById(R.id.icon);
- mButtonBarContainer = mRoot.findViewById(R.id.button_bar_container);
- mContent = (ViewGroup) mRoot.findViewById(R.id.content);
- mScrollingContainer = (ScrollView) mRoot.findViewById(R.id.scrolling_container);
- mHorizontalButtonBar = (ViewGroup) mRoot.findViewById(R.id.horizontal_button_bar);
- mVerticalButtonBar = (ViewGroup) mRoot.findViewById(R.id.vertical_button_bar);
-
- Button horizontalAllow = (Button) mRoot.findViewById(R.id.permission_allow_button);
- Button horizontalDeny = (Button) mRoot.findViewById(R.id.permission_deny_button);
- horizontalAllow.setOnClickListener(this);
- horizontalDeny.setOnClickListener(this);
-
- mVerticalButton1 = (Button) mRoot.findViewById(R.id.vertical_button1);
- mVerticalButton2 = (Button) mRoot.findViewById(R.id.vertical_button2);
- mVerticalButton3 = (Button) mRoot.findViewById(R.id.vertical_button3);
- mVerticalButton1.setOnClickListener(this);
- mVerticalButton2.setOnClickListener(this);
- mVerticalButton3.setOnClickListener(this);
-
- mInterpolator = AnimationUtils.loadInterpolator(mContext,
- android.R.interpolator.fast_out_slow_in);
- mButtonBarFloatingHeight = mContext.getResources().getDimension(
- R.dimen.conf_diag_floating_height);
- mHideHandler = new Handler(Looper.getMainLooper(), this);
-
- mScrollingContainer.getViewTreeObserver().addOnScrollChangedListener(this);
- mRoot.getViewTreeObserver().addOnGlobalLayoutListener(this);
-
- return mRoot;
- }
-
- /**
- * Child class should override this for other modes. Call invalidate() to update the UI to the
- * new button mode.
- * @return The current mode the layout should use for the buttons
- */
- public int getButtonBarMode() {
- return MODE_HORIZONTAL_BUTTONS;
- }
-
- public void invalidate() {
- CharSequence currentPageText = getCurrentPageText();
- if (!TextUtils.isEmpty(currentPageText)) {
- mCurrentPageText.setText(currentPageText);
- mCurrentPageText.setVisibility(View.VISIBLE);
- } else {
- mCurrentPageText.setVisibility(View.GONE);
- }
-
- Icon icon = getPermissionIcon();
- if (icon != null) {
- mIcon.setImageIcon(icon);
- mIcon.setVisibility(View.VISIBLE);
- } else {
- mIcon.setVisibility(View.GONE);
- }
- mMessage.setText(getMessage());
-
- switch (getButtonBarMode()) {
- case MODE_HORIZONTAL_BUTTONS:
- mHorizontalButtonBar.setVisibility(View.VISIBLE);
- mVerticalButtonBar.setVisibility(View.GONE);
- break;
- case MODE_VERTICAL_BUTTONS:
- mHorizontalButtonBar.setVisibility(View.GONE);
- mVerticalButtonBar.setVisibility(View.VISIBLE);
-
- mVerticalButton1.setText(getVerticalButton1Text());
- mVerticalButton2.setText(getVerticalButton2Text());
-
- mVerticalButton1.setCompoundDrawablesWithIntrinsicBounds(
- getVerticalButton1Icon(), null, null, null);
- mVerticalButton2.setCompoundDrawablesWithIntrinsicBounds(
- getVerticalButton2Icon(), null, null, null);
-
- CharSequence verticalButton3Text = getVerticalButton3Text();
- if (TextUtils.isEmpty(verticalButton3Text)) {
- mVerticalButton3.setVisibility(View.GONE);
- } else {
- mVerticalButton3.setText(getVerticalButton3Text());
- mVerticalButton3.setCompoundDrawablesWithIntrinsicBounds(
- getVerticalButton3Icon(), null, null, null);
- }
- break;
- }
-
- mScrollingContainer.scrollTo(0, 0);
-
- mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
- mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
- }
-
- @Override
- public void onGlobalLayout() {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "onGlobalLayout");
- Log.d(TAG, " contentHeight: " + mContent.getHeight());
- }
-
- if (mButtonBarAnimator != null) {
- mButtonBarAnimator.cancel();
- }
-
- // In order to fake the buttons peeking at the bottom, need to do set the
- // padding properly.
- if (mContent.getPaddingBottom() != mButtonBarContainer.getHeight()) {
- mContent.setPadding(mContent.getPaddingLeft(), mContent.getPaddingTop(),
- mContent.getPaddingRight(), mButtonBarContainer.getHeight());
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, " set mContent.PaddingBottom: " + mButtonBarContainer.getHeight());
- }
- }
-
- mButtonBarContainer.setTranslationY(mButtonBarContainer.getHeight());
-
- // Give everything a chance to render
- mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
- mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
- mHideHandler.sendEmptyMessageDelayed(MSG_SHOW_BUTTON_BAR, 50);
- }
-
- @Override
- public void onClick(View v) {
- int id = v.getId();
- switch (id) {
- case R.id.permission_allow_button:
- case R.id.vertical_button1:
- onButton1();
- break;
- case R.id.permission_deny_button:
- case R.id.vertical_button2:
- onButton2();
- break;
- case R.id.vertical_button3:
- onButton3();
- break;
- }
- }
-
- @Override
- public boolean handleMessage (Message msg) {
- switch (msg.what) {
- case MSG_SHOW_BUTTON_BAR:
- showButtonBar();
- return true;
- case MSG_HIDE_BUTTON_BAR:
- hideButtonBar();
- return true;
- }
- return false;
- }
-
- @Override
- public void onScrollChanged () {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "onScrollChanged");
- }
- mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
- hideButtonBar();
- }
-
- private void showButtonBar() {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "showButtonBar");
- }
-
- // Setup Button animation.
- // pop the button bar back to full height, stop all animation
- if (mButtonBarAnimator != null) {
- mButtonBarAnimator.cancel();
- }
-
- // stop any calls to hide the button bar in the future
- mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
- mHiddenBefore = false;
-
- // Evaluate the max height the button bar can go
- final int screenHeight = mRoot.getHeight();
- final int halfScreenHeight = screenHeight / 2;
- final int buttonBarHeight = mButtonBarContainer.getHeight();
- final int contentHeight = mContent.getHeight() - buttonBarHeight;
- final int buttonBarMaxHeight =
- Math.min(buttonBarHeight, halfScreenHeight);
-
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, " screenHeight: " + screenHeight);
- Log.d(TAG, " contentHeight: " + contentHeight);
- Log.d(TAG, " buttonBarHeight: " + buttonBarHeight);
- Log.d(TAG, " buttonBarMaxHeight: " + buttonBarMaxHeight);
- }
-
- mButtonBarContainer.setTranslationZ(mButtonBarFloatingHeight);
-
- // Only hide the button bar if it is occluding the content or the button bar is bigger than
- // half the screen
- if (contentHeight > (screenHeight - buttonBarHeight)
- || buttonBarHeight > halfScreenHeight) {
- mHideHandler.sendEmptyMessageDelayed(MSG_HIDE_BUTTON_BAR, 3000);
- }
-
- generateButtonBarAnimator(buttonBarHeight,
- buttonBarHeight - buttonBarMaxHeight, 0, mButtonBarFloatingHeight, 1000);
- }
-
- private void hideButtonBar() {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "hideButtonBar");
- }
-
- // The desired margin space between the button bar and the bottom of the dialog text
- final int topMargin = mContext.getResources().getDimensionPixelSize(
- R.dimen.conf_diag_button_container_top_margin);
- final int contentHeight = mContent.getHeight() + topMargin;
- final int screenHeight = mRoot.getHeight();
- final int buttonBarHeight = mButtonBarContainer.getHeight();
-
- final int offset = screenHeight + buttonBarHeight
- - contentHeight + Math.max(mScrollingContainer.getScrollY(), 0);
- final int translationY = (offset > 0 ?
- mButtonBarContainer.getHeight() - offset : mButtonBarContainer.getHeight());
-
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, " topMargin: " + topMargin);
- Log.d(TAG, " contentHeight: " + contentHeight);
- Log.d(TAG, " screenHeight: " + screenHeight);
- Log.d(TAG, " offset: " + offset);
- Log.d(TAG, " buttonBarHeight: " + buttonBarHeight);
- Log.d(TAG, " mContent.getPaddingBottom(): " + mContent.getPaddingBottom());
- Log.d(TAG, " mScrollingContainer.getScrollY(): " + mScrollingContainer.getScrollY());
- Log.d(TAG, " translationY: " + translationY);
- }
-
- if (!mHiddenBefore || mButtonBarAnimator == null) {
- // Remove previous call to MSG_SHOW_BUTTON_BAR if the user scrolled or something before
- // the animation got a chance to play
- mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
-
- if(mButtonBarAnimator != null) {
- mButtonBarAnimator.cancel(); // stop current animation if there is one playing
- }
-
- // hasn't hidden the bar yet, just hide now to the right height
- generateButtonBarAnimator(
- mButtonBarContainer.getTranslationY(), translationY,
- mButtonBarFloatingHeight, 0, HIDE_ANIM_DURATION);
- } else if (mButtonBarAnimator.isRunning()) {
- // we are animating the button bar closing, change to animate to the right place
- if (Math.abs(mCurrentTranslation - translationY) > 1e-2f) {
- mButtonBarAnimator.cancel(); // stop current animation
-
- if (Math.abs(mButtonBarContainer.getTranslationY() - translationY) > 1e-2f) {
- long duration = Math.max((long) (
- (float) HIDE_ANIM_DURATION
- * (translationY - mButtonBarContainer.getTranslationY())
- / mButtonBarContainer.getHeight()), 0);
-
- generateButtonBarAnimator(
- mButtonBarContainer.getTranslationY(), translationY,
- mButtonBarFloatingHeight, 0, duration);
- } else {
- mButtonBarContainer.setTranslationY(translationY);
- mButtonBarContainer.setTranslationZ(0);
- }
- }
- } else {
- // not currently animating, have already hidden, snap to the right offset
- mButtonBarContainer.setTranslationY(translationY);
- mButtonBarContainer.setTranslationZ(0);
- }
-
- mHiddenBefore = true;
- }
-
- private void generateButtonBarAnimator(
- float startY, float endY, float startZ, float endZ, long duration) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "generateButtonBarAnimator");
- Log.d(TAG, " startY: " + startY);
- Log.d(TAG, " endY: " + endY);
- Log.d(TAG, " startZ: " + startZ);
- Log.d(TAG, " endZ: " + endZ);
- Log.d(TAG, " duration: " + duration);
- }
-
- mButtonBarAnimator =
- ObjectAnimator.ofPropertyValuesHolder(
- mButtonBarContainer,
- PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, startY, endY),
- PropertyValuesHolder.ofFloat(View.TRANSLATION_Z, startZ, endZ));
- mCurrentTranslation = endY;
- mButtonBarAnimator.setDuration(duration);
- mButtonBarAnimator.setInterpolator(mInterpolator);
- mButtonBarAnimator.start();
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java b/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java
deleted file mode 100644
index b673a498..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear;
-
-import android.app.Fragment;
-import android.content.Context;
-import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
-import android.support.wearable.view.WearableListView;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowInsets;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.packageinstaller.permission.ui.wear.settings.ViewUtils;
-import com.android.packageinstaller.R;
-
-/**
- * Base settings Fragment that shows a title at the top of the page.
- */
-public abstract class TitledSettingsFragment extends Fragment implements
- View.OnLayoutChangeListener, WearableListView.ClickListener {
-
- private static final int ITEM_CHANGE_DURATION_MS = 120;
-
- private static final String TAG = "TitledSettingsFragment";
- private int mInitialHeaderHeight;
-
- protected TextView mHeader;
- protected TextView mDetails;
- protected WearableListView mWheel;
-
- private int mCharLimitShortTitle;
- private int mCharLimitLine;
- private int mChinOffset;
-
- private TextWatcher mHeaderTextWatcher = new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {}
-
- @Override
- public void afterTextChanged(Editable editable) {
- adjustHeaderSize();
- }
- };
-
- private void adjustHeaderTranslation() {
- int translation = 0;
- if (mWheel.getChildCount() > 0) {
- translation = mWheel.getCentralViewTop() - mWheel.getChildAt(0).getTop();
- }
-
- float newTranslation = Math.min(Math.max(-mInitialHeaderHeight, -translation), 0);
-
- int position = mWheel.getChildAdapterPosition(mWheel.getChildAt(0));
- if (position == 0 || newTranslation < 0) {
- mHeader.setTranslationY(newTranslation);
- }
- }
-
- @Override
- public void onTopEmptyRegionClick() {
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mCharLimitShortTitle = getResources().getInteger(R.integer.short_title_length);
- mCharLimitLine = getResources().getInteger(R.integer.char_limit_per_line);
- }
-
- @Override
- public void onLayoutChange(View view, int left, int top, int right, int bottom, int oldLeft,
- int oldTop, int oldRight, int oldBottom) {
- if (view == mHeader) {
- mInitialHeaderHeight = bottom - top;
- if (ViewUtils.getIsCircular(getContext())) {
- // We are adding more margin on circular screens, so we need to account for it and use
- // it for hiding the header.
- mInitialHeaderHeight +=
- ((ViewGroup.MarginLayoutParams) view.getLayoutParams()).topMargin;
- }
- } else if (view == mWheel) {
- adjustHeaderTranslation();
- }
- }
-
- protected void initializeLayout(RecyclerView.Adapter adapter) {
- View v = getView();
- mWheel = (WearableListView) v.findViewById(R.id.wheel);
-
- mHeader = (TextView) v.findViewById(R.id.header);
- mHeader.addOnLayoutChangeListener(this);
- mHeader.addTextChangedListener(mHeaderTextWatcher);
-
- mDetails = (TextView) v.findViewById(R.id.details);
- mDetails.addOnLayoutChangeListener(this);
-
- mWheel.setAdapter(adapter);
- mWheel.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- }
-
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- adjustHeaderTranslation();
- }
- });
- mWheel.setClickListener(this);
- mWheel.addOnLayoutChangeListener(this);
-
- // Decrease item change animation duration to approximately half of the default duration.
- RecyclerView.ItemAnimator itemAnimator = mWheel.getItemAnimator();
- itemAnimator.setChangeDuration(ITEM_CHANGE_DURATION_MS);
-
- adjustHeaderSize();
-
- positionOnCircular(getContext(), mHeader, mDetails, mWheel);
- }
-
- public void positionOnCircular(Context context, View header, View details,
- final ViewGroup wheel) {
- if (ViewUtils.getIsCircular(context)) {
- LinearLayout.LayoutParams params =
- (LinearLayout.LayoutParams) header.getLayoutParams();
- params.topMargin = (int) context.getResources().getDimension(
- R.dimen.settings_header_top_margin_circular);
- // Note that the margins are made symmetrical here. Since they're symmetrical we choose
- // the smaller value to maximize usable width.
- final int margin = (int) Math.min(context.getResources().getDimension(
- R.dimen.round_content_padding_left), context.getResources().getDimension(
- R.dimen.round_content_padding_right));
- params.leftMargin = margin;
- params.rightMargin = margin;
- params.gravity = Gravity.CENTER_HORIZONTAL;
- header.setLayoutParams(params);
- details.setLayoutParams(params);
-
- if (header instanceof TextView) {
- ((TextView) header).setGravity(Gravity.CENTER);
- }
- if (details instanceof TextView) {
- ((TextView) details).setGravity(Gravity.CENTER);
- }
-
- final int leftPadding = (int) context.getResources().getDimension(
- R.dimen.round_content_padding_left);
- final int rightPadding = (int) context.getResources().getDimension(
- R.dimen.round_content_padding_right);
- final int topPadding = (int) context.getResources().getDimension(
- R.dimen.settings_wearable_list_view_vertical_padding_round);
- final int bottomPadding = (int) context.getResources().getDimension(
- R.dimen.settings_wearable_list_view_vertical_padding_round);
- wheel.setPadding(leftPadding, topPadding, rightPadding, mChinOffset + bottomPadding);
- wheel.setClipToPadding(false);
-
- wheel.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
- @Override
- public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
- mChinOffset = insets.getSystemWindowInsetBottom();
- wheel.setPadding(leftPadding, topPadding, rightPadding,
- mChinOffset + bottomPadding);
- // This listener is invoked after each time we navigate to SettingsActivity and
- // it keeps adding padding. We need to disable it after the first update.
- v.setOnApplyWindowInsetsListener(null);
- return insets.consumeSystemWindowInsets();
- }
- });
- } else {
- int leftPadding = (int) context.getResources().getDimension(
- R.dimen.content_padding_left);
- wheel.setPadding(leftPadding, wheel.getPaddingTop(), wheel.getPaddingRight(),
- wheel.getPaddingBottom());
- }
- }
-
- private void adjustHeaderSize() {
- int length = mHeader.length();
-
- if (length <= mCharLimitShortTitle) {
- mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getResources().getDimensionPixelSize(
- R.dimen.setting_short_header_text_size));
- } else {
- mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getResources().getDimensionPixelSize(
- R.dimen.setting_long_header_text_size));
- }
-
- boolean singleLine = length <= mCharLimitLine;
-
- float height = getResources().getDimension(R.dimen.settings_header_base_height);
- if (!singleLine) {
- height += getResources().getDimension(R.dimen.setting_header_extra_line_height);
- }
- mHeader.setMinHeight((int) height);
-
- LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mHeader.getLayoutParams();
- final Context context = getContext();
- if (!singleLine) {
- // Make the top margin a little bit smaller so there is more space for the title.
- if (ViewUtils.getIsCircular(context)) {
- params.topMargin = getResources().getDimensionPixelSize(
- R.dimen.settings_header_top_margin_circular_multiline);
- } else {
- params.topMargin = getResources().getDimensionPixelSize(
- R.dimen.settings_header_top_margin_multiline);
- }
- } else {
- if (ViewUtils.getIsCircular(context)) {
- params.topMargin = getResources().getDimensionPixelSize(
- R.dimen.settings_header_top_margin_circular);
- } else {
- params.topMargin = getResources().getDimensionPixelSize(
- R.dimen.settings_header_top_margin);
- }
- }
- mHeader.setLayoutParams(params);
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java b/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java
deleted file mode 100644
index 0800c14c..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-* Copyright (C) 2015 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package com.android.packageinstaller.permission.ui.wear;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.os.Bundle;
-
-import com.android.packageinstaller.R;
-
-public final class WarningConfirmationActivity extends Activity {
- public final static String EXTRA_WARNING_MESSAGE = "EXTRA_WARNING_MESSAGE";
- // Saved index that will be returned in the onActivityResult() callback
- public final static String EXTRA_INDEX = "EXTRA_INDEX";
-
- private ConfirmationViewHandler mViewHandler;
- private String mMessage;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mMessage = getIntent().getStringExtra(EXTRA_WARNING_MESSAGE);
-
- mViewHandler = new ConfirmationViewHandler(this) {
- @Override // ConfirmationViewHandler
- public int getButtonBarMode() {
- return MODE_VERTICAL_BUTTONS;
- }
-
- @Override
- public void onButton1() {
- setResultAndFinish(Activity.RESULT_CANCELED);
- }
-
- @Override
- public void onButton2() {
- setResultAndFinish(Activity.RESULT_OK);
- }
-
- @Override
- public void onButton3() {
- // no-op
- }
-
- @Override
- public CharSequence getVerticalButton1Text() {
- return getString(R.string.cancel);
- }
-
- @Override
- public CharSequence getVerticalButton2Text() {
- return getString(R.string.grant_dialog_button_deny_anyway);
- }
-
- @Override
- public CharSequence getVerticalButton3Text() {
- return null;
- }
-
- @Override
- public Drawable getVerticalButton1Icon() {
- return getDrawable(R.drawable.cancel_button);
- }
-
- @Override
- public Drawable getVerticalButton2Icon() {
- return getDrawable(R.drawable.confirm_button);
- }
-
- @Override
- public Drawable getVerticalButton3Icon() {
- return null;
- }
-
- @Override
- public CharSequence getCurrentPageText() {
- return null;
- }
-
- @Override
- public Icon getPermissionIcon() {
- return null;
- }
-
- @Override
- public CharSequence getMessage() {
- return mMessage;
- }
- };
-
- setContentView(mViewHandler.createView());
- mViewHandler.invalidate();
- }
-
- private void setResultAndFinish(int result) {
- Intent intent = new Intent();
- intent.putExtra(EXTRA_INDEX, getIntent().getIntExtra(EXTRA_INDEX, -1));
- setResult(result, intent);
- finish();
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java
deleted file mode 100644
index 02c203b3..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.support.wearable.view.WearableListView;
-
-public interface ExtendedOnCenterProximityListener
- extends WearableListView.OnCenterProximityListener {
- float getProximityMinValue();
-
- float getProximityMaxValue();
-
- float getCurrentProximityValue();
-
- void setScalingAnimatorValue(float value);
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java
deleted file mode 100644
index 6b725419..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.animation.ObjectAnimator;
-import android.support.wearable.view.WearableListView;
-import android.view.View;
-
-
-public class ExtendedViewHolder extends WearableListView.ViewHolder {
- public static final long DEFAULT_ANIMATION_DURATION = 150;
-
- private ObjectAnimator mScalingUpAnimator;
-
- private ObjectAnimator mScalingDownAnimator;
-
- private float mMinValue;
-
- private float mMaxValue;
-
- public ExtendedViewHolder(View itemView) {
- super(itemView);
- if (itemView instanceof ExtendedOnCenterProximityListener) {
- ExtendedOnCenterProximityListener item =
- (ExtendedOnCenterProximityListener) itemView;
- mMinValue = item.getProximityMinValue();
- item.setScalingAnimatorValue(mMinValue);
- mMaxValue = item.getProximityMaxValue();
- mScalingUpAnimator = ObjectAnimator.ofFloat(item, "scalingAnimatorValue", mMinValue,
- mMaxValue);
- mScalingUpAnimator.setDuration(DEFAULT_ANIMATION_DURATION);
- mScalingDownAnimator = ObjectAnimator.ofFloat(item, "scalingAnimatorValue",
- mMaxValue, mMinValue);
- mScalingDownAnimator.setDuration(DEFAULT_ANIMATION_DURATION);
- }
- }
-
- public void onCenterProximity(boolean isCentralItem, boolean animate) {
- if (!(itemView instanceof ExtendedOnCenterProximityListener)) {
- return;
- }
- ExtendedOnCenterProximityListener item = (ExtendedOnCenterProximityListener) itemView;
- if (isCentralItem) {
- if (animate) {
- mScalingDownAnimator.cancel();
- if (!mScalingUpAnimator.isRunning()) {
- mScalingUpAnimator.setFloatValues(item.getCurrentProximityValue(),
- mMaxValue);
- mScalingUpAnimator.start();
- }
- } else {
- mScalingUpAnimator.cancel();
- item.setScalingAnimatorValue(item.getProximityMaxValue());
- }
- } else {
- mScalingUpAnimator.cancel();
- if (animate) {
- if (!mScalingDownAnimator.isRunning()) {
- mScalingDownAnimator.setFloatValues(item.getCurrentProximityValue(),
- mMinValue);
- mScalingDownAnimator.start();
- }
- } else {
- mScalingDownAnimator.cancel();
- item.setScalingAnimatorValue(item.getProximityMinValue());
- }
- }
- super.onCenterProximity(isCentralItem, animate);
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java
deleted file mode 100644
index 0e0adcbb..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.support.wearable.view.WearableListView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.model.AppPermissionGroup;
-
-public final class PermissionsSettingsAdapter extends SettingsAdapter<AppPermissionGroup> {
- private Resources mRes;
-
- public PermissionsSettingsAdapter(Context context) {
- super(context, R.layout.permissions_settings_item);
- mRes = context.getResources();
- }
-
- @Override
- public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- return new PermissionsViewHolder(new PermissionsSettingsItem(parent.getContext()));
- }
-
- @Override
- public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
- super.onBindViewHolder(holder, position);
- PermissionsViewHolder viewHolder = (PermissionsViewHolder) holder;
- AppPermissionGroup group = get(position).data;
-
- if (group.isPolicyFixed()) {
- viewHolder.imageView.setEnabled(false);
- viewHolder.textView.setEnabled(false);
- viewHolder.state.setEnabled(false);
- viewHolder.state.setText(
- mRes.getString(R.string.permission_summary_enforced_by_policy));
- } else {
- viewHolder.imageView.setEnabled(true);
- viewHolder.textView.setEnabled(true);
- viewHolder.state.setEnabled(true);
-
- if (group.areRuntimePermissionsGranted()) {
- viewHolder.state.setText(R.string.generic_enabled);
- } else {
- viewHolder.state.setText(R.string.generic_disabled);
- }
- }
- }
-
- private static final class PermissionsViewHolder extends SettingsAdapter.SettingsItemHolder {
- public final TextView state;
-
- public PermissionsViewHolder(View view) {
- super(view);
- state = (TextView) view.findViewById(R.id.state);
- }
- }
-
- private class PermissionsSettingsItem extends SettingsItem {
- private final TextView mState;
- private final float mCenteredAlpha = 1.0f;
- private final float mNonCenteredAlpha = 0.5f;
-
- public PermissionsSettingsItem (Context context) {
- super(context);
- mState = (TextView) findViewById(R.id.state);
- }
-
- @Override
- public void onCenterPosition(boolean animate) {
- mImage.setAlpha(mImage.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
- mText.setAlpha(mText.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
- mState.setAlpha(mState.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
- }
-
- @Override
- public void onNonCenterPosition(boolean animate) {
- mImage.setAlpha(mNonCenteredAlpha);
- mText.setAlpha(mNonCenteredAlpha);
- mState.setAlpha(mNonCenteredAlpha);
- }
- }
-}
-
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java
deleted file mode 100644
index baf1a2b4..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.content.Context;
-import android.support.wearable.view.CircledImageView;
-import android.support.wearable.view.WearableListView;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-
-import java.util.ArrayList;
-
-/**
- * Common adapter for settings views. Maintains a list of 'Settings', consisting of a name,
- * icon and optional activity-specific data.
- */
-public class SettingsAdapter<T> extends WearableListView.Adapter {
- private static final String TAG = "SettingsAdapter";
- private final Context mContext;
-
- public static final class Setting<S> {
- public static final int ID_INVALID = -1;
-
- public final int id;
- public int nameResourceId;
- public CharSequence name;
- public int iconResource;
- public boolean inProgress;
- public S data;
-
- public Setting(CharSequence name, int iconResource, S data) {
- this(name, iconResource, data, ID_INVALID);
- }
-
- public Setting(CharSequence name, int iconResource, S data, int id) {
- this.name = name;
- this.iconResource = iconResource;
- this.data = data;
- this.inProgress = false;
- this.id = id;
- }
-
- public Setting(int nameResource, int iconResource, S data, int id) {
- this.nameResourceId = nameResource;
- this.iconResource = iconResource;
- this.data = data;
- this.inProgress = false;
- this.id = id;
- }
-
- public Setting(int nameResource, int iconResource, int id) {
- this.nameResourceId = nameResource;
- this.iconResource = iconResource;
- this.data = null;
- this.inProgress = false;
- this.id = id;
- }
-
- public Setting(CharSequence name, int iconResource, int id) {
- this(name, iconResource, null, id);
- }
-
- }
-
- private final int mItemLayoutId;
- private final float mDefaultCircleRadiusPercent;
- private final float mSelectedCircleRadiusPercent;
-
- protected ArrayList<Setting<T>> mSettings = new ArrayList<Setting<T>>();
-
- public SettingsAdapter(Context context, int itemLayoutId) {
- mContext = context;
- mItemLayoutId = itemLayoutId;
- mDefaultCircleRadiusPercent = context.getResources().getFraction(
- R.dimen.default_settings_circle_radius_percent, 1, 1);
- mSelectedCircleRadiusPercent = context.getResources().getFraction(
- R.dimen.selected_settings_circle_radius_percent, 1, 1);
- }
-
- @Override
- public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- return new SettingsItemHolder(new SettingsItem(parent.getContext()));
- }
-
- @Override
- public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
- Setting<T> setting = mSettings.get(position);
- if (setting.iconResource == -1) {
- ((SettingsItemHolder) holder).imageView.setVisibility(View.GONE);
- } else {
- ((SettingsItemHolder) holder).imageView.setVisibility(View.VISIBLE);
- ((SettingsItemHolder) holder).imageView.setImageResource(
- mSettings.get(position).iconResource);
- }
- Log.d(TAG, "onBindViewHolder " + setting.name + " " + setting.id + " " + setting
- .nameResourceId);
- if (setting.name == null && setting.nameResourceId != 0) {
- setting.name = mContext.getString(setting.nameResourceId);
- }
- ((SettingsItemHolder) holder).textView.setText(setting.name);
- }
-
- @Override
- public int getItemCount() {
- return mSettings.size();
- }
-
- public void addSetting(CharSequence name, int iconResource) {
- addSetting(name, iconResource, null);
- }
-
- public void addSetting(CharSequence name, int iconResource, T intent) {
- addSetting(mSettings.size(), name, iconResource, intent);
- }
-
- public void addSetting(int index, CharSequence name, int iconResource, T intent) {
- addSetting(Setting.ID_INVALID, index, name, iconResource, intent);
- }
-
- public void addSetting(int id, int index, CharSequence name, int iconResource, T intent) {
- mSettings.add(index, new Setting<T>(name, iconResource, intent, id));
- notifyItemInserted(index);
- }
-
- public void addSettingDontNotify(Setting<T> setting) {
- mSettings.add(setting);
- }
-
- public void addSetting(Setting<T> setting) {
- mSettings.add(setting);
- notifyItemInserted(mSettings.size() - 1);
- }
-
- public void addSetting(int index, Setting<T> setting) {
- mSettings.add(index, setting);
- notifyItemInserted(index);
- }
-
- /**
- * Returns the index of the setting in the adapter based on the ID supplied when it was
- * originally added.
- * @param id the setting's id
- * @return index in the adapter of the setting. -1 if not found.
- */
- public int findSetting(int id) {
- for (int i = mSettings.size() - 1; i >= 0; --i) {
- Setting setting = mSettings.get(i);
-
- if (setting.id == id) {
- return i;
- }
- }
-
- return -1;
- }
-
- /**
- * Removes a setting at the given index.
- * @param index the index of the setting to be removed
- */
- public void removeSetting(int index) {
- mSettings.remove(index);
- notifyDataSetChanged();
- }
-
- public void clearSettings() {
- mSettings.clear();
- notifyDataSetChanged();
- }
-
- /**
- * Updates a setting in place.
- * @param index the index of the setting
- * @param name the updated setting name
- * @param iconResource the update setting icon
- * @param intent the updated intent for the setting
- */
- public void updateSetting(int index, CharSequence name, int iconResource, T intent) {
- Setting<T> setting = mSettings.get(index);
- setting.iconResource = iconResource;
- setting.name = name;
- setting.data = intent;
- notifyItemChanged(index);
- }
-
- public Setting<T> get(int position) {
- return mSettings.get(position);
- }
-
- protected static class SettingsItemHolder extends ExtendedViewHolder {
- public final CircledImageView imageView;
- public final TextView textView;
-
- public SettingsItemHolder(View itemView) {
- super(itemView);
-
- imageView = ((CircledImageView) itemView.findViewById(R.id.image));
- textView = ((TextView) itemView.findViewById(R.id.text));
- }
- }
-
- protected class SettingsItem extends FrameLayout implements ExtendedOnCenterProximityListener {
-
- protected final CircledImageView mImage;
- protected final TextView mText;
-
- public SettingsItem(Context context) {
- super(context);
- View view = View.inflate(context, mItemLayoutId, null);
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- FrameLayout.LayoutParams.MATCH_PARENT,
- FrameLayout.LayoutParams.MATCH_PARENT);
- params.gravity = Gravity.CENTER_VERTICAL;
- addView(view, params);
- mImage = (CircledImageView) findViewById(R.id.image);
- mText = (TextView) findViewById(R.id.text);
- }
-
- @Override
- public float getProximityMinValue() {
- return mDefaultCircleRadiusPercent;
- }
-
- @Override
- public float getProximityMaxValue() {
- return mSelectedCircleRadiusPercent;
- }
-
- @Override
- public float getCurrentProximityValue() {
- return mImage.getCircleRadiusPressedPercent();
- }
-
- @Override
- public void setScalingAnimatorValue(float value) {
- mImage.setCircleRadiusPercent(value);
- mImage.setCircleRadiusPressedPercent(value);
- }
-
- @Override
- public void onCenterPosition(boolean animate) {
- mImage.setAlpha(1f);
- mText.setAlpha(1f);
- }
-
- @Override
- public void onNonCenterPosition(boolean animate) {
- mImage.setAlpha(0.5f);
- mText.setAlpha(0.5f);
- }
-
- TextView getTextView() {
- return mText;
- }
- }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java
deleted file mode 100644
index cf1c0fd0..00000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * Utility to determine screen shape
- */
-public class ViewUtils {
-
- public static boolean getIsCircular(Context context) {
- return context.getResources().getConfiguration().isScreenRound();
- }
-
- /**
- * Set the given {@code view} and all descendants to the given {@code enabled} state.
- *
- * @param view the parent view of a subtree of components whose enabled state must be set
- * @param enabled the new enabled state of the subtree of components
- */
- public static void setEnabled(View view, boolean enabled) {
- view.setEnabled(enabled);
-
- if (view instanceof ViewGroup) {
- final ViewGroup viewGroup = (ViewGroup) view;
- for (int i = 0; i < viewGroup.getChildCount(); i++) {
- setEnabled(viewGroup.getChildAt(i), enabled);
- }
- }
- }
-}
diff --git a/src/com/android/packageinstaller/permission/utils/ArrayUtils.java b/src/com/android/packageinstaller/permission/utils/ArrayUtils.java
index 4b7a3947..2af641bc 100644
--- a/src/com/android/packageinstaller/permission/utils/ArrayUtils.java
+++ b/src/com/android/packageinstaller/permission/utils/ArrayUtils.java
@@ -16,6 +16,8 @@
package com.android.packageinstaller.permission.utils;
+import android.text.TextUtils;
+
import java.util.Objects;
public final class ArrayUtils {
@@ -42,4 +44,20 @@ public final class ArrayUtils {
}
return -1;
}
+
+ public static String[] appendString(String[] cur, String val) {
+ if (cur == null) {
+ return new String[] { val };
+ }
+ final int N = cur.length;
+ for (int i = 0; i < N; i++) {
+ if (TextUtils.equals(cur[i], val)) {
+ return cur;
+ }
+ }
+ String[] ret = new String[N + 1];
+ System.arraycopy(cur, 0, ret, 0, N);
+ ret[N] = val;
+ return ret;
+ }
}
diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java
index 22663e13..c2da5824 100644
--- a/src/com/android/packageinstaller/permission/utils/Utils.java
+++ b/src/com/android/packageinstaller/permission/utils/Utils.java
@@ -145,4 +145,14 @@ public final class Utils {
return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0
&& !launcherPkgs.contains(info.packageName);
}
+
+ public static boolean areGroupPermissionsIndividuallyControlled(Context context, String group) {
+ if (!context.getResources().getBoolean(
+ com.android.internal.R.bool.config_permissionReviewRequired)) {
+ return false;
+ }
+ return Manifest.permission_group.SMS.equals(group)
+ || Manifest.permission_group.PHONE.equals(group)
+ || Manifest.permission_group.CONTACTS.equals(group);
+ }
}
diff --git a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
index 2d4744c2..6f4e2bcf 100644
--- a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
+++ b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
@@ -298,16 +298,6 @@ public class WearPackageInstallerService extends Service {
}
}
- // Check permissions on both the new wearable package and also on the already installed
- // wearable package.
- // If the app is targeting API level 23, we will also start a service in ClockworkHome
- // which will ultimately prompt the user to accept/reject permissions.
- if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion,
- permUri, wearablePerms, tempFile)) {
- Log.w(TAG, "Wearable does not have enough permissions.");
- return;
- }
-
// Check that the wearable has all the features.
boolean hasAllFeatures = true;
if (pkg.reqFeatures != null) {
@@ -325,6 +315,16 @@ public class WearPackageInstallerService extends Service {
return;
}
+ // Check permissions on both the new wearable package and also on the already installed
+ // wearable package.
+ // If the app is targeting API level 23, we will also start a service in ClockworkHome
+ // which will ultimately prompt the user to accept/reject permissions.
+ if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion,
+ permUri, wearablePerms, tempFile)) {
+ Log.w(TAG, "Wearable does not have enough permissions.");
+ return;
+ }
+
// Finally install the package.
ParcelFileDescriptor fd = getContentResolver().openFileDescriptor(assetUri, "r");
PackageInstallerFactory.getPackageInstaller(this).install(packageName, fd,
@@ -355,11 +355,27 @@ public class WearPackageInstallerService extends Service {
final String packageName = WearPackageArgs.getPackageName(argsBundle);
final PackageManager pm = getPackageManager();
- PowerManager.WakeLock lock = getLock(this.getApplicationContext());
- pm.deletePackage(packageName, new PackageDeleteObserver(lock, startId),
- PackageManager.DELETE_ALL_USERS);
- startPermsServiceForUninstall(packageName);
- Log.i(TAG, "Sent delete request for " + packageName);
+ try {
+ // Result ignored.
+ pm.getPackageInfo(packageName, 0);
+
+ // Found package, send uninstall request.
+ PowerManager.WakeLock lock = getLock(this.getApplicationContext());
+
+ try {
+ pm.deletePackage(packageName, new PackageDeleteObserver(lock, startId),
+ PackageManager.DELETE_ALL_USERS);
+ } catch (IllegalArgumentException e) {
+ // Couldn't find the package, no need to call uninstall.
+ Log.w(TAG, "Could not find package, not deleting " + packageName, e);
+ }
+
+ startPermsServiceForUninstall(packageName);
+ Log.i(TAG, "Sent delete request for " + packageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ // Couldn't find the package, no need to call uninstall.
+ Log.w(TAG, "Could not find package, not deleting " + packageName, e);
+ }
}
private boolean checkPermissions(PackageParser.Package pkg, int companionSdkVersion,