summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-05-15 23:21:05 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-05-15 23:21:06 +0000
commit0c9dbf507b53a12bdf577ff3e55c1686a2e089de (patch)
tree3849f2add85d7abe11151436b3f03f99783157a8
parente724c7b6376be660abf2113f97c7cbfc34515da8 (diff)
parentc857f90590e7d7fcffa89511982eb33afd34805f (diff)
downloadandroid_packages_apps_Dialer-0c9dbf507b53a12bdf577ff3e55c1686a2e089de.tar.gz
android_packages_apps_Dialer-0c9dbf507b53a12bdf577ff3e55c1686a2e089de.tar.bz2
android_packages_apps_Dialer-0c9dbf507b53a12bdf577ff3e55c1686a2e089de.zip
Merge "Update Dialer to v10 RC32" into oc-dev
-rw-r--r--Android.mk7
-rw-r--r--java/com/android/contacts/common/ContactPhotoManager.java2
-rw-r--r--java/com/android/contacts/common/compat/TelephonyManagerCompat.java3
-rw-r--r--java/com/android/contacts/common/dialog/ClearFrequentsDialog.java2
-rw-r--r--java/com/android/contacts/common/list/DirectoryListLoader.java19
-rw-r--r--java/com/android/contacts/common/model/ContactLoader.java9
-rw-r--r--java/com/android/dialer/about/AboutPhoneFragment.java64
-rw-r--r--java/com/android/dialer/about/AndroidManifest.xml17
-rw-r--r--java/com/android/dialer/about/License.java99
-rw-r--r--java/com/android/dialer/about/LicenseActivity.java87
-rw-r--r--java/com/android/dialer/about/LicenseLoader.java57
-rw-r--r--java/com/android/dialer/about/LicenseMenuActivity.java101
-rw-r--r--java/com/android/dialer/about/Licenses.java106
-rw-r--r--java/com/android/dialer/about/res/layout/dummy_placeholder.xml21
-rw-r--r--java/com/android/dialer/about/res/layout/license.xml40
-rw-r--r--java/com/android/dialer/about/res/layout/license_menu_activity.xml35
-rw-r--r--java/com/android/dialer/about/res/layout/license_scrollview.xml34
-rw-r--r--java/com/android/dialer/about/res/raw/keep.xml19
-rw-r--r--java/com/android/dialer/about/res/raw/third_party_license_metadata34
-rw-r--r--java/com/android/dialer/about/res/raw/third_party_licenses6414
-rw-r--r--java/com/android/dialer/about/res/values-af/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-am/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ar/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-az/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-be/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-bg/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-bn/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-bs/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ca/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-cs/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-da/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-de/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-el/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-en-rAU/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-en-rGB/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-en-rIN/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-es-rUS/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-es/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-et/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-eu/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-fa/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-fi/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-fr-rCA/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-fr/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-gl/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-gu/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-hi/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-hr/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-hu/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-hy/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-in/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-is/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-it/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-iw/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ja/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ka/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-kk/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-km/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-kn/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ko/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ky/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-lo/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-lt/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-lv/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-mk/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ml/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-mn/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-mr/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ms/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-my/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-nb/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ne/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-nl/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-no/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-pa/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-pl/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-pt-rBR/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-pt-rPT/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-pt/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ro/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ru/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-si/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-sk/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-sl/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-sq/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-sr/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-sv/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-sw/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ta/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-te/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-th/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-tl/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-tr/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-uk/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-ur/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-uz/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-vi/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-zh-rCN/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-zh-rHK/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-zh-rTW/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values-zu/strings.xml14
-rw-r--r--java/com/android/dialer/about/res/values/strings.xml39
-rw-r--r--java/com/android/dialer/about/res/xml/about_phone_fragment.xml31
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java3
-rw-r--r--java/com/android/dialer/app/calllog/CallLogAdapter.java7
-rw-r--r--java/com/android/dialer/app/calllog/CallLogFragment.java17
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java42
-rw-r--r--java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java2
-rw-r--r--java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java5
-rw-r--r--java/com/android/dialer/app/calllog/CallLogNotificationsService.java89
-rw-r--r--java/com/android/dialer/app/calllog/CallLogReceiver.java6
-rw-r--r--java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java61
-rw-r--r--java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java38
-rw-r--r--java/com/android/dialer/app/calllog/MissedCallNotifier.java23
-rw-r--r--java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java41
-rw-r--r--java/com/android/dialer/app/calllog/VoicemailQueryHandler.java15
-rw-r--r--java/com/android/dialer/app/dialpad/DialpadFragment.java2
-rw-r--r--java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java2
-rw-r--r--java/com/android/dialer/app/list/ListsFragment.java14
-rw-r--r--java/com/android/dialer/app/list/OldSpeedDialFragment.java4
-rw-r--r--java/com/android/dialer/app/list/SearchFragment.java2
-rw-r--r--java/com/android/dialer/app/res/values-af/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-am/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ar/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-az/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-be/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-bg/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-bn/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-bs/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ca/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-cs/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-da/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-de/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-el/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-en-rAU/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-en-rGB/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-en-rIN/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-es-rUS/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-es/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-et/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-eu/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-fa/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-fi/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-fr-rCA/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-fr/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-gl/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-gu/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-hi/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-hr/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-hu/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-hy/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-in/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-is/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-it/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-iw/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ja/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ka/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-kk/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-km/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-kn/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ko/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ky/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-lo/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-lt/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-lv/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-mk/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ml/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-mn/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-mr/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ms/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-my/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-nb/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ne/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-nl/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-no/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-pa/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-pl/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-pt-rBR/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-pt-rPT/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-pt/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ro/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ru/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-si/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-sk/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-sl/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-sq/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-sr/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-sv/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-sw/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ta/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-te/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-th/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-tl/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-tr/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-uk/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-ur/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-uz/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-vi/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-zh-rCN/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-zh-rHK/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-zh-rTW/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values-zu/strings.xml2
-rw-r--r--java/com/android/dialer/app/res/values/strings.xml3
-rw-r--r--java/com/android/dialer/app/settings/DialerSettingsActivity.java6
-rw-r--r--java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java67
-rw-r--r--java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java5
-rw-r--r--java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java5
-rw-r--r--java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java16
-rw-r--r--java/com/android/dialer/blocking/FilteredNumbersUtil.java5
-rw-r--r--java/com/android/dialer/calldetails/res/layout/contact_container.xml4
-rw-r--r--java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java4
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java6
-rw-r--r--java/com/android/dialer/common/ConfigProviderBindings.java8
-rw-r--r--java/com/android/dialer/constants/ScheduledJobIds.java5
-rw-r--r--java/com/android/dialer/contactsfragment/ContactsFragment.java6
-rw-r--r--java/com/android/dialer/database/DialerDatabaseHelper.java2
-rw-r--r--java/com/android/dialer/logging/dialer_impression.proto15
-rw-r--r--java/com/android/dialer/notification/NotificationChannelManager.java4
-rw-r--r--java/com/android/dialer/oem/CequintCallerIdManager.java6
-rw-r--r--java/com/android/dialer/persistentlog/PersistentLogFileHandler.java24
-rw-r--r--java/com/android/dialer/persistentlog/PersistentLogger.java4
-rw-r--r--java/com/android/dialer/phonenumbercache/ContactInfoHelper.java2
-rw-r--r--java/com/android/dialer/theme/res/values-af/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-am/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ar/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-az/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-be/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-bg/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-bn/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-bs/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ca/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-cs/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-da/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-de/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-el/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-en-rAU/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-en-rGB/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-en-rIN/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-es-rUS/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-es/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-et/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-eu/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-fa/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-fi/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-fr-rCA/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-fr/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-gl/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-gu/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-hi/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-hr/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-hu/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-hy/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-in/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-is/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-it/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-iw/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ja/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ka/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-kk/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-km/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-kn/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ko/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ky/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-lo/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-lt/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-lv/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-mk/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ml/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-mn/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-mr/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ms/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-my/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-nb/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ne/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-nl/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-no/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-pa/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-pl/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-pt-rBR/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-pt-rPT/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-pt/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ro/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ru/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-si/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-sk/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-sl/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-sq/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-sr/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-sv/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-sw/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ta/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-te/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-th/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-tl/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-tr/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-uk/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-ur/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-uz/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-vi/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-zh-rCN/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-zh-rHK/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-zh-rTW/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values-zu/strings.xml4
-rw-r--r--java/com/android/dialer/theme/res/values/strings.xml10
-rw-r--r--java/com/android/dialer/util/PermissionsUtil.java27
-rw-r--r--java/com/android/incallui/AnswerScreenPresenter.java3
-rw-r--r--java/com/android/incallui/CallCardPresenter.java7
-rw-r--r--java/com/android/incallui/CallerInfoUtils.java2
-rw-r--r--java/com/android/incallui/ConferenceParticipantListAdapter.java7
-rw-r--r--java/com/android/incallui/InCallActivity.java6
-rw-r--r--java/com/android/incallui/InCallActivityCommon.java62
-rw-r--r--java/com/android/incallui/InCallPresenter.java8
-rw-r--r--java/com/android/incallui/StatusBarNotifier.java3
-rw-r--r--java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java15
-rw-r--r--java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java5
-rw-r--r--java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java3
-rw-r--r--java/com/android/incallui/call/CallList.java22
-rw-r--r--java/com/android/incallui/call/DialerCall.java47
-rw-r--r--java/com/android/incallui/call/DialerCallListener.java2
-rw-r--r--java/com/android/incallui/contactgrid/ContactGridManager.java63
-rw-r--r--java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml9
-rw-r--r--java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java10
-rw-r--r--java/com/android/incallui/spam/SpamCallListListener.java4
-rw-r--r--java/com/android/incallui/telecomeventui/AndroidManifest.xml15
-rw-r--r--java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java179
-rw-r--r--java/com/android/incallui/telecomeventui/res/layout/frag_international_call_on_wifi_dialog.xml43
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-af/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-am/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ar/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-az/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-b+sr+Latn/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-be/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-bg/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-bn/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-bs/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ca/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-cs/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-da/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-de/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-el/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-en-rAU/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-en-rGB/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-en-rIN/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-es-rUS/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-es/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-et/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-eu/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-fa/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-fi/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-fr-rCA/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-fr/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-gl/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-gu/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-hi/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-hr/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-hu/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-hy/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-in/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-is/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-it/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-iw/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ja/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ka/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-kk/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-km/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-kn/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ko/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ky/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-lo/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-lt/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-lv/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-mk/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ml/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-mn/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-mr/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ms/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-my/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-nb/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ne/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-nl/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-no/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-pa/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-pl/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-pt-rBR/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-pt-rPT/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-pt/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ro/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ru/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-si/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-sk/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-sl/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-sq/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-sr/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-sv/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-sw/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ta/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-te/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-th/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-tl/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-tr/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-uk/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-ur/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-uz/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-vi/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-zh-rCN/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-zh-rHK/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-zh-rTW/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values-zu/strings.xml23
-rw-r--r--java/com/android/incallui/telecomeventui/res/values/strings.xml24
-rw-r--r--java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java2
-rw-r--r--java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml33
-rw-r--r--java/com/android/incallui/video/impl/res/values-land/styles.xml3
-rw-r--r--java/com/android/incallui/video/impl/res/values/styles.xml3
-rw-r--r--java/com/android/voicemail/impl/ActivationTask.java49
-rw-r--r--java/com/android/voicemail/impl/AndroidManifest.xml5
-rw-r--r--java/com/android/voicemail/impl/DeviceProvisionedJobService.java85
-rw-r--r--java/com/android/voicemail/impl/OmtpService.java6
-rw-r--r--java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java3
-rw-r--r--java/com/android/voicemail/impl/TelephonyVvmConfigManager.java24
-rw-r--r--java/com/android/voicemail/impl/res/xml/vvm_config.xml64
-rw-r--r--java/com/android/voicemail/impl/scheduling/TaskExecutor.java9
-rw-r--r--java/com/android/voicemail/impl/scheduling/TaskReceiver.java5
-rw-r--r--java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java35
426 files changed, 11867 insertions, 371 deletions
diff --git a/Android.mk b/Android.mk
index e1e9ef5da..1ed8ba7ef 100644
--- a/Android.mk
+++ b/Android.mk
@@ -41,6 +41,7 @@ RES_DIRS := \
assets/product/res \
assets/quantum/res \
$(BASE_DIR)/contacts/common/res \
+ $(BASE_DIR)/dialer/about/res \
$(BASE_DIR)/dialer/app/res \
$(BASE_DIR)/dialer/app/voicemail/error/res \
$(BASE_DIR)/dialer/blocking/res \
@@ -77,6 +78,7 @@ RES_DIRS := \
$(BASE_DIR)/incallui/incall/impl/res \
$(BASE_DIR)/incallui/res \
$(BASE_DIR)/incallui/sessiondata/res \
+ $(BASE_DIR)/incallui/telecomeventui/res \
$(BASE_DIR)/incallui/video/impl/res \
$(BASE_DIR)/incallui/video/protocol/res \
$(BASE_DIR)/incallui/wifi/res \
@@ -87,6 +89,7 @@ RES_DIRS := \
# find . -type f -name "AndroidManifest.xml" | uniq | sort
DIALER_MANIFEST_FILES += \
$(BASE_DIR)/contacts/common/AndroidManifest.xml \
+ $(BASE_DIR)/dialer/about/AndroidManifest.xml \
$(BASE_DIR)/dialer/app/AndroidManifest.xml \
$(BASE_DIR)/dialer/app/manifests/activities/AndroidManifest.xml \
$(BASE_DIR)/dialer/app/voicemail/error/AndroidManifest.xml \
@@ -126,6 +129,7 @@ DIALER_MANIFEST_FILES += \
$(BASE_DIR)/incallui/hold/AndroidManifest.xml \
$(BASE_DIR)/incallui/incall/impl/AndroidManifest.xml \
$(BASE_DIR)/incallui/sessiondata/AndroidManifest.xml \
+ $(BASE_DIR)/incallui/telecomeventui/AndroidManifest.xml \
$(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \
$(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \
$(BASE_DIR)/incallui/wifi/AndroidManifest.xml \
@@ -154,6 +158,7 @@ LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.coreui \
--extra-packages com.android.contacts.common \
+ --extra-packages com.android.dialer.about \
--extra-packages com.android.dialer.app \
--extra-packages com.android.dialer.app.voicemail.error \
--extra-packages com.android.dialer.blocking \
@@ -175,6 +180,7 @@ LOCAL_AAPT_FLAGS := \
--extra-packages com.android.dialer.postcall \
--extra-packages com.android.dialer.shortcuts \
--extra-packages com.android.dialer.speeddial \
+ --extra-packages com.android.dialer.theme \
--extra-packages com.android.dialer.util \
--extra-packages com.android.dialer.voicemailstatus \
--extra-packages com.android.dialer.widget \
@@ -194,6 +200,7 @@ LOCAL_AAPT_FLAGS := \
--extra-packages com.android.incallui.incall.impl \
--extra-packages com.android.incallui.maps.impl \
--extra-packages com.android.incallui.sessiondata \
+ --extra-packages com.android.incallui.telecomeventui \
--extra-packages com.android.incallui.video \
--extra-packages com.android.incallui.video.impl \
--extra-packages com.android.incallui.wifi \
diff --git a/java/com/android/contacts/common/ContactPhotoManager.java b/java/com/android/contacts/common/ContactPhotoManager.java
index 652e93637..169348b25 100644
--- a/java/com/android/contacts/common/ContactPhotoManager.java
+++ b/java/com/android/contacts/common/ContactPhotoManager.java
@@ -191,7 +191,7 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 {
Context applicationContext = context.getApplicationContext();
sInstance = createContactPhotoManager(applicationContext);
applicationContext.registerComponentCallbacks(sInstance);
- if (PermissionsUtil.hasContactsPermissions(context)) {
+ if (PermissionsUtil.hasContactsReadPermissions(context)) {
sInstance.preloadPhotosInBackground();
}
}
diff --git a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java b/java/com/android/contacts/common/compat/TelephonyManagerCompat.java
index 84002256a..7e4803ca5 100644
--- a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java
+++ b/java/com/android/contacts/common/compat/TelephonyManagerCompat.java
@@ -41,6 +41,9 @@ public class TelephonyManagerCompat {
public static final String EVENT_CALL_REMOTELY_UNHELD =
"android.telecom.event.CALL_REMOTELY_UNHELD";
+ public static final String EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC =
+ "android.telephony.event.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC";
+
public static final String TELEPHONY_MANAGER_CLASS = "android.telephony.TelephonyManager";
private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
diff --git a/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java b/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
index e96496cda..751490a22 100644
--- a/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
+++ b/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
@@ -48,7 +48,7 @@ public class ClearFrequentsDialog extends DialogFragment {
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- if (!PermissionsUtil.hasContactsPermissions(context)) {
+ if (!PermissionsUtil.hasContactsReadPermissions(context)) {
return;
}
diff --git a/java/com/android/contacts/common/list/DirectoryListLoader.java b/java/com/android/contacts/common/list/DirectoryListLoader.java
index 48b098c07..be62cc7a8 100644
--- a/java/com/android/contacts/common/list/DirectoryListLoader.java
+++ b/java/com/android/contacts/common/list/DirectoryListLoader.java
@@ -25,9 +25,10 @@ import android.net.Uri;
import android.os.Handler;
import android.provider.ContactsContract.Directory;
import android.text.TextUtils;
-import android.util.Log;
import com.android.contacts.common.R;
import com.android.contacts.common.compat.DirectoryCompat;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.util.PermissionsUtil;
/** A specialized loader for the list of directories, see {@link Directory}. */
public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
@@ -38,7 +39,6 @@ public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
public static final int SEARCH_MODE_DATA_SHORTCUT = 3;
// This is a virtual column created for a MatrixCursor.
public static final String DIRECTORY_TYPE = "directoryType";
- private static final String TAG = "ContactEntryListAdapter";
private static final String[] RESULT_PROJECTION = {
Directory._ID, DIRECTORY_TYPE, Directory.DISPLAY_NAME, Directory.PHOTO_SUPPORT,
};
@@ -71,7 +71,13 @@ public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
@Override
protected void onStartLoading() {
- getContext().getContentResolver().registerContentObserver(DirectoryQuery.URI, false, mObserver);
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ getContext()
+ .getContentResolver()
+ .registerContentObserver(DirectoryQuery.URI, false, mObserver);
+ } else {
+ LogUtil.w("DirectoryListLoader.onStartLoading", "contacts permission not available.");
+ }
forceLoad();
}
@@ -141,7 +147,9 @@ public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
try {
directoryType = pm.getResourcesForApplication(packageName).getString(typeResourceId);
} catch (Exception e) {
- Log.e(TAG, "Cannot obtain directory type from package: " + packageName);
+ LogUtil.e(
+ "ContactEntryListAdapter.loadInBackground",
+ "cannot obtain directory type from package: " + packageName);
}
}
String displayName = cursor.getString(DirectoryQuery.DISPLAY_NAME);
@@ -149,7 +157,8 @@ public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
result.addRow(new Object[] {directoryId, directoryType, displayName, photoSupport});
}
} catch (RuntimeException e) {
- Log.w(TAG, "Runtime Exception when querying directory");
+ LogUtil.w(
+ "ContactEntryListAdapter.loadInBackground", "runtime exception when querying directory");
} finally {
if (cursor != null) {
cursor.close();
diff --git a/java/com/android/contacts/common/model/ContactLoader.java b/java/com/android/contacts/common/model/ContactLoader.java
index 8e9ef9429..55464b161 100644
--- a/java/com/android/contacts/common/model/ContactLoader.java
+++ b/java/com/android/contacts/common/model/ContactLoader.java
@@ -47,6 +47,7 @@ import com.android.contacts.common.util.ContactLoaderUtils;
import com.android.contacts.common.util.UriUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.location.GeoUtil;
+import com.android.dialer.util.PermissionsUtil;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -688,11 +689,15 @@ public class ContactLoader extends AsyncTaskLoader<Contact> {
mLookupUri = result.getLookupUri();
if (!result.isDirectoryEntry()) {
- LogUtil.i(TAG, "Registering content observer for " + mLookupUri);
if (mObserver == null) {
mObserver = new ForceLoadContentObserver();
}
- getContext().getContentResolver().registerContentObserver(mLookupUri, true, mObserver);
+
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ getContext().getContentResolver().registerContentObserver(mLookupUri, true, mObserver);
+ } else {
+ LogUtil.w("ContactLoader.deliverResult", "contacts permission not available");
+ }
}
if (mPostViewNotification) {
diff --git a/java/com/android/dialer/about/AboutPhoneFragment.java b/java/com/android/dialer/about/AboutPhoneFragment.java
new file mode 100644
index 000000000..ecd7c0f76
--- /dev/null
+++ b/java/com/android/dialer/about/AboutPhoneFragment.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.about;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.text.TextUtils;
+
+/** The fragment for information about the Phone App */
+public class AboutPhoneFragment extends PreferenceFragment {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.about_phone_fragment);
+
+ // We set the intent here, instead of in XML, to avoid specifying a target package, which
+ // differs between AOSP and the GoogleDialer.
+ Intent openSourceActivity =
+ new Intent(getActivity().getApplicationContext(), LicenseMenuActivity.class);
+ findPreference(getString(R.string.open_source_licenses_key)).setIntent(openSourceActivity);
+ populateBuildVersion();
+ }
+
+ private void populateBuildVersion() {
+ Preference buildVersion = findPreference(getResources().getString(R.string.build_version_key));
+ String versionName = getVersionName();
+ if (!TextUtils.isEmpty(versionName)) {
+ buildVersion.setSummary(versionName);
+ }
+ }
+
+ private String getVersionName() {
+ Context context = getContext();
+ try {
+ return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
+ } catch (NameNotFoundException e) {
+ return "";
+ }
+ }
+
+ @Override
+ public Context getContext() {
+ return getActivity();
+ }
+}
diff --git a/java/com/android/dialer/about/AndroidManifest.xml b/java/com/android/dialer/about/AndroidManifest.xml
new file mode 100644
index 000000000..e9489ce1e
--- /dev/null
+++ b/java/com/android/dialer/about/AndroidManifest.xml
@@ -0,0 +1,17 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dialer.about">
+ <application>
+ <activity
+ android:name="com.android.dialer.about.LicenseMenuActivity"
+ android:label="@string/licenseActivityLabel"
+ android:exported="false"
+ android:theme="@style/Theme.AppCompat.Light">
+ </activity>
+ <activity
+ android:name="com.android.dialer.about.LicenseActivity"
+ android:label="@string/licenseActivityLabel"
+ android:exported="false"
+ android:theme="@style/Theme.AppCompat.Light">
+ </activity>
+ </application>
+</manifest>
diff --git a/java/com/android/dialer/about/License.java b/java/com/android/dialer/about/License.java
new file mode 100644
index 000000000..d0d73b8e1
--- /dev/null
+++ b/java/com/android/dialer/about/License.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.about;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Container class to store the name of a library and the filename of its associated license file.
+ */
+public final class License implements Comparable<License>, Parcelable {
+ // Name of the third-party library.
+ private final String libraryName;
+ // Byte offset in the file to the start of the license text.
+ private final long licenseOffset;
+ // Byte length of the license text.
+ private final int licenseLength;
+
+ /**
+ * Create an object representing a stored license. The text for all licenses is stored in a single
+ * file, so the offset and length describe this license's position within the file.
+ */
+ static License create(String libraryName, long licenseOffset, int licenseLength) {
+ return new License(libraryName, licenseOffset, licenseLength);
+ }
+
+ public static final Parcelable.Creator<License> CREATOR =
+ new Parcelable.Creator<License>() {
+ @Override
+ public License createFromParcel(Parcel in) {
+ return new License(in);
+ }
+
+ @Override
+ public License[] newArray(int size) {
+ return new License[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(libraryName);
+ dest.writeLong(licenseOffset);
+ dest.writeInt(licenseLength);
+ }
+
+ @Override
+ public int compareTo(License o) {
+ return libraryName.compareToIgnoreCase(o.getLibraryName());
+ }
+
+ @Override
+ public String toString() {
+ return getLibraryName();
+ }
+
+ private License(String libraryName, long licenseOffset, int licenseLength) {
+ this.libraryName = libraryName;
+ this.licenseOffset = licenseOffset;
+ this.licenseLength = licenseLength;
+ }
+
+ private License(Parcel in) {
+ libraryName = in.readString();
+ licenseOffset = in.readLong();
+ licenseLength = in.readInt();
+ }
+
+ String getLibraryName() {
+ return libraryName;
+ }
+
+ long getLicenseOffset() {
+ return licenseOffset;
+ }
+
+ int getLicenseLength() {
+ return licenseLength;
+ }
+}
diff --git a/java/com/android/dialer/about/LicenseActivity.java b/java/com/android/dialer/about/LicenseActivity.java
new file mode 100644
index 000000000..24822235f
--- /dev/null
+++ b/java/com/android/dialer/about/LicenseActivity.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.about;
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
+import android.view.MenuItem;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+/** Simple Activity that renders locally stored open source legal info in a text view. */
+public final class LicenseActivity extends ActionBarActivity {
+ private static final String TAG = "LicenseActivity";
+ private static final String STATE_SCROLL_POS = "scroll_pos";
+
+ @Override
+ public void onCreate(Bundle bundle) {
+ super.onCreate(bundle);
+ setContentView(R.layout.license_scrollview);
+
+ License license = getIntent().getParcelableExtra(LicenseMenuActivity.ARGS_LICENSE);
+ getSupportActionBar().setTitle(license.getLibraryName());
+
+ // Show 'up' button with no logo.
+ getSupportActionBar().setDisplayShowHomeEnabled(true);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ getSupportActionBar().setLogo(null);
+
+ TextView textView = (TextView) findViewById(R.id.license_activity_textview);
+ String licenseText = Licenses.getLicenseText(this, license);
+ if (licenseText == null) {
+ finish();
+ return;
+ }
+ textView.setText(licenseText);
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview);
+ TextView textView = (TextView) findViewById(R.id.license_activity_textview);
+ int firstVisibleLine = textView.getLayout().getLineForVertical(scrollView.getScrollY());
+ int firstVisibleChar = textView.getLayout().getLineStart(firstVisibleLine);
+ outState.putInt(STATE_SCROLL_POS, firstVisibleChar);
+ }
+
+ @Override
+ public void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ final ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview);
+ final int firstVisibleChar = savedInstanceState.getInt(STATE_SCROLL_POS);
+ scrollView.post(
+ new Runnable() {
+ @Override
+ public void run() {
+ TextView textView = (TextView) findViewById(R.id.license_activity_textview);
+ int firstVisibleLine = textView.getLayout().getLineForOffset(firstVisibleChar);
+ int offset = textView.getLayout().getLineTop(firstVisibleLine);
+ scrollView.scrollTo(0, offset);
+ }
+ });
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(final MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/java/com/android/dialer/about/LicenseLoader.java b/java/com/android/dialer/about/LicenseLoader.java
new file mode 100644
index 000000000..50d6834d9
--- /dev/null
+++ b/java/com/android/dialer/about/LicenseLoader.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.about;
+
+import android.content.Context;
+import android.support.v4.content.AsyncTaskLoader;
+import java.util.List;
+
+/** {@link AsyncTaskLoader} to load the list of licenses for the license menu activity. */
+final class LicenseLoader extends AsyncTaskLoader<List<License>> {
+
+ private List<License> licenses;
+
+ LicenseLoader(Context context) {
+ // This must only pass the application context to avoid leaking a pointer to the Activity.
+ super(context.getApplicationContext());
+ }
+
+ @Override
+ public List<License> loadInBackground() {
+ return Licenses.getLicenses(getContext());
+ }
+
+ @Override
+ public void deliverResult(List<License> licenses) {
+ this.licenses = licenses;
+ super.deliverResult(licenses);
+ }
+
+ @Override
+ protected void onStartLoading() {
+ if (licenses != null) {
+ deliverResult(licenses);
+ } else {
+ forceLoad();
+ }
+ }
+
+ @Override
+ protected void onStopLoading() {
+ cancelLoad();
+ }
+}
diff --git a/java/com/android/dialer/about/LicenseMenuActivity.java b/java/com/android/dialer/about/LicenseMenuActivity.java
new file mode 100644
index 000000000..73047989c
--- /dev/null
+++ b/java/com/android/dialer/about/LicenseMenuActivity.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.about;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.LoaderManager.LoaderCallbacks;
+import android.support.v4.content.Loader;
+import android.support.v7.app.ActionBarActivity;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+import java.util.ArrayList;
+import java.util.List;
+
+/** An Activity listing third party libraries with notice licenses. */
+public final class LicenseMenuActivity extends ActionBarActivity
+ implements LoaderCallbacks<List<License>> {
+
+ static final String ARGS_LICENSE = "license";
+
+ private static final int LOADER_ID = 54321;
+
+ private ArrayAdapter<License> listAdapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.license_menu_activity);
+
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ listAdapter = new ArrayAdapter<>(this, R.layout.license, R.id.license, new ArrayList<>());
+ getSupportLoaderManager().initLoader(LOADER_ID, null, this);
+ ListView listView = (ListView) findViewById(R.id.license_list);
+ listView.setAdapter(listAdapter);
+ listView.setOnItemClickListener(
+ new OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ License license = (License) parent.getItemAtPosition(position);
+ Intent licenseIntent = new Intent(LicenseMenuActivity.this, LicenseActivity.class);
+ licenseIntent.putExtra(ARGS_LICENSE, license);
+ startActivity(licenseIntent);
+ }
+ });
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ // Go back one place in the history stack, if the app icon is clicked.
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ getSupportLoaderManager().destroyLoader(LOADER_ID);
+ }
+
+ @Override
+ public Loader<List<License>> onCreateLoader(int id, Bundle args) {
+ return new LicenseLoader(this);
+ }
+
+ @Override
+ public void onLoadFinished(Loader<List<License>> loader, List<License> licenses) {
+ listAdapter.clear();
+ listAdapter.addAll(licenses);
+ listAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onLoaderReset(Loader<List<License>> loader) {
+ listAdapter.clear();
+ listAdapter.notifyDataSetChanged();
+ }
+}
diff --git a/java/com/android/dialer/about/Licenses.java b/java/com/android/dialer/about/Licenses.java
new file mode 100644
index 000000000..d90c282b6
--- /dev/null
+++ b/java/com/android/dialer/about/Licenses.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.about;
+
+import android.content.Context;
+import android.content.res.Resources;
+import com.android.dialer.common.Assert;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collections;
+
+/** A helper for extracting licenses. */
+public final class Licenses {
+ private static final String TAG = "Licenses";
+ private static final String LICENSE_FILENAME = "third_party_licenses";
+ private static final String LICENSE_METADATA_FILENAME = "third_party_license_metadata";
+
+ /** Return the licenses bundled into this app. */
+ public static ArrayList<License> getLicenses(Context context) {
+ return getLicenseListFromMetadata(
+ getTextFromResource(context.getApplicationContext(), LICENSE_METADATA_FILENAME, 0, -1));
+ }
+
+ /**
+ * Returns a list of {@link License}s parsed from a license metadata file.
+ *
+ * @param metadata a {@code String} containing the contents of a license metadata file.
+ */
+ private static ArrayList<License> getLicenseListFromMetadata(String metadata) {
+ String[] entries = metadata.split("\n");
+ ArrayList<License> licenses = new ArrayList<License>(entries.length);
+ for (String entry : entries) {
+ int delimiter = entry.indexOf(' ');
+ String[] licenseLocation = entry.substring(0, delimiter).split(":");
+ Assert.checkState(
+ delimiter > 0 && licenseLocation.length == 2,
+ "Invalid license meta-data line:\n" + entry);
+ long licenseOffset = Long.parseLong(licenseLocation[0]);
+ int licenseLength = Integer.parseInt(licenseLocation[1]);
+ licenses.add(License.create(entry.substring(delimiter + 1), licenseOffset, licenseLength));
+ }
+ Collections.sort(licenses);
+ return licenses;
+ }
+
+ /** Return the text of a bundled license file. */
+ public static String getLicenseText(Context context, License license) {
+ long offset = license.getLicenseOffset();
+ int length = license.getLicenseLength();
+ return getTextFromResource(context, LICENSE_FILENAME, offset, length);
+ }
+
+ private static String getTextFromResource(
+ Context context, String filename, long offset, int length) {
+ Resources resources = context.getApplicationContext().getResources();
+ // When aapt is called with --rename-manifest-package, the package name is changed for the
+ // application, but not for the resources. This is to find the package name of a known
+ // resource to know what package to lookup the license files in.
+ String packageName = resources.getResourcePackageName(R.id.dummy_placeholder);
+ InputStream stream =
+ resources.openRawResource(resources.getIdentifier(filename, "raw", packageName));
+ return getTextFromInputStream(stream, offset, length);
+ }
+
+ private static String getTextFromInputStream(InputStream stream, long offset, int length) {
+ byte[] buffer = new byte[1024];
+ ByteArrayOutputStream textArray = new ByteArrayOutputStream();
+
+ try {
+ stream.skip(offset);
+ int bytesRemaining = length > 0 ? length : Integer.MAX_VALUE;
+ int bytes = 0;
+
+ while (bytesRemaining > 0
+ && (bytes = stream.read(buffer, 0, Math.min(bytesRemaining, buffer.length))) != -1) {
+ textArray.write(buffer, 0, bytes);
+ bytesRemaining -= bytes;
+ }
+ stream.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to read license or metadata text.", e);
+ }
+ try {
+ return textArray.toString("UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("Unsupported encoding UTF8. This should always be supported.", e);
+ }
+ }
+}
diff --git a/java/com/android/dialer/about/res/layout/dummy_placeholder.xml b/java/com/android/dialer/about/res/layout/dummy_placeholder.xml
new file mode 100644
index 000000000..6d867ef55
--- /dev/null
+++ b/java/com/android/dialer/about/res/layout/dummy_placeholder.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<!-- See Licenses.java for why this exists. -->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/dummy_placeholder"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
diff --git a/java/com/android/dialer/about/res/layout/license.xml b/java/com/android/dialer/about/res/layout/license.xml
new file mode 100644
index 000000000..ef67982a1
--- /dev/null
+++ b/java/com/android/dialer/about/res/layout/license.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:gravity="center_vertical"
+ android:paddingRight="?android:attr/scrollbarSize"
+ android:baselineAligned="false" >
+
+ <TextView android:id="@+id/license"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="15dip"
+ android:layout_marginLeft="15dip"
+ android:layout_marginEnd="6dip"
+ android:layout_marginRight="6dip"
+ android:layout_marginTop="6dip"
+ android:layout_marginBottom="6dip"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMediumInverse"
+ android:textColor="?android:attr/textColorPrimary"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal" />
+
+</LinearLayout>
diff --git a/java/com/android/dialer/about/res/layout/license_menu_activity.xml b/java/com/android/dialer/about/res/layout/license_menu_activity.xml
new file mode 100644
index 000000000..8ed47bf68
--- /dev/null
+++ b/java/com/android/dialer/about/res/layout/license_menu_activity.xml
@@ -0,0 +1,35 @@
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:background="@android:color/transparent">
+
+ <ListView android:id="@+id/license_list"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingTop="0dp"
+ android:paddingBottom="0dp"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:scrollbarStyle="outsideOverlay"
+ android:clipToPadding="false"
+ android:drawSelectorOnTop="false"
+ android:cacheColorHint="@android:color/transparent"
+ android:scrollbarAlwaysDrawVerticalTrack="true" />
+</LinearLayout>
diff --git a/java/com/android/dialer/about/res/layout/license_scrollview.xml b/java/com/android/dialer/about/res/layout/license_scrollview.xml
new file mode 100644
index 000000000..f58bc2f43
--- /dev/null
+++ b/java/com/android/dialer/about/res/layout/license_scrollview.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/license_activity_scrollview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TextView
+ android:id="@+id/license_activity_textview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:typeface="monospace"
+ android:paddingStart="16dip"
+ android:paddingLeft="16dip"
+ android:paddingEnd="16dip"
+ android:paddingRight="16dip"
+ android:paddingTop="8dip"
+ android:paddingBottom="8dip" />
+</ScrollView> \ No newline at end of file
diff --git a/java/com/android/dialer/about/res/raw/keep.xml b/java/com/android/dialer/about/res/raw/keep.xml
new file mode 100644
index 000000000..e41b8b8d0
--- /dev/null
+++ b/java/com/android/dialer/about/res/raw/keep.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<resources xmlns:tools="http://schemas.android.com/tools"
+ tools:keep="@raw/*"/>
+
diff --git a/java/com/android/dialer/about/res/raw/third_party_license_metadata b/java/com/android/dialer/about/res/raw/third_party_license_metadata
new file mode 100644
index 000000000..1acf3480c
--- /dev/null
+++ b/java/com/android/dialer/about/res/raw/third_party_license_metadata
@@ -0,0 +1,34 @@
+40:10695 Android Annotations Support Library
+10770:10695 Android Compat Support Library
+21501:10695 Android Core UI Support Library
+32235:10691 Android Core Utils Support Library
+42961:10695 Android Design Support Library
+53694:10695 Android Fragments Support Library
+64426:10695 Android Graphics Support Library
+75162:10691 Android Media Compat Support Library
+85892:10691 Android Transition Support Library
+96621:10695 Android Compatibility Library v13
+107353:10695 Android Compatibility Library v4
+118085:10695 Android Compatibility Library v7
+128796:16013 Android SDK
+144828:11358 Android Common
+156196:4771 Glide
+160982:11358 Guava JDK5
+172358:12847 jibercsclient
+185224:10173 libphonenumber
+195416:10699 shortcutbadger
+206126:11358 Volley
+217495:18982 mime4j
+236493:11358 Google Auto
+247862:11358 Dagger
+259236:11357 Error Prone
+270604:11358 J2ObjC
+281984:11359 Apache Commons IO
+293355:11358 JSR 250
+304725:1602 JSR 305
+306339:11365 JSR 330
+317738:12847 carrierservices
+317738:12847 rcsclientlib
+330614:11358 material_components
+330614:11358 lib
+341987:11362 Guava JDK7
diff --git a/java/com/android/dialer/about/res/raw/third_party_licenses b/java/com/android/dialer/about/res/raw/third_party_licenses
new file mode 100644
index 000000000..c56f8a42c
--- /dev/null
+++ b/java/com/android/dialer/about/res/raw/third_party_licenses
@@ -0,0 +1,6414 @@
+
+
+Android Annotations Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Compat Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Core UI Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Core Utils Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+Android Design Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Fragments Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Graphics Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Media Compat Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+Android Transition Support Library:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+Android Compatibility Library v13:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Compatibility Library v4:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android Compatibility Library v7:
+
+
+ Copyright (c) 2005-2011, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+Android SDK:
+
+ANDROID SOFTWARE DEVELOPMENT KIT
+
+Terms and Conditions
+
+This is the Android Software Development Kit License Agreement.
+
+1. Introduction
+
+1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and
+specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
+licensed to you subject to the terms of this License Agreement. This License Agreement forms a
+legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
+Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+2. Accepting this License Agreement
+
+2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the
+SDK if you do not accept this License Agreement.
+
+2.2 You can accept this License Agreement by:
+
+(A) clicking to accept or agree to this License Agreement, where this option is made available to
+you; or
+
+(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes acceptance of
+the Licensing Agreement from that point onwards.
+
+2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person barred
+from receiving the SDK under the laws of the United States or other countries including the country
+in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other
+entity, you represent and warrant that you have full legal authority to bind your employer or such
+entity to this License Agreement. If you do not have the requisite authority, you may not accept
+the Licensing Agreement or use the SDK on behalf of your employer or other entity.
+
+3. SDK License from Google
+
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
+royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop
+applications to run on the Android platform.
+
+3.2 You agree that Google or third parties own all legal right, title and interest in and to the
+SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
+Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
+and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.3 Except to the extent required by applicable third party licenses, you may not copy (except for
+backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create
+derivative works of the SDK or any part of the SDK. Except to the extent required by applicable
+third party licenses, you may not load any part of the SDK onto a mobile handset or any other
+hardware device except a personal computer, combine any part of the SDK with other software, or
+distribute any software or device incorporating a part of the SDK.
+
+3.4 Use, reproduction and distribution of components of the SDK licensed under an open source
+software license are governed solely by the terms of that open source software license and not
+this License Agreement.
+
+3.5 You agree that the form and nature of the SDK that Google provides may change without prior
+notice to you and that future versions of the SDK may be incompatible with applications developed
+on previous versions of the SDK. You agree that Google may stop (permanently or temporarily)
+providing the SDK (or any features within the SDK) to you or to users generally at Google's sole
+discretion, without prior notice to you.
+
+3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names,
+trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including
+copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+4. Use of the SDK by You
+
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under
+this License Agreement in or to any software applications that you develop using the SDK, including
+any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this
+License Agreement and (b) any applicable law, regulation or generally accepted practices or
+guidelines in the relevant jurisdictions (including any laws regarding the export of data or
+software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will
+protect the privacy and legal rights of those users. If the users provide you with user names,
+passwords, or other login information or personal information, your must make the users aware that
+the information will be available to your application, and you must provide legally adequate privacy
+notice and protection for those users. If your application stores personal or sensitive information
+provided by users, it must do so securely. If the user provides your application with Google Account
+information, your application may only use that information to access the user's Google Account
+when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or
+distribution of an application, that interferes with, disrupts, damages, or accesses in an
+unauthorized manner the servers, networks, or other properties or services of any third party
+including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or
+to any third party for) any data, content, or resources that you create, transmit or display through
+the Android platform and/or applications for the Android platform, and for the consequences of your
+actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or
+to any third party for) any breach of your obligations under this License Agreement, any applicable
+third party contract or Terms of Service, or any applicable law or regulation, and for the
+consequences (including any loss or damage which Google or any third party may suffer) of any such
+breach.
+
+5. Your Developer Credentials
+
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer
+credentials that may be issued to you by Google or which you may choose yourself and that you will
+be solely responsible for all applications that are developed under your developer credentials.
+
+6. Privacy and Information
+
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
+statistics from the software including but not limited to a unique identifier, associated IP
+address, version number of the software, and information on which tools and/or services in the SDK
+are being used and how they are being used. Before any of this information is collected, the SDK
+will notify you and seek your consent. If you withhold consent, the information will not be
+collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
+accordance with Google's Privacy Policy.
+
+7. Third Party Applications for the Android Platform
+
+7.1 If you use the SDK to run applications developed by a third party or that access data, content
+or resources provided by a third party, you agree that Google is not responsible for those
+applications, data, content, or resources. You understand that all data, content or resources which
+you may access through such third party applications are the sole responsibility of the person from
+which they originated and that Google is not liable for any loss or damage that you may experience
+as a result of the use or access of any of those third party applications, data, content, or
+resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party
+application may be protected by intellectual property rights which are owned by the providers (or by
+other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute
+or create derivative works based on these data, content, or resources (either in whole or in part)
+unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may
+be subject to separate terms between you and the relevant third party. In that case, this License
+Agreement does not affect your legal relationship with these third parties.
+
+8. Using Android APIs
+
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
+protected by intellectual property rights which are owned by Google or those parties that provide
+the data (or by other persons or companies on their behalf). Your use of any such API may be subject
+to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create
+derivative works based on this data (either in whole or in part) unless allowed by the relevant
+Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you
+shall retrieve data only with the user's explicit consent and only when, and for the limited
+purposes for which, the user has given you permission to do so.
+
+9. Terminating this License Agreement
+
+9.1 This License Agreement will continue to apply until terminated by either you or Google as set
+out below.
+
+9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK
+and any relevant developer credentials.
+
+9.3 Google may at any time, terminate this License Agreement with you if:
+
+(A) you have breached any provision of this License Agreement; or
+
+(B) Google is required to do so by law; or
+
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated
+its relationship with Google or ceased to offer certain parts of the SDK to you; or
+
+(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in the
+country in which you are resident or from which you use the service, or the provision of the SDK or
+certain SDK services to you by Google is, in Google's sole discretion, no longer commercially
+viable.
+
+9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
+liabilities that you and Google have benefited from, been subject to (or which have accrued over
+time whilst this License Agreement has been in force) or which are expressed to continue
+indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
+continue to apply to such rights, obligations and liabilities indefinitely.
+
+10. DISCLAIMER OF WARRANTIES
+
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE
+SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE
+SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
+COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+11. LIMITATION OF LIABILITY
+
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS
+LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY
+LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN
+AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+12. Indemnification
+
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless
+Google, its affiliates and their respective directors, officers, employees and agents from and
+against any and all claims, actions, suits or proceedings, as well as any and all losses,
+liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or
+accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any
+copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any
+person or defames any person or violates their rights of publicity or privacy, and (c) any
+non-compliance by you with this License Agreement.
+
+13. Changes to the License Agreement
+
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK.
+When these changes are made, Google will make a new version of the License Agreement available on
+the website where the SDK is made available.
+
+14. General Legal Terms
+
+14.1 This License Agreement constitute the whole legal agreement between you and Google and govern
+your use of the SDK (excluding any services which Google may provide to you under a separate written
+agreement), and completely replace any prior agreements between you and Google in relation to the
+SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is
+contained in this License Agreement (or which Google has the benefit of under any applicable law),
+this will not be taken to be a formal waiver of Google's rights and that those rights or remedies
+will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision
+of this License Agreement is invalid, then that provision will be removed from this License
+Agreement without affecting the rest of this License Agreement. The remaining provisions of this
+License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the
+parent shall be third party beneficiaries to this License Agreement and that such other companies
+shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that
+confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall
+be third party beneficiaries to this License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST
+COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE
+LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in this License Agreement may not be assigned or transferred by either you
+or Google without the prior written approval of the other party. Neither you nor Google shall be
+permitted to delegate their responsibilities or obligations under this License Agreement without the
+prior written approval of the other party.
+
+14.7 This License Agreement, and your relationship with Google under this License Agreement, shall
+be governed by the laws of the State of California without regard to its conflict of laws
+provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
+within the county of Santa Clara, California to resolve any legal matter arising from this License
+Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
+injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+April 10, 2009
+
+
+Android Common:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+Glide:
+
+Covers library/
+
+Copyright 2014 Google, Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are
+permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE, INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those of the
+authors and should not be interpreted as representing official policies, either expressed
+or implied, of Google, Inc.
+
+--------------------------------------------------------------------------
+Covers third_party/gif_decoder
+
+Copyright (c) 2013 Xcellent Creations, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------------
+Covers third_party/disklrucache
+
+Copyright 2012 Jake Wharton
+Copyright 2011 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+--------------------------------------------------------------------------
+Covers third_party/gif_encoder/AnimatedGifEncoder.java and
+third_party/gif_encoder/LZWEncoder.java:
+
+No copyright asserted on the source code of this class. May be used for any
+purpose, however, refer to the Unisys LZW patent for restrictions on use of
+the associated LZWEncoder class. Please forward any corrections to
+kweiner@fmsware.com.
+
+-----------------------------------------------------------------------------
+Covers third_party/gif_encoder/NeuQuant.java
+
+Copyright (c) 1994 Anthony Dekker
+
+NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See
+"Kohonen neural networks for optimal colour quantization" in "Network:
+Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of
+the algorithm.
+
+Any party obtaining a copy of these files from the author, directly or
+indirectly, is granted, free of charge, a full and unrestricted irrevocable,
+world-wide, paid up, royalty-free, nonexclusive right and license to deal in
+this software and documentation files (the "Software"), including without
+limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons who
+receive copies from any such party to do so, with the only requirement being
+that this copyright notice remain intact.
+
+
+Guava JDK5:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+jibercsclient:
+
+These components
+ com.google.android.rcs.core,
+ com.google.android.rcs.core.utils.CaseInsensitiveMap,
+ com.google.android.rcs.core.utils.DateTime,
+ com.google.android.rcs.core.utils.InetAddresses,
+ com.google.android.rcs.core.network.ConnectivityMonitor,
+ com.google.android.rcs.client.PrivateDataStorage,
+ com.google.android.rcs.client.utils.FastXmlSerializer,
+ com.google.android.rcs.client.utils.XmlUtils,
+ com.google.android.rcs.client.utils.QueuedWork
+are licensed under Apache v2.
+
+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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+===============================================================================
+
+These components
+ com.google.android.rcs.core.utils.FastBase64,
+ com.google.android.rcs.core.utils.LibraryLoaderHelper
+are licensed under BSD.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+libphonenumber:
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+shortcutbadger:
+
+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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+Volley:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+mime4j:
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+
+ THIS PRODUCT ALSO INCLUDES THIRD PARTY SOFTWARE REDISTRIBUTED UNDER THE
+ FOLLOWING LICENSES:
+
+ Apache Commons Logging,
+ The Apache Software License, Version 1.1 (commons-logging-1.1.1.jar)
+
+ The Apache Software License, Version 1.1
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The end-user documentation included with the redistribution,
+ if any, must include the following acknowledgment:
+ "This product includes software developed by the
+ Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself,
+ if and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Apache" and "Apache Software Foundation" must
+ not be used to endorse or promote products derived from this
+ software without prior written permission. For written
+ permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache",
+ nor may "Apache" appear in their name, without prior written
+ permission of the Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+
+ Test messages from the Perl-MIME-Tools project,
+
+ The "Artistic License"
+
+ Preamble
+
+ The intent of this document is to state the conditions under which a
+ Package may be copied, such that the Copyright Holder maintains some
+ semblance of artistic control over the development of the package,
+ while giving the users of the package the right to use and distribute
+ the Package in a more-or-less customary fashion, plus the right to make
+ reasonable modifications.
+
+ Definitions:
+
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the
+ basis of media cost, duplication charges, time of people involved,
+ and so on. (You will not be required to justify it to the
+ Copyright Holder, but only to the computing community at large
+ as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item
+ itself, though there may be fees involved in handling the item.
+ It also means that recipients of the item may redistribute it
+ under the same conditions they received it.
+
+ 1. You may make and give away verbatim copies of the source form of the
+ Standard Version of this Package without restriction, provided that you
+ duplicate all of the original copyright notices and associated disclaimers.
+
+ 2. You may apply bug fixes, portability fixes and other modifications
+ derived from the Public Domain or from the Copyright Holder. A Package
+ modified in such a way shall still be considered the Standard Version.
+
+ 3. You may otherwise modify your copy of this Package in any way, provided
+ that you insert a prominent notice in each changed file stating how and
+ when you changed that file, and provided that you do at least ONE of the
+ following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or
+ an equivalent medium, or placing the modifications on a major archive
+ site such as uunet.uu.net, or by allowing the Copyright Holder to include
+ your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+ 4. You may distribute the programs of this Package in object code or
+ executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+ 5. You may charge a reasonable copying fee for any distribution of this
+ Package. You may charge any fee you choose for support of this
+ Package. You may not charge a fee for this Package itself. However,
+ you may distribute this Package in aggregate with other (possibly
+ commercial) programs as part of a larger (possibly commercial) software
+ distribution provided that you do not advertise this Package as a
+ product of your own. You may embed this Package's interpreter within
+ an executable of yours (by linking); this shall be construed as a mere
+ form of aggregation, provided that the complete Standard Version of the
+ interpreter is so embedded.
+
+ 6. The scripts and library files supplied as input to or produced as
+ output from the programs of this Package do not automatically fall
+ under the copyright of this Package, but belong to whoever generated
+ them, and may be sold commercially, and may be aggregated with this
+ Package. If such scripts or library files are aggregated with this
+ Package via the so-called "undump" or "unexec" methods of producing a
+ binary executable image, then distribution of such an image shall
+ neither be construed as a distribution of this Package nor shall it
+ fall under the restrictions of Paragraphs 3 and 4, provided that you do
+ not represent such an executable image as a Standard Version of this
+ Package.
+
+ 7. C subroutines (or comparably compiled subroutines in other
+ languages) supplied by you and linked into this Package in order to
+ emulate subroutines and variables of the language defined by this
+ Package shall not be considered part of this Package, but are the
+ equivalent of input as in Paragraph 6, provided these subroutines do
+ not change the language in any way that would cause it to fail the
+ regression tests for the language.
+
+ 8. Aggregation of this Package with a commercial distribution is always
+ permitted provided that the use of this Package is embedded; that is,
+ when no overt attempt is made to make this Package's interfaces visible
+ to the end user of the commercial distribution. Such use shall not be
+ construed as a distribution of this Package.
+
+ 9. The name of the Copyright Holder may not be used to endorse or promote
+ products derived from this software without specific prior written permission.
+
+ 10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ The End
+
+
+
+
+Google Auto:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+Dagger:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+Error Prone:
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+J2ObjC:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+Apache Commons IO:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+
+JSR 250:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+JSR 305:
+
+Copyright (c) 2007-2009, JSR305 expert group
+All rights reserved.
+
+http://www.opensource.org/licenses/bsd-license.php
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the JSR305 expert group nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+JSR 330:
+
+JSR-330
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+carrierservices, rcsclientlib:
+
+These components
+ com.google.android.rcs.core,
+ com.google.android.rcs.core.utils.CaseInsensitiveMap,
+ com.google.android.rcs.core.utils.DateTime,
+ com.google.android.rcs.core.utils.InetAddresses,
+ com.google.android.rcs.core.network.ConnectivityMonitor,
+ com.google.android.rcs.client.PrivateDataStorage,
+ com.google.android.rcs.client.utils.FastXmlSerializer,
+ com.google.android.rcs.client.utils.XmlUtils,
+ com.google.android.rcs.client.utils.QueuedWork
+are licensed under Apache v2.
+
+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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+===============================================================================
+
+These components
+ com.google.android.rcs.core.utils.FastBase64,
+ com.google.android.rcs.core.utils.LibraryLoaderHelper
+are licensed under BSD.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+material_components, lib:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+
+Guava JDK7:
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
diff --git a/java/com/android/dialer/about/res/values-af/strings.xml b/java/com/android/dialer/about/res/values-af/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-af/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-am/strings.xml b/java/com/android/dialer/about/res/values-am/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-am/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ar/strings.xml b/java/com/android/dialer/about/res/values-ar/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ar/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-az/strings.xml b/java/com/android/dialer/about/res/values-az/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-az/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-be/strings.xml b/java/com/android/dialer/about/res/values-be/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-be/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-bg/strings.xml b/java/com/android/dialer/about/res/values-bg/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-bg/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-bn/strings.xml b/java/com/android/dialer/about/res/values-bn/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-bn/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-bs/strings.xml b/java/com/android/dialer/about/res/values-bs/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-bs/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ca/strings.xml b/java/com/android/dialer/about/res/values-ca/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ca/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-cs/strings.xml b/java/com/android/dialer/about/res/values-cs/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-cs/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-da/strings.xml b/java/com/android/dialer/about/res/values-da/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-da/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-de/strings.xml b/java/com/android/dialer/about/res/values-de/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-de/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-el/strings.xml b/java/com/android/dialer/about/res/values-el/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-el/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-en-rAU/strings.xml b/java/com/android/dialer/about/res/values-en-rAU/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-en-rAU/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-en-rGB/strings.xml b/java/com/android/dialer/about/res/values-en-rGB/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-en-rGB/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-en-rIN/strings.xml b/java/com/android/dialer/about/res/values-en-rIN/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-en-rIN/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-es-rUS/strings.xml b/java/com/android/dialer/about/res/values-es-rUS/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-es-rUS/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-es/strings.xml b/java/com/android/dialer/about/res/values-es/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-es/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-et/strings.xml b/java/com/android/dialer/about/res/values-et/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-et/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-eu/strings.xml b/java/com/android/dialer/about/res/values-eu/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-eu/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-fa/strings.xml b/java/com/android/dialer/about/res/values-fa/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-fa/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-fi/strings.xml b/java/com/android/dialer/about/res/values-fi/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-fi/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-fr-rCA/strings.xml b/java/com/android/dialer/about/res/values-fr-rCA/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-fr-rCA/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-fr/strings.xml b/java/com/android/dialer/about/res/values-fr/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-fr/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-gl/strings.xml b/java/com/android/dialer/about/res/values-gl/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-gl/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-gu/strings.xml b/java/com/android/dialer/about/res/values-gu/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-gu/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-hi/strings.xml b/java/com/android/dialer/about/res/values-hi/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-hi/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-hr/strings.xml b/java/com/android/dialer/about/res/values-hr/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-hr/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-hu/strings.xml b/java/com/android/dialer/about/res/values-hu/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-hu/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-hy/strings.xml b/java/com/android/dialer/about/res/values-hy/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-hy/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-in/strings.xml b/java/com/android/dialer/about/res/values-in/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-in/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-is/strings.xml b/java/com/android/dialer/about/res/values-is/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-is/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-it/strings.xml b/java/com/android/dialer/about/res/values-it/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-it/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-iw/strings.xml b/java/com/android/dialer/about/res/values-iw/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-iw/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ja/strings.xml b/java/com/android/dialer/about/res/values-ja/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ja/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ka/strings.xml b/java/com/android/dialer/about/res/values-ka/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ka/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-kk/strings.xml b/java/com/android/dialer/about/res/values-kk/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-kk/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-km/strings.xml b/java/com/android/dialer/about/res/values-km/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-km/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-kn/strings.xml b/java/com/android/dialer/about/res/values-kn/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-kn/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ko/strings.xml b/java/com/android/dialer/about/res/values-ko/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ko/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ky/strings.xml b/java/com/android/dialer/about/res/values-ky/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ky/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-lo/strings.xml b/java/com/android/dialer/about/res/values-lo/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-lo/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-lt/strings.xml b/java/com/android/dialer/about/res/values-lt/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-lt/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-lv/strings.xml b/java/com/android/dialer/about/res/values-lv/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-lv/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-mk/strings.xml b/java/com/android/dialer/about/res/values-mk/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-mk/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ml/strings.xml b/java/com/android/dialer/about/res/values-ml/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ml/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-mn/strings.xml b/java/com/android/dialer/about/res/values-mn/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-mn/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-mr/strings.xml b/java/com/android/dialer/about/res/values-mr/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-mr/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ms/strings.xml b/java/com/android/dialer/about/res/values-ms/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ms/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-my/strings.xml b/java/com/android/dialer/about/res/values-my/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-my/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-nb/strings.xml b/java/com/android/dialer/about/res/values-nb/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-nb/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ne/strings.xml b/java/com/android/dialer/about/res/values-ne/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ne/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-nl/strings.xml b/java/com/android/dialer/about/res/values-nl/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-nl/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-no/strings.xml b/java/com/android/dialer/about/res/values-no/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-no/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-pa/strings.xml b/java/com/android/dialer/about/res/values-pa/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-pa/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-pl/strings.xml b/java/com/android/dialer/about/res/values-pl/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-pl/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-pt-rBR/strings.xml b/java/com/android/dialer/about/res/values-pt-rBR/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-pt-rBR/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-pt-rPT/strings.xml b/java/com/android/dialer/about/res/values-pt-rPT/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-pt-rPT/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-pt/strings.xml b/java/com/android/dialer/about/res/values-pt/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-pt/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ro/strings.xml b/java/com/android/dialer/about/res/values-ro/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ro/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ru/strings.xml b/java/com/android/dialer/about/res/values-ru/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ru/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-si/strings.xml b/java/com/android/dialer/about/res/values-si/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-si/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-sk/strings.xml b/java/com/android/dialer/about/res/values-sk/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-sk/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-sl/strings.xml b/java/com/android/dialer/about/res/values-sl/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-sl/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-sq/strings.xml b/java/com/android/dialer/about/res/values-sq/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-sq/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-sr/strings.xml b/java/com/android/dialer/about/res/values-sr/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-sr/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-sv/strings.xml b/java/com/android/dialer/about/res/values-sv/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-sv/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-sw/strings.xml b/java/com/android/dialer/about/res/values-sw/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-sw/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ta/strings.xml b/java/com/android/dialer/about/res/values-ta/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ta/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-te/strings.xml b/java/com/android/dialer/about/res/values-te/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-te/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-th/strings.xml b/java/com/android/dialer/about/res/values-th/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-th/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-tl/strings.xml b/java/com/android/dialer/about/res/values-tl/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-tl/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-tr/strings.xml b/java/com/android/dialer/about/res/values-tr/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-tr/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-uk/strings.xml b/java/com/android/dialer/about/res/values-uk/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-uk/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-ur/strings.xml b/java/com/android/dialer/about/res/values-ur/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-ur/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-uz/strings.xml b/java/com/android/dialer/about/res/values-uz/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-uz/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-vi/strings.xml b/java/com/android/dialer/about/res/values-vi/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-vi/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-zh-rCN/strings.xml b/java/com/android/dialer/about/res/values-zh-rCN/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-zh-rCN/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-zh-rHK/strings.xml b/java/com/android/dialer/about/res/values-zh-rHK/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-zh-rHK/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-zh-rTW/strings.xml b/java/com/android/dialer/about/res/values-zh-rTW/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-zh-rTW/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values-zu/strings.xml b/java/com/android/dialer/about/res/values-zu/strings.xml
new file mode 100644
index 000000000..ec60d0e6b
--- /dev/null
+++ b/java/com/android/dialer/about/res/values-zu/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for build_version_label (3876300343684966840) -->
+ <skip />
+ <!-- no translation found for open_source_license_detail_label (2860076509914623912) -->
+ <skip />
+ <!-- no translation found for licenseActivityLabel (8258726177561826066) -->
+ <skip />
+ <!-- no translation found for privacy_policy_label (6567158248788870442) -->
+ <skip />
+ <!-- no translation found for terms_of_service_label (6788126078040996084) -->
+ <skip />
+</resources>
diff --git a/java/com/android/dialer/about/res/values/strings.xml b/java/com/android/dialer/about/res/values/strings.xml
new file mode 100644
index 000000000..be7697cf2
--- /dev/null
+++ b/java/com/android/dialer/about/res/values/strings.xml
@@ -0,0 +1,39 @@
+<resources>
+
+ <!-- Internal preferences key for displaying the build version -->
+ <string name="build_version_key" translatable="false">build_version</string>
+
+ <!-- Label shown in the About Phone screen for the build version [CHAR LIMIT=40]-->
+ <string name="build_version_label">Build version</string>
+
+ <!-- Internal preferences key for displaying the open source license
+ libraries -->
+ <string name="open_source_licenses_key" translatable="false">open_source_licenses</string>
+
+ <!-- Detail label text shown on the About Phone screen to supplement
+ @string/licenseActivityLabel -->
+ <string name="open_source_license_detail_label">License details for open source software</string>
+
+ <!-- Title for the activity that displays licenses for open source libraries used in the
+ application. -->
+ <string name="licenseActivityLabel">Open source licenses</string>
+
+ <!-- Internal preferences key for displaying the privacy policy -->
+ <string name="privacy_policy_key" translatable="false">privacy_policy</string>
+
+ <!-- Label shown on the About Phone screen for the privacy policy option [CHAR LIMIT=40]-->
+ <string name="privacy_policy_label">Privacy policy</string>
+
+ <!-- URL for privacy policy -->
+ <string name="privacy_policy_url" translatable="false">http://www.google.com/policies/privacy</string>
+
+ <!-- Label shown on the About Phone screen for the terms of service option [CHAR LIMIT=50]-->
+ <string name="terms_of_service_label">Terms of service</string>
+
+ <!-- Internal preferences key for displaying the terms of service-->
+ <string name="terms_of_service_key" translatable="false">terms_of_service</string>
+
+ <!-- URL for terms of service -->
+ <string name="terms_of_service_url" translatable="false">http://www.google.com/policies/terms</string>
+
+</resources>
diff --git a/java/com/android/dialer/about/res/xml/about_phone_fragment.xml b/java/com/android/dialer/about/res/xml/about_phone_fragment.xml
new file mode 100644
index 000000000..51f1d3eb0
--- /dev/null
+++ b/java/com/android/dialer/about/res/xml/about_phone_fragment.xml
@@ -0,0 +1,31 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+ <Preference
+ android:key="@string/build_version_key"
+ android:persistent="false"
+ android:title="@string/build_version_label"/>
+
+ <Preference
+ android:key="@string/open_source_licenses_key"
+ android:persistent="false"
+ android:summary="@string/open_source_license_detail_label"
+ android:title="@string/licenseActivityLabel">
+ </Preference>
+
+ <Preference
+ android:key="@string/privacy_policy_key"
+ android:persistent="false"
+ android:title="@string/privacy_policy_label">
+ <intent
+ android:action="android.intent.action.VIEW"
+ android:data="@string/privacy_policy_url"/>
+ </Preference>
+
+ <Preference
+ android:key="@string/terms_of_service_key"
+ android:persistent="false"
+ android:title="@string/terms_of_service_label">
+ <intent
+ android:action="android.intent.action.VIEW"
+ android:data="@string/terms_of_service_url"/>
+ </Preference>
+</PreferenceScreen>
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 3318c506d..6e2c6be7d 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -162,7 +162,6 @@ public class DialtactsActivity extends TransactionSafeActivity
private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
public static final int ACTIVITY_REQUEST_CODE_CALL_COMPOSE = 2;
- public static final int ACTIVITY_REQUEST_CODE_LIGHTBRINGER = 3;
private static final int FAB_SCALE_IN_DELAY_MS = 300;
@@ -1489,7 +1488,7 @@ public class DialtactsActivity extends TransactionSafeActivity
Menu menu = getMenu();
MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
clearFrequents.setVisible(
- PermissionsUtil.hasContactsPermissions(DialtactsActivity.this)
+ PermissionsUtil.hasContactsReadPermissions(DialtactsActivity.this)
&& mListsFragment != null
&& mListsFragment.hasFrequents());
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index b433e6529..2f8a58c8a 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -108,6 +108,9 @@ public class CallLogAdapter extends GroupingListAdapter
public static final String LOAD_DATA_TASK_IDENTIFIER = "load_data";
+ public static final String ENABLE_CALL_LOG_MULTI_SELECT = "enable_call_log_multiselect";
+ public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = false;
+
protected final Activity mActivity;
protected final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
/** Cache for repeated requests to Telecom/Telephony. */
@@ -228,7 +231,7 @@ public class CallLogAdapter extends GroupingListAdapter
@Override
public boolean onLongClick(View v) {
if (ConfigProviderBindings.get(v.getContext())
- .getBoolean("enable_call_log_multiselect", true)
+ .getBoolean(ENABLE_CALL_LOG_MULTI_SELECT, ENABLE_CALL_LOG_MULTI_SELECT_FLAG)
&& mVoicemailPlaybackPresenter != null) {
if (v.getId() == R.id.primary_action_view || v.getId() == R.id.quick_contact_photo) {
if (mActionMode == null) {
@@ -373,7 +376,7 @@ public class CallLogAdapter extends GroupingListAdapter
mContactInfoCache = contactInfoCache;
- if (!PermissionsUtil.hasContactsPermissions(activity)) {
+ if (!PermissionsUtil.hasContactsReadPermissions(activity)) {
mContactInfoCache.disableRequestProcessing();
}
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index 874aeeac8..6e4b23fc1 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -200,9 +200,18 @@ public class CallLogFragment extends Fragment
final ContentResolver resolver = activity.getContentResolver();
mCallLogQueryHandler = new CallLogQueryHandler(activity, resolver, this, mLogLimit);
mKeyguardManager = (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE);
- resolver.registerContentObserver(CallLog.CONTENT_URI, true, mCallLogObserver);
- resolver.registerContentObserver(
- ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
+
+ if (PermissionsUtil.hasCallLogReadPermissions(getContext())) {
+ resolver.registerContentObserver(CallLog.CONTENT_URI, true, mCallLogObserver);
+ } else {
+ LogUtil.w("CallLogFragment.onCreate", "call log permission not available");
+ }
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ resolver.registerContentObserver(
+ ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
+ } else {
+ LogUtil.w("CallLogFragment.onCreate", "contacts permission not available.");
+ }
setHasOptionsMenu(true);
}
@@ -494,7 +503,7 @@ public class CallLogFragment extends Fragment
if (mKeyguardManager != null
&& !mKeyguardManager.inKeyguardRestrictedInputMode()
&& mCallTypeFilter == Calls.VOICEMAIL_TYPE) {
- CallLogNotificationsQueryHelper.updateVoicemailNotifications(getActivity());
+ CallLogNotificationsService.markNewVoicemailsAsOld(getActivity(), null);
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 278caba92..1daccd1a4 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -17,7 +17,6 @@
package com.android.dialer.app.calllog;
import android.app.Activity;
-import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -45,7 +44,6 @@ import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
-import android.widget.Toast;
import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
@@ -62,6 +60,7 @@ import com.android.dialer.blocking.FilteredNumbersUtil;
import com.android.dialer.callcomposer.CallComposerActivity;
import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.calldetails.CallDetailsEntries;
+import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
import com.android.dialer.lightbringer.Lightbringer;
@@ -258,7 +257,11 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
}
primaryActionButtonView.setOnClickListener(this);
primaryActionView.setOnClickListener(mExpandCollapseListener);
- if (mVoicemailPlaybackPresenter != null) {
+ if (mVoicemailPlaybackPresenter != null
+ && ConfigProviderBindings.get(mContext)
+ .getBoolean(
+ CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT,
+ CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT_FLAG)) {
primaryActionView.setOnLongClickListener(longPressListener);
quickContactView.setOnLongClickListener(longPressListener);
} else {
@@ -792,38 +795,17 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
mVoicemailPlaybackPresenter.shareVoicemail();
} else {
logCallLogAction(view.getId());
-
final IntentProvider intentProvider = (IntentProvider) view.getTag();
- if (intentProvider == null) {
- return;
- }
-
- final Intent intent = intentProvider.getIntent(mContext);
- // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
- if (intent == null) {
- return;
- }
-
- // We check to see if we are starting a Lightbringer intent. The reason is Lightbringer
- // intents need to be started using startActivityForResult instead of the usual startActivity
- String packageName = intent.getPackage();
- if (packageName != null && packageName.equals(getLightbringer().getPackageName(mContext))) {
- startLightbringerActivity(intent);
- } else {
- DialerUtils.startActivityWithErrorToast(mContext, intent);
+ if (intentProvider != null) {
+ final Intent intent = intentProvider.getIntent(mContext);
+ // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
+ if (intent != null) {
+ DialerUtils.startActivityWithErrorToast(mContext, intent);
+ }
}
}
}
- private void startLightbringerActivity(Intent intent) {
- try {
- Activity activity = (Activity) mContext;
- activity.startActivityForResult(intent, DialtactsActivity.ACTIVITY_REQUEST_CODE_LIGHTBRINGER);
- } catch (ActivityNotFoundException e) {
- Toast.makeText(mContext, R.string.activity_not_available, Toast.LENGTH_SHORT).show();
- }
- }
-
private CallComposerContact buildContact() {
CallComposerContact.Builder contact = CallComposerContact.newBuilder();
contact.setPhotoId(info.photoId);
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java b/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java
index c08d2c02b..0b4da7521 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java
@@ -57,7 +57,7 @@ public class CallLogNotificationsActivity extends AppCompatActivity {
String action = intent.getAction();
switch (action) {
case ACTION_SEND_SMS_FROM_MISSED_CALL_NOTIFICATION:
- MissedCallNotifier.getInstance(this)
+ MissedCallNotifier.getIstance(this)
.sendSmsFromMissedCall(
intent.getStringExtra(EXTRA_MISSED_CALL_NUMBER), intent.getData());
break;
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
index 4127d1f0b..e169b8de9 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
@@ -114,11 +114,6 @@ public class CallLogNotificationsQueryHelper {
MissedCallNotifier.NOTIFICATION_TAG);
}
- /** Update the voice mail notifications. */
- public static void updateVoicemailNotifications(Context context) {
- CallLogNotificationsService.updateVoicemailNotifications(context);
- }
-
/** Create a new instance of {@link NewCallsQuery}. */
public static NewCallsQuery createNewCallsQuery(
Context context, ContentResolver contentResolver) {
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
index f67837f8a..7dfd2cb69 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
@@ -26,7 +26,6 @@ import android.support.annotation.Nullable;
import com.android.dialer.common.LogUtil;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.PermissionsUtil;
-import me.leolin.shortcutbadger.ShortcutBadger;
/**
* Provides operations for managing call-related notifications.
@@ -47,17 +46,6 @@ public class CallLogNotificationsService extends IntentService {
/** Action to mark all the new voicemails as old. */
public static final String ACTION_MARK_NEW_VOICEMAILS_AS_OLD =
"com.android.dialer.calllog.ACTION_MARK_NEW_VOICEMAILS_AS_OLD";
- /** Action to update voicemail notifications. */
- public static final String ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS =
- "com.android.dialer.calllog.UPDATE_VOICEMAIL_NOTIFICATIONS";
- /**
- * Action to update the missed call notifications.
- *
- * <p>Includes optional extras {@link #EXTRA_MISSED_CALL_NUMBER} and {@link
- * #EXTRA_MISSED_CALL_COUNT}.
- */
- public static final String ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS =
- "com.android.dialer.calllog.UPDATE_MISSED_CALL_NOTIFICATIONS";
/** Action to mark all the new missed calls as old. */
public static final String ACTION_MARK_NEW_MISSED_CALLS_AS_OLD =
@@ -72,22 +60,6 @@ public class CallLogNotificationsService extends IntentService {
"com.android.dialer.calllog.CALL_BACK_FROM_MISSED_CALL_NOTIFICATION";
/**
- * Extra to be included with {@link #ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS} and {@link
- * #ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION} to identify the number to display, call or
- * text back.
- *
- * <p>It must be a {@link String}.
- */
- public static final String EXTRA_MISSED_CALL_NUMBER = "MISSED_CALL_NUMBER";
- /**
- * Extra to be included with {@link #ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS} to represent the
- * number of missed calls.
- *
- * <p>It must be a {@link Integer}
- */
- public static final String EXTRA_MISSED_CALL_COUNT = "MISSED_CALL_COUNT";
-
- /**
* Extra to be included with {@link #ACTION_INCOMING_POST_CALL} to represent a post call note.
*
* <p>It must be a {@link String}
@@ -109,40 +81,6 @@ public class CallLogNotificationsService extends IntentService {
super("CallLogNotificationsService");
}
- /**
- * Updates notifications for any new voicemails.
- *
- * @param context a valid context.
- */
- public static void updateVoicemailNotifications(Context context) {
- if (!TelecomUtil.isDefaultDialer(context)) {
- LogUtil.i(
- "CallLogNotificationsService.updateVoicemailNotifications",
- "not default dialer, ignoring voicemail notifications");
- return;
- }
- if (TelecomUtil.hasReadWriteVoicemailPermissions(context)) {
- Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS);
- context.startService(serviceIntent);
- }
- }
-
- /**
- * Updates notifications for any new missed calls.
- *
- * @param context A valid context.
- * @param count The number of new missed calls.
- * @param number The phone number of the newest missed call.
- */
- public static void updateMissedCallNotifications(Context context, int count, String number) {
- Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS);
- serviceIntent.putExtra(EXTRA_MISSED_CALL_COUNT, count);
- serviceIntent.putExtra(EXTRA_MISSED_CALL_NUMBER, number);
- context.startService(serviceIntent);
- }
-
public static void insertPostCallNote(Context context, String number, String postCallNote) {
Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
serviceIntent.setAction(ACTION_INCOMING_POST_CALL);
@@ -165,16 +103,6 @@ public class CallLogNotificationsService extends IntentService {
context.startService(serviceIntent);
}
- public static boolean updateBadgeCount(Context context, int count) {
- boolean success = ShortcutBadger.applyCount(context, count);
- LogUtil.i(
- "CallLogNotificationsService.updateBadgeCount",
- "update badge count: %d success: %b",
- count,
- success);
- return success;
- }
-
@Override
protected void onHandleIntent(Intent intent) {
if (intent == null) {
@@ -200,28 +128,21 @@ public class CallLogNotificationsService extends IntentService {
mVoicemailQueryHandler.markNewVoicemailsAsOld(intent.getData());
});
break;
- case ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS:
- DefaultVoicemailNotifier.getInstance(this).updateNotification();
- break;
- case ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS:
- int count = intent.getIntExtra(EXTRA_MISSED_CALL_COUNT, UNKNOWN_MISSED_CALL_COUNT);
- String number = intent.getStringExtra(EXTRA_MISSED_CALL_NUMBER);
- MissedCallNotifier.getInstance(this).updateMissedCallNotification(count, number);
- updateBadgeCount(this, count);
- break;
case ACTION_INCOMING_POST_CALL:
String note = intent.getStringExtra(EXTRA_POST_CALL_NOTE);
String phoneNumber = intent.getStringExtra(EXTRA_POST_CALL_NUMBER);
- MissedCallNotifier.getInstance(this).insertPostCallNotification(phoneNumber, note);
+ MissedCallNotifier.getIstance(this).insertPostCallNotification(phoneNumber, note);
break;
case ACTION_MARK_NEW_MISSED_CALLS_AS_OLD:
CallLogNotificationsQueryHelper.removeMissedCallNotifications(this, intent.getData());
TelecomUtil.cancelMissedCallsNotification(this);
break;
case ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION:
- MissedCallNotifier.getInstance(this)
+ MissedCallNotifier.getIstance(this)
.callBackFromMissedCall(
- intent.getStringExtra(EXTRA_MISSED_CALL_NUMBER), intent.getData());
+ intent.getStringExtra(
+ MissedCallNotificationReceiver.EXTRA_NOTIFICATION_PHONE_NUMBER),
+ intent.getData());
break;
default:
LogUtil.d("CallLogNotificationsService.onHandleIntent", "could not handle: " + intent);
diff --git a/java/com/android/dialer/app/calllog/CallLogReceiver.java b/java/com/android/dialer/app/calllog/CallLogReceiver.java
index 8fd1502bc..172d00100 100644
--- a/java/com/android/dialer/app/calllog/CallLogReceiver.java
+++ b/java/com/android/dialer/app/calllog/CallLogReceiver.java
@@ -38,9 +38,11 @@ public class CallLogReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (VoicemailContract.ACTION_NEW_VOICEMAIL.equals(intent.getAction())) {
checkVoicemailStatus(context);
- CallLogNotificationsService.updateVoicemailNotifications(context);
+ PendingResult pendingResult = goAsync();
+ DefaultVoicemailNotifier.updateVoicemailNotifications(context, pendingResult::finish);
} else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
- CallLogNotificationsService.updateVoicemailNotifications(context);
+ PendingResult pendingResult = goAsync();
+ DefaultVoicemailNotifier.updateVoicemailNotifications(context, pendingResult::finish);
} else {
LogUtil.w("CallLogReceiver.onReceive", "could not handle: " + intent);
}
diff --git a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
index d67f12266..58fe6fa2c 100644
--- a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
@@ -54,17 +54,20 @@ import com.android.dialer.blocking.FilteredNumbersUtil;
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutors;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.notification.NotificationChannelManager;
import com.android.dialer.notification.NotificationChannelManager.Channel;
import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.telecom.TelecomUtil;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/** Shows a voicemail notification in the status bar. */
-public class DefaultVoicemailNotifier {
+public class DefaultVoicemailNotifier implements Worker<Void, Void> {
public static final String TAG = "VoicemailNotifier";
@@ -90,14 +93,20 @@ public class DefaultVoicemailNotifier {
this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
}
- /** Returns an instance of {@link DefaultVoicemailNotifier}. */
- public static DefaultVoicemailNotifier getInstance(Context context) {
- return new DefaultVoicemailNotifier(
+ public DefaultVoicemailNotifier(Context context) {
+ this(
context,
CallLogNotificationsQueryHelper.getInstance(context),
new FilteredNumberAsyncQueryHandler(context));
}
+ @Nullable
+ @Override
+ public Void doInBackground(@Nullable Void input) throws Throwable {
+ updateNotification();
+ return null;
+ }
+
/**
* Updates the notification and notifies of the call with the given URI.
*
@@ -106,8 +115,9 @@ public class DefaultVoicemailNotifier {
*
* <p>It is not safe to call this method from the main thread.
*/
+ @VisibleForTesting
@WorkerThread
- public void updateNotification() {
+ void updateNotification() {
Assert.isWorkerThread();
// Lookup the list of new voicemails to include in the notification.
final List<NewCall> newCalls = queryHelper.getNewVoicemails();
@@ -178,6 +188,10 @@ public class DefaultVoicemailNotifier {
.setGroupSummary(true)
.setContentIntent(newVoicemailIntent(null));
+ if (BuildCompat.isAtLeastO()) {
+ groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
+ }
+
NotificationChannelManager.applyChannel(
groupSummary,
context,
@@ -392,4 +406,41 @@ public class DefaultVoicemailNotifier {
intent.putExtra(DialtactsActivity.EXTRA_CLEAR_NEW_VOICEMAILS, true);
return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
+
+ /**
+ * Updates the voicemail notifications displayed.
+ *
+ * @param runnable Called when the async update task completes no matter if it succeeds or fails.
+ * May be null.
+ */
+ static void updateVoicemailNotifications(Context context, Runnable runnable) {
+ if (!TelecomUtil.isDefaultDialer(context)) {
+ LogUtil.i(
+ "DefaultVoicemailNotifier.updateVoicemailNotifications",
+ "not default dialer, not scheduling update to voicemail notifications");
+ return;
+ }
+
+ DialerExecutors.createNonUiTaskBuilder(new DefaultVoicemailNotifier(context))
+ .onSuccess(
+ output -> {
+ LogUtil.i(
+ "DefaultVoicemailNotifier.updateVoicemailNotifications",
+ "update voicemail notifications successful");
+ if (runnable != null) {
+ runnable.run();
+ }
+ })
+ .onFailure(
+ throwable -> {
+ LogUtil.i(
+ "DefaultVoicemailNotifier.updateVoicemailNotifications",
+ "update voicemail notifications failed");
+ if (runnable != null) {
+ runnable.run();
+ }
+ })
+ .build()
+ .executeParallel(null);
+ }
}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
index 3a202034e..65bb6fa57 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
@@ -13,11 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.dialer.app.calllog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.support.v4.util.Pair;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutors;
+import me.leolin.shortcutbadger.ShortcutBadger;
/**
* Receives broadcasts that should trigger a refresh of the missed call notification. This includes
@@ -44,7 +49,36 @@ public class MissedCallNotificationReceiver extends BroadcastReceiver {
int count =
intent.getIntExtra(
EXTRA_NOTIFICATION_COUNT, CallLogNotificationsService.UNKNOWN_MISSED_CALL_COUNT);
- String number = intent.getStringExtra(EXTRA_NOTIFICATION_PHONE_NUMBER);
- CallLogNotificationsService.updateMissedCallNotifications(context, count, number);
+ String phoneNumber = intent.getStringExtra(EXTRA_NOTIFICATION_PHONE_NUMBER);
+
+ PendingResult pendingResult = goAsync();
+
+ DialerExecutors.createNonUiTaskBuilder(MissedCallNotifier.getIstance(context))
+ .onSuccess(
+ output -> {
+ LogUtil.i(
+ "MissedCallNotificationReceiver.onReceive",
+ "update missed call notifications successful");
+ updateBadgeCount(context, count);
+ pendingResult.finish();
+ })
+ .onFailure(
+ throwable -> {
+ LogUtil.i(
+ "MissedCallNotificationReceiver.onReceive",
+ "update missed call notifications failed");
+ pendingResult.finish();
+ })
+ .build()
+ .executeParallel(new Pair<>(count, phoneNumber));
+ }
+
+ private static void updateBadgeCount(Context context, int count) {
+ boolean success = ShortcutBadger.applyCount(context, count);
+ LogUtil.i(
+ "MissedCallNotificationReceiver.updateBadgeCount",
+ "update badge count: %d success: %b",
+ count,
+ success);
}
}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index de07bb437..dd13298bc 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -31,6 +31,7 @@ import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
import android.support.v4.os.UserManagerCompat;
+import android.support.v4.util.Pair;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
@@ -44,6 +45,7 @@ import com.android.dialer.app.list.DialtactsPagerAdapter;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.notification.NotificationChannelManager;
import com.android.dialer.notification.NotificationChannelManager.Channel;
import com.android.dialer.phonenumbercache.ContactInfo;
@@ -55,7 +57,7 @@ import java.util.List;
import java.util.Set;
/** Creates a notification for calls that the user missed (neither answered nor rejected). */
-public class MissedCallNotifier {
+public class MissedCallNotifier implements Worker<Pair<Integer, String>, Void> {
/** The tag used to identify notifications from this class. */
static final String NOTIFICATION_TAG = "MissedCallNotifier";
@@ -72,11 +74,15 @@ public class MissedCallNotifier {
this.callLogNotificationsQueryHelper = callLogNotificationsQueryHelper;
}
- /** Returns an instance of {@link MissedCallNotifier}. */
- public static MissedCallNotifier getInstance(Context context) {
- CallLogNotificationsQueryHelper callLogNotificationsQueryHelper =
- CallLogNotificationsQueryHelper.getInstance(context);
- return new MissedCallNotifier(context, callLogNotificationsQueryHelper);
+ static MissedCallNotifier getIstance(Context context) {
+ return new MissedCallNotifier(context, CallLogNotificationsQueryHelper.getInstance(context));
+ }
+
+ @Nullable
+ @Override
+ public Void doInBackground(@Nullable Pair<Integer, String> input) throws Throwable {
+ updateMissedCallNotification(input.first, input.second);
+ return null;
}
/**
@@ -88,8 +94,9 @@ public class MissedCallNotifier {
* @param number the phone number of the most recent call to display if the call log cannot be
* accessed. May be null if unknown.
*/
+ @VisibleForTesting
@WorkerThread
- public void updateMissedCallNotification(int count, @Nullable String number) {
+ void updateMissedCallNotification(int count, @Nullable String number) {
final int titleResId;
CharSequence expandedText; // The text in the notification's line 1 and 2.
@@ -375,7 +382,7 @@ public class MissedCallNotifier {
private PendingIntent createCallBackPendingIntent(String number, @NonNull Uri callUri) {
Intent intent = new Intent(context, CallLogNotificationsService.class);
intent.setAction(CallLogNotificationsService.ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION);
- intent.putExtra(CallLogNotificationsService.EXTRA_MISSED_CALL_NUMBER, number);
+ intent.putExtra(MissedCallNotificationReceiver.EXTRA_NOTIFICATION_PHONE_NUMBER, number);
intent.setData(callUri);
// Use FLAG_UPDATE_CURRENT to make sure any previous pending intent is updated with the new
// extra.
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
index 1440218fb..893d6bed9 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
@@ -33,6 +33,7 @@ import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
import com.android.dialer.common.LogUtil;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.util.PermissionsUtil;
public class VisualVoicemailCallLogFragment extends CallLogFragment {
@@ -54,19 +55,35 @@ public class VisualVoicemailCallLogFragment extends CallLogFragment {
public void onActivityCreated(Bundle savedInstanceState) {
mVoicemailPlaybackPresenter =
VoicemailPlaybackPresenter.getInstance(getActivity(), savedInstanceState);
- getActivity()
- .getContentResolver()
- .registerContentObserver(
- VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
+
+ if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
+ && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
+ getActivity()
+ .getContentResolver()
+ .registerContentObserver(
+ VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
+ } else {
+ LogUtil.w(
+ "VisualVoicemailCallLogFragment.onActivityCreated",
+ "read voicemail permission unavailable.");
+ }
super.onActivityCreated(savedInstanceState);
mVoicemailErrorManager =
new VoicemailErrorManager(getContext(), getAdapter().getAlertManager(), mModalAlertManager);
- getActivity()
- .getContentResolver()
- .registerContentObserver(
- VoicemailContract.Status.CONTENT_URI,
- true,
- mVoicemailErrorManager.getContentObserver());
+
+ if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
+ && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
+ getActivity()
+ .getContentResolver()
+ .registerContentObserver(
+ VoicemailContract.Status.CONTENT_URI,
+ true,
+ mVoicemailErrorManager.getContentObserver());
+ } else {
+ LogUtil.w(
+ "VisualVoicemailCallLogFragment.onActivityCreated",
+ "read voicemail permission unavailable.");
+ }
}
@Override
@@ -118,7 +135,9 @@ public class VisualVoicemailCallLogFragment extends CallLogFragment {
LogUtil.enterBlock("VisualVoicemailCallLogFragment.onPageSelected");
super.onVisible();
if (getActivity() != null) {
- getActivity().sendBroadcast(new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL));
+ Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
+ intent.setPackage(getActivity().getPackageName());
+ getActivity().sendBroadcast(intent);
Logger.get(getActivity()).logImpression(DialerImpression.Type.VVM_TAB_VIEWED);
getActivity().setVolumeControlStream(VoicemailAudioManager.PLAYBACK_STREAM);
}
diff --git a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
index 024394728..777f4c79f 100644
--- a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
+++ b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
@@ -20,14 +20,12 @@ import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
-import android.content.Intent;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.support.annotation.MainThread;
import android.support.annotation.Nullable;
import com.android.dialer.app.R;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
import com.android.dialer.notification.GroupedNotificationUtil;
/** Handles asynchronous queries to the call log for voicemail. */
@@ -79,17 +77,4 @@ public class VoicemailQueryHandler extends AsyncQueryHandler {
R.id.notification_visual_voicemail,
DefaultVoicemailNotifier.VISUAL_VOICEMAIL_NOTIFICATION_TAG);
}
-
- @Override
- protected void onUpdateComplete(int token, Object cookie, int result) {
- if (token == UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN) {
- if (mContext != null) {
- Intent serviceIntent = new Intent(mContext, CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS);
- mContext.startService(serviceIntent);
- } else {
- LogUtil.w(TAG, "Unknown update completed: ignoring: " + token);
- }
- }
- }
}
diff --git a/java/com/android/dialer/app/dialpad/DialpadFragment.java b/java/com/android/dialer/app/dialpad/DialpadFragment.java
index a0c348424..e9d57b399 100644
--- a/java/com/android/dialer/app/dialpad/DialpadFragment.java
+++ b/java/com/android/dialer/app/dialpad/DialpadFragment.java
@@ -447,7 +447,7 @@ public class DialpadFragment extends Fragment
setFormattedDigits(converted, null);
return true;
} else {
- if (!PermissionsUtil.hasContactsPermissions(getActivity())) {
+ if (!PermissionsUtil.hasContactsReadPermissions(getActivity())) {
return false;
}
String type = intent.getType();
diff --git a/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java b/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java
index 175360c2d..a0c8b18d3 100644
--- a/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java
+++ b/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java
@@ -77,7 +77,7 @@ public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
LogUtil.v(TAG, "Load in background " + mQuery);
}
- if (!PermissionsUtil.hasContactsPermissions(mContext)) {
+ if (!PermissionsUtil.hasContactsReadPermissions(mContext)) {
return new MatrixCursor(PhoneQuery.PROJECTION_PRIMARY);
}
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
index 02498939c..8dd52a9d4 100644
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ b/java/com/android/dialer/app/list/ListsFragment.java
@@ -48,6 +48,7 @@ import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.speeddial.SpeedDialFragment;
+import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
import java.util.ArrayList;
@@ -183,10 +184,15 @@ public class ListsFragment extends Fragment
mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
- getActivity()
- .getContentResolver()
- .registerContentObserver(
- VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
+ if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
+ && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
+ getActivity()
+ .getContentResolver()
+ .registerContentObserver(
+ VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
+ } else {
+ LogUtil.w("ListsFragment.onCreateView", "no voicemail read/add permissions");
+ }
Trace.endSection();
Trace.endSection();
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 4ae84b6d9..40fe74565 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -123,7 +123,7 @@ public class OldSpeedDialFragment extends Fragment
if (mContactTileAdapter != null) {
mContactTileAdapter.refreshContactsPreferences();
}
- if (PermissionsUtil.hasContactsPermissions(getActivity())) {
+ if (PermissionsUtil.hasContactsReadPermissions(getActivity())) {
if (getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE) == null) {
getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener);
@@ -235,7 +235,7 @@ public class OldSpeedDialFragment extends Fragment
// Use initLoader() instead of restartLoader() to refraining unnecessary reload.
// This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
// be called, on which we'll check if "all" contacts should be reloaded again or not.
- if (PermissionsUtil.hasContactsPermissions(activity)) {
+ if (PermissionsUtil.hasContactsReadPermissions(activity)) {
getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener);
} else {
setEmptyViewVisibility(true);
diff --git a/java/com/android/dialer/app/list/SearchFragment.java b/java/com/android/dialer/app/list/SearchFragment.java
index 264bdf81b..fcf8236e3 100644
--- a/java/com/android/dialer/app/list/SearchFragment.java
+++ b/java/com/android/dialer/app/list/SearchFragment.java
@@ -380,7 +380,7 @@ public class SearchFragment extends PhoneNumberPickerFragment {
return;
}
- if (PermissionsUtil.hasContactsPermissions(getActivity())) {
+ if (PermissionsUtil.hasContactsReadPermissions(getActivity())) {
super.startLoading();
} else if (TextUtils.isEmpty(getQueryString())) {
// Clear out any existing call shortcuts.
diff --git a/java/com/android/dialer/app/res/values-af/strings.xml b/java/com/android/dialer/app/res/values-af/strings.xml
index 2cd688023..7eaa7cb94 100644
--- a/java/com/android/dialer/app/res/values-af/strings.xml
+++ b/java/com/android/dialer/app/res/values-af/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Deblokkeer nommer"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Strooipos"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> is vanlyn en kan nie bereik word nie"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-am/strings.xml b/java/com/android/dialer/app/res/values-am/strings.xml
index 760099d26..dd20b3119 100644
--- a/java/com/android/dialer/app/res/values-am/strings.xml
+++ b/java/com/android/dialer/app/res/values-am/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"ቁጥርን አታግድ"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"አይፈለጌ መልዕክት"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ከመስመር ውጭ ነው እና ሊደረስበት አይችልም"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ar/strings.xml b/java/com/android/dialer/app/res/values-ar/strings.xml
index 6e387b490..c24d313c4 100644
--- a/java/com/android/dialer/app/res/values-ar/strings.xml
+++ b/java/com/android/dialer/app/res/values-ar/strings.xml
@@ -238,4 +238,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"إلغاء حظر الرقم"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"تعليق غير مرغوب فيه"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> غير متصل ولا يمكن الوصول إليه"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-az/strings.xml b/java/com/android/dialer/app/res/values-az/strings.xml
index 9522764aa..70e926cbe 100644
--- a/java/com/android/dialer/app/res/values-az/strings.xml
+++ b/java/com/android/dialer/app/res/values-az/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Nömrəni blokdan çıxarın"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> oflayn olduğu üçün əlaqə saxlamaq mümkün deyil"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
index c046d94aa..7ca2e56ec 100644
--- a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Deblokiraj broj"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Nepoželjan"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> je oflajn i ne možete da ga/je kontaktirate"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-be/strings.xml b/java/com/android/dialer/app/res/values-be/strings.xml
index 552e6ac17..effc7e025 100644
--- a/java/com/android/dialer/app/res/values-be/strings.xml
+++ b/java/com/android/dialer/app/res/values-be/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Разблакіраваць нумар"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Карыстальнік <xliff:g id="NAME">%1$s</xliff:g> па-за сеткай і не даступны"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-bg/strings.xml b/java/com/android/dialer/app/res/values-bg/strings.xml
index 277cb63a7..d3d1a9974 100644
--- a/java/com/android/dialer/app/res/values-bg/strings.xml
+++ b/java/com/android/dialer/app/res/values-bg/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Отблокиране на номера"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"С <xliff:g id="NAME">%1$s</xliff:g> не може да се установи връзка, тъй като е офлайн"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-bn/strings.xml b/java/com/android/dialer/app/res/values-bn/strings.xml
index 0a5569234..4b7354c00 100644
--- a/java/com/android/dialer/app/res/values-bn/strings.xml
+++ b/java/com/android/dialer/app/res/values-bn/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"নম্বর অবরোধ মুক্ত করুন"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"স্প্যাম"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> এখন অফলাইনে থাকায় যোগাযোগ করা যাবে না"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml
index 834d29609..4e028461a 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Deblokiraj broj"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Neželjena pošta"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Osoba <xliff:g id="NAME">%1$s</xliff:g> je van mreže i ne možete je kontaktirati"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ca/strings.xml b/java/com/android/dialer/app/res/values-ca/strings.xml
index 6afd86b6b..e18256d5a 100644
--- a/java/com/android/dialer/app/res/values-ca/strings.xml
+++ b/java/com/android/dialer/app/res/values-ca/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloqueja el número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Contingut brossa"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> no té connexió i no s\'hi pot contactar"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-cs/strings.xml b/java/com/android/dialer/app/res/values-cs/strings.xml
index 97f43319c..bb7e3c5fb 100644
--- a/java/com/android/dialer/app/res/values-cs/strings.xml
+++ b/java/com/android/dialer/app/res/values-cs/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Zrušit blokování čísla"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Uživatel <xliff:g id="NAME">%1$s</xliff:g> je offline a není možné se s ním spojit"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml
index 7f162b9db..498817652 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Ophæv blokering af nummer"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> er offline og kan ikke nås"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-de/strings.xml b/java/com/android/dialer/app/res/values-de/strings.xml
index eaa798694..ab12c1f4f 100644
--- a/java/com/android/dialer/app/res/values-de/strings.xml
+++ b/java/com/android/dialer/app/res/values-de/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Blockierung der Nummer aufheben"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ist offline und nicht erreichbar"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-el/strings.xml b/java/com/android/dialer/app/res/values-el/strings.xml
index 6996817d8..2a00c46f7 100644
--- a/java/com/android/dialer/app/res/values-el/strings.xml
+++ b/java/com/android/dialer/app/res/values-el/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Κατάργηση αποκλεισμού αριθμού"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Ανεπιθύμητα"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Ο χρήστης <xliff:g id="NAME">%1$s</xliff:g> είναι εκτός σύνδεσης και δεν μπορείτε να έρθετε σε επικοινωνία μαζί του"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
index 967c74158..9229be690 100644
--- a/java/com/android/dialer/app/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Unblock number"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> is offline and can\'t be reached"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
index 967c74158..9229be690 100644
--- a/java/com/android/dialer/app/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Unblock number"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> is offline and can\'t be reached"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
index 967c74158..9229be690 100644
--- a/java/com/android/dialer/app/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Unblock number"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> is offline and can\'t be reached"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
index 4a39f3418..17a1b1438 100644
--- a/java/com/android/dialer/app/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloquear número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> está sin conexión y no se lo puede contactar"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-es/strings.xml b/java/com/android/dialer/app/res/values-es/strings.xml
index f3ebe5d9b..15c129972 100644
--- a/java/com/android/dialer/app/res/values-es/strings.xml
+++ b/java/com/android/dialer/app/res/values-es/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloquear número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> no tiene conexión y no se puede contactar"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-et/strings.xml b/java/com/android/dialer/app/res/values-et/strings.xml
index e880e3d5e..3dd4ebc04 100644
--- a/java/com/android/dialer/app/res/values-et/strings.xml
+++ b/java/com/android/dialer/app/res/values-et/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Numbri deblokeerimine"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Rämpspost"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ei ole võrgus ja temaga ei saa ühendust"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-eu/strings.xml b/java/com/android/dialer/app/res/values-eu/strings.xml
index 079e5c75b..e2701f965 100644
--- a/java/com/android/dialer/app/res/values-eu/strings.xml
+++ b/java/com/android/dialer/app/res/values-eu/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desblokeatu zenbakia"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spama"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ez dago konektatuta, eta ezin zara jarri harremanetan berarekin"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-fa/strings.xml b/java/com/android/dialer/app/res/values-fa/strings.xml
index 67f58a04e..fb1fa8b31 100644
--- a/java/com/android/dialer/app/res/values-fa/strings.xml
+++ b/java/com/android/dialer/app/res/values-fa/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"رفع انسداد شماره"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"هرزنامه"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> آفلاین است و در دسترس نمی‌باشد"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-fi/strings.xml b/java/com/android/dialer/app/res/values-fi/strings.xml
index 417305b69..3a03c8e55 100644
--- a/java/com/android/dialer/app/res/values-fi/strings.xml
+++ b/java/com/android/dialer/app/res/values-fi/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Poista numeron esto"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Roskaposti"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> on offline-tilassa, eikä siihen saada yhteyttä."</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
index 0429a767f..4610e6048 100644
--- a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Débloquer le numéro"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Pourriel"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> est hors connexion et injoignable"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-fr/strings.xml b/java/com/android/dialer/app/res/values-fr/strings.xml
index 933acc130..e1eda7243 100644
--- a/java/com/android/dialer/app/res/values-fr/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Débloquer le numéro"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> est injoignable, car non connecté"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-gl/strings.xml b/java/com/android/dialer/app/res/values-gl/strings.xml
index df162bffd..2a79835c2 100644
--- a/java/com/android/dialer/app/res/values-gl/strings.xml
+++ b/java/com/android/dialer/app/res/values-gl/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloquear número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Non se pode contactar con <xliff:g id="NAME">%1$s</xliff:g> porque está sen conexión"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-gu/strings.xml b/java/com/android/dialer/app/res/values-gu/strings.xml
index ad5cd0776..940dea028 100644
--- a/java/com/android/dialer/app/res/values-gu/strings.xml
+++ b/java/com/android/dialer/app/res/values-gu/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"નંબર અનાવરોધિત કરો"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"સ્પામ"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ઑફલાઇન છે અને તેના સુધી પહોંચી શકતાં નથી"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-hi/strings.xml b/java/com/android/dialer/app/res/values-hi/strings.xml
index 320baa559..c4f135b16 100644
--- a/java/com/android/dialer/app/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/res/values-hi/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"नंबर अनवरोधित करें"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"स्पैम"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ऑफ़लाइन हैं और उन तक नहीं पहुंचा जा सकता"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-hr/strings.xml b/java/com/android/dialer/app/res/values-hr/strings.xml
index ee2df5495..fb96256f5 100644
--- a/java/com/android/dialer/app/res/values-hr/strings.xml
+++ b/java/com/android/dialer/app/res/values-hr/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Deblokiranje broja"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Neželjena pošta"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> nije online i nije dostupan"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-hu/strings.xml b/java/com/android/dialer/app/res/values-hu/strings.xml
index 9660b0c47..a39c5846f 100644
--- a/java/com/android/dialer/app/res/values-hu/strings.xml
+++ b/java/com/android/dialer/app/res/values-hu/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Szám tiltásának feloldása"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> offline, és nem érhető el."</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-hy/strings.xml b/java/com/android/dialer/app/res/values-hy/strings.xml
index 58a8e9a35..362c57048 100644
--- a/java/com/android/dialer/app/res/values-hy/strings.xml
+++ b/java/com/android/dialer/app/res/values-hy/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Արգելաբացել համարը"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Լցոն"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> օգտատերը միացած չէ ցանցին և անհասանելի է"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-in/strings.xml b/java/com/android/dialer/app/res/values-in/strings.xml
index 3b9fcbeca..ca7341ae3 100644
--- a/java/com/android/dialer/app/res/values-in/strings.xml
+++ b/java/com/android/dialer/app/res/values-in/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Bebaskan nomor"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> sedang offline dan tidak dapat dijangkau"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-is/strings.xml b/java/com/android/dialer/app/res/values-is/strings.xml
index e08471203..a8a9ae15d 100644
--- a/java/com/android/dialer/app/res/values-is/strings.xml
+++ b/java/com/android/dialer/app/res/values-is/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Taka númer af bannlista"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Ruslnúmer"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> er án nettengingar og ekki er hægt að ná í viðkomandi"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-it/strings.xml b/java/com/android/dialer/app/res/values-it/strings.xml
index 341d49771..7fc581115 100644
--- a/java/com/android/dialer/app/res/values-it/strings.xml
+++ b/java/com/android/dialer/app/res/values-it/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Sblocca numero"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> è offline e non può essere raggiunto"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-iw/strings.xml b/java/com/android/dialer/app/res/values-iw/strings.xml
index 9b61af74b..743d45505 100644
--- a/java/com/android/dialer/app/res/values-iw/strings.xml
+++ b/java/com/android/dialer/app/res/values-iw/strings.xml
@@ -234,4 +234,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"בטל חסימת מספר"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"ספאם"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"לא ניתן להתקשר כי המכשיר של <xliff:g id="NAME">%1$s</xliff:g> לא מחובר כרגע"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ja/strings.xml b/java/com/android/dialer/app/res/values-ja/strings.xml
index 22cfd4831..72bc2debb 100644
--- a/java/com/android/dialer/app/res/values-ja/strings.xml
+++ b/java/com/android/dialer/app/res/values-ja/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"番号のブロックを解除"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"スパム"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> さんはオフラインのため、通話を受信できません"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ka/strings.xml b/java/com/android/dialer/app/res/values-ka/strings.xml
index 06bc726a6..befdd3aca 100644
--- a/java/com/android/dialer/app/res/values-ka/strings.xml
+++ b/java/com/android/dialer/app/res/values-ka/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"ნომრის განბლოკვა"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"სპამი"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ხაზგარეშეა და ვერ დაუკავშირდებით"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-kk/strings.xml b/java/com/android/dialer/app/res/values-kk/strings.xml
index 409217a77..8ed666109 100644
--- a/java/com/android/dialer/app/res/values-kk/strings.xml
+++ b/java/com/android/dialer/app/res/values-kk/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Нөмірді бөгеуден шығару"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> желіден тыс және байланысу мүмкін емес"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-km/strings.xml b/java/com/android/dialer/app/res/values-km/strings.xml
index 7ebe85d5b..298070806 100644
--- a/java/com/android/dialer/app/res/values-km/strings.xml
+++ b/java/com/android/dialer/app/res/values-km/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"ឈប់ទប់ស្កាត់លេខ"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"សារ​ឥតបានការ"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> មិន​នៅ​លើ​អ៊ីនធឺណិត និង​មិន​អាច​ទាក់ទង​បាន​ទេ"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-kn/strings.xml b/java/com/android/dialer/app/res/values-kn/strings.xml
index 3e70c8819..ff780f99c 100644
--- a/java/com/android/dialer/app/res/values-kn/strings.xml
+++ b/java/com/android/dialer/app/res/values-kn/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"ಸಂಖ್ಯೆಯನ್ನು ಅನಿರ್ಬಂಧಿಸು"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"ಸ್ಪ್ಯಾಮ್"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ಆಫ್‌ಲೈನ್ ಆಗಿದ್ದಾರೆ ಮತ್ತು ಅವರನ್ನು ತಲುಪಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ko/strings.xml b/java/com/android/dialer/app/res/values-ko/strings.xml
index 0f6abdf59..cdd0d5205 100644
--- a/java/com/android/dialer/app/res/values-ko/strings.xml
+++ b/java/com/android/dialer/app/res/values-ko/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"번호 차단 해제"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"스팸"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g>님은 오프라인 상태이며 연락할 수 없습니다."</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ky/strings.xml b/java/com/android/dialer/app/res/values-ky/strings.xml
index 4a2ccf3f7..0784a3e07 100644
--- a/java/com/android/dialer/app/res/values-ky/strings.xml
+++ b/java/com/android/dialer/app/res/values-ky/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Номерди бөгөттөн чыгаруу"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> оффлайн режиминде болгондуктан, байланышууга болбойт"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-lo/strings.xml b/java/com/android/dialer/app/res/values-lo/strings.xml
index 315534639..d7b8f3207 100644
--- a/java/com/android/dialer/app/res/values-lo/strings.xml
+++ b/java/com/android/dialer/app/res/values-lo/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"ປົດ​ບ​ລັອກ​ໝາຍ​ເລກ"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"ສະແປມ"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ອອບລາຍຢູ່ ແລະ ບໍ່ສາມາດຕິດຕໍ່ຫາໄດ້"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-lt/strings.xml b/java/com/android/dialer/app/res/values-lt/strings.xml
index 6ac7e4d2b..eaa11cbc7 100644
--- a/java/com/android/dialer/app/res/values-lt/strings.xml
+++ b/java/com/android/dialer/app/res/values-lt/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Panaikinti numerio blokavimą"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Šlamštas"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> yra neprisijungęs (-usi) ir su juo (ja) negalima susisiekti"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-lv/strings.xml b/java/com/android/dialer/app/res/values-lv/strings.xml
index df51e60a4..3c73cd580 100644
--- a/java/com/android/dialer/app/res/values-lv/strings.xml
+++ b/java/com/android/dialer/app/res/values-lv/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Atbloķēt numuru"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Nevēlami zvani"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Lietotājs <xliff:g id="NAME">%1$s</xliff:g> ir bezsaistē un nav sasniedzams"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-mk/strings.xml b/java/com/android/dialer/app/res/values-mk/strings.xml
index 1086e34fb..016821d96 100644
--- a/java/com/android/dialer/app/res/values-mk/strings.xml
+++ b/java/com/android/dialer/app/res/values-mk/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Одблокирај го бројот"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Контактот <xliff:g id="NAME">%1$s</xliff:g> е офлајн и недостапен"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ml/strings.xml b/java/com/android/dialer/app/res/values-ml/strings.xml
index 7a43a2dfd..081a05a04 100644
--- a/java/com/android/dialer/app/res/values-ml/strings.xml
+++ b/java/com/android/dialer/app/res/values-ml/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"നമ്പർ അൺബ്ലോക്കുചെയ്യുക"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"സ്‌പാം"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ഓഫ്‌ലൈനായതിനാൽ കോൾ ചെയ്യാനാവില്ല"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-mn/strings.xml b/java/com/android/dialer/app/res/values-mn/strings.xml
index 0dda88e18..16f7e1ad1 100644
--- a/java/com/android/dialer/app/res/values-mn/strings.xml
+++ b/java/com/android/dialer/app/res/values-mn/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Дугаар блокноос гаргах"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> офлайн, холбогдох боломжгүй байна"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-mr/strings.xml b/java/com/android/dialer/app/res/values-mr/strings.xml
index 505dae72c..eb374b9e0 100644
--- a/java/com/android/dialer/app/res/values-mr/strings.xml
+++ b/java/com/android/dialer/app/res/values-mr/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"नंबर अनावरोधित करा"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"स्पॅम"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ऑफलाइन आहे आणि त्यांच्याशी संपर्क साधू शकत नाही"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ms/strings.xml b/java/com/android/dialer/app/res/values-ms/strings.xml
index 74d9b051a..c471ce922 100644
--- a/java/com/android/dialer/app/res/values-ms/strings.xml
+++ b/java/com/android/dialer/app/res/values-ms/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Nyahsekat nombor"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> di luar talian dan tidak dapat dihubungi"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-my/strings.xml b/java/com/android/dialer/app/res/values-my/strings.xml
index 88f5bd394..dd81dee5f 100644
--- a/java/com/android/dialer/app/res/values-my/strings.xml
+++ b/java/com/android/dialer/app/res/values-my/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"နံပါတ်ကို ဖွင့်မည်"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"စပမ်း"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> သည် အော့ဖ်လိုင်းဖြစ်နေသောကြောင့် ဆက်သွယ်၍ မရနိုင်ပါ"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-nb/strings.xml b/java/com/android/dialer/app/res/values-nb/strings.xml
index 7a8528e2e..8f83c949d 100644
--- a/java/com/android/dialer/app/res/values-nb/strings.xml
+++ b/java/com/android/dialer/app/res/values-nb/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Opphev blokkeringen av nummeret"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Nettsøppel"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> er frakoblet og kan ikke nås"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ne/strings.xml b/java/com/android/dialer/app/res/values-ne/strings.xml
index 8595062d3..f9524637a 100644
--- a/java/com/android/dialer/app/res/values-ne/strings.xml
+++ b/java/com/android/dialer/app/res/values-ne/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"नम्बरमाथिको रोक हटाउनुहोस्"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"स्प्याम"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> अफलाइन हुनुहुन्छ र वहाँलाई भेट्न सकिँदैन"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-nl/strings.xml b/java/com/android/dialer/app/res/values-nl/strings.xml
index 54d784b91..498436897 100644
--- a/java/com/android/dialer/app/res/values-nl/strings.xml
+++ b/java/com/android/dialer/app/res/values-nl/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Blokkeren van nummer opheffen"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> is offline en kan niet worden bereikt"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-no/strings.xml b/java/com/android/dialer/app/res/values-no/strings.xml
index 7a8528e2e..8f83c949d 100644
--- a/java/com/android/dialer/app/res/values-no/strings.xml
+++ b/java/com/android/dialer/app/res/values-no/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Opphev blokkeringen av nummeret"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Nettsøppel"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> er frakoblet og kan ikke nås"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-pa/strings.xml b/java/com/android/dialer/app/res/values-pa/strings.xml
index 880eecccd..88e3aa718 100644
--- a/java/com/android/dialer/app/res/values-pa/strings.xml
+++ b/java/com/android/dialer/app/res/values-pa/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"ਨੰਬਰ ਨੂੰ ਅਨਬਲੌਕ ਕਰੋ"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"ਸਪੈਮ"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ਔਫਲਾਈਨ ਹੈ ਅਤੇ ਉਸ \'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-pl/strings.xml b/java/com/android/dialer/app/res/values-pl/strings.xml
index b36d09628..f408ed353 100644
--- a/java/com/android/dialer/app/res/values-pl/strings.xml
+++ b/java/com/android/dialer/app/res/values-pl/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Odblokuj numer"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Użytkownik <xliff:g id="NAME">%1$s</xliff:g> jest offline i nie można się z nim skontaktować"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
index 9e0eab854..0fc1da7ac 100644
--- a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloquear número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> está off-line e não é possível entrar em contato"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
index 669d66065..f12e25456 100644
--- a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloquear número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> está offline e não pode ser contactado"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-pt/strings.xml b/java/com/android/dialer/app/res/values-pt/strings.xml
index 9e0eab854..0fc1da7ac 100644
--- a/java/com/android/dialer/app/res/values-pt/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Desbloquear número"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> está off-line e não é possível entrar em contato"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ro/strings.xml b/java/com/android/dialer/app/res/values-ro/strings.xml
index 007199d3a..d07dbed87 100644
--- a/java/com/android/dialer/app/res/values-ro/strings.xml
+++ b/java/com/android/dialer/app/res/values-ro/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Deblocați numărul"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> este offline și nu poate fi contactat(ă)"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ru/strings.xml b/java/com/android/dialer/app/res/values-ru/strings.xml
index 6744592e8..e98622de8 100644
--- a/java/com/android/dialer/app/res/values-ru/strings.xml
+++ b/java/com/android/dialer/app/res/values-ru/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Разблокировать номер"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> сейчас офлайн и не ответит на вызов"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-si/strings.xml b/java/com/android/dialer/app/res/values-si/strings.xml
index 4340c0edf..c4ae1736d 100644
--- a/java/com/android/dialer/app/res/values-si/strings.xml
+++ b/java/com/android/dialer/app/res/values-si/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"අංකය අවහිර නොකරන්න"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"අයාචිත තැපෑල"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> නොබැඳි අතර ළඟා වීමට නොහැකිය"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-sk/strings.xml b/java/com/android/dialer/app/res/values-sk/strings.xml
index 25b8d74c5..b5f426938 100644
--- a/java/com/android/dialer/app/res/values-sk/strings.xml
+++ b/java/com/android/dialer/app/res/values-sk/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Zrušiť blokovanie čísla"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> je offline a nedá sa zastihnúť"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-sl/strings.xml b/java/com/android/dialer/app/res/values-sl/strings.xml
index d5a22d5be..51ac390de 100644
--- a/java/com/android/dialer/app/res/values-sl/strings.xml
+++ b/java/com/android/dialer/app/res/values-sl/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Odblokiranje telefonske številke"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Vsiljena pošta"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Oseba <xliff:g id="NAME">%1$s</xliff:g> nima vzpostavljene povezave in ni dosegljiva"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml
index cfa84436f..8bc3e85be 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Zhblloko numrin"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"E bezdisshme"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> është jashtë linje dhe nuk mund të kontaktohet"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-sr/strings.xml b/java/com/android/dialer/app/res/values-sr/strings.xml
index d8222da95..e7f7f912d 100644
--- a/java/com/android/dialer/app/res/values-sr/strings.xml
+++ b/java/com/android/dialer/app/res/values-sr/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Деблокирај број"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Непожељан"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> је офлајн и не можете да га/је контактирате"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-sv/strings.xml b/java/com/android/dialer/app/res/values-sv/strings.xml
index 47b215136..36616ce83 100644
--- a/java/com/android/dialer/app/res/values-sv/strings.xml
+++ b/java/com/android/dialer/app/res/values-sv/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Häv blockeringen av numret"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> är offline och går inte att nå"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-sw/strings.xml b/java/com/android/dialer/app/res/values-sw/strings.xml
index 1516b9a9c..fdbdd7d02 100644
--- a/java/com/android/dialer/app/res/values-sw/strings.xml
+++ b/java/com/android/dialer/app/res/values-sw/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Ondolea nambari kizuizi"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Taka"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> hayuko mtandaoni na hapatikani"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ta/strings.xml b/java/com/android/dialer/app/res/values-ta/strings.xml
index 5a80a2b4a..f7e1d19c4 100644
--- a/java/com/android/dialer/app/res/values-ta/strings.xml
+++ b/java/com/android/dialer/app/res/values-ta/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"எண்ணை அனுமதி"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"ஸ்பேம்"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ஆஃப்லைனில் உள்ளதால், தொடர்புகொள்ள முடியாது"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-te/strings.xml b/java/com/android/dialer/app/res/values-te/strings.xml
index aea962527..babfb9a1e 100644
--- a/java/com/android/dialer/app/res/values-te/strings.xml
+++ b/java/com/android/dialer/app/res/values-te/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"నంబర్‌ను అన్‌బ్లాక్ చేయి"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"స్పామ్"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ఆఫ్‌లైన్‌లో ఉన్నందున వారిని చేరుకోవడం సాధ్యపడదు"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-th/strings.xml b/java/com/android/dialer/app/res/values-th/strings.xml
index cecf217a1..4c2fd37b2 100644
--- a/java/com/android/dialer/app/res/values-th/strings.xml
+++ b/java/com/android/dialer/app/res/values-th/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"เลิกบล็อกหมายเลข"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"สแปม"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ออฟไลน์อยู่และไม่สามารถติดต่อได้"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-tl/strings.xml b/java/com/android/dialer/app/res/values-tl/strings.xml
index d7408cb01..6afb11c1d 100644
--- a/java/com/android/dialer/app/res/values-tl/strings.xml
+++ b/java/com/android/dialer/app/res/values-tl/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Alisin sa pagkaka-block ang numero"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"Offline si <xliff:g id="NAME">%1$s</xliff:g> at hindi makontak"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-tr/strings.xml b/java/com/android/dialer/app/res/values-tr/strings.xml
index 3c92206df..8b30d4bff 100644
--- a/java/com/android/dialer/app/res/values-tr/strings.xml
+++ b/java/com/android/dialer/app/res/values-tr/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Numaranın engellemesini kaldır"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> çevrimdışı olduğundan ulaşılamıyor"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-uk/strings.xml b/java/com/android/dialer/app/res/values-uk/strings.xml
index 5a1dfcc59..f1c5b3f37 100644
--- a/java/com/android/dialer/app/res/values-uk/strings.xml
+++ b/java/com/android/dialer/app/res/values-uk/strings.xml
@@ -235,4 +235,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Розблокувати номер"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Спам"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> не в мережі, неможливо встановити зв’язок"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml
index eec7db062..b21281288 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"نمبر غیر مسدود کریں"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"سپام"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> آف لائن ہے اور اس تک پہنچا نہیں جا سکتا"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-uz/strings.xml b/java/com/android/dialer/app/res/values-uz/strings.xml
index 2a2b7afba..e52d2bdf7 100644
--- a/java/com/android/dialer/app/res/values-uz/strings.xml
+++ b/java/com/android/dialer/app/res/values-uz/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Raqamni blokdan chiqarish"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> hozir oflayn va u bilan bog‘lanishning imkoni yo‘q"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-vi/strings.xml b/java/com/android/dialer/app/res/values-vi/strings.xml
index 9def34a1e..66b346854 100644
--- a/java/com/android/dialer/app/res/values-vi/strings.xml
+++ b/java/com/android/dialer/app/res/values-vi/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Bỏ chặn số"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Spam"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> ngoại tuyến và không liên hệ được"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
index c1b802979..c64234e22 100644
--- a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"取消屏蔽号码"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"骚扰电话号码"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g>不在线,无法接通"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
index 95b72f2b5..693e56caa 100644
--- a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
@@ -230,4 +230,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"解除封鎖號碼"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"垃圾號碼"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g>已離線,無法取得聯繫"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
index c846980c1..3675d3f09 100644
--- a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
@@ -233,4 +233,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"解除封鎖號碼"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"騷擾/廣告電話"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g>已離線,無法接聽來電"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values-zu/strings.xml b/java/com/android/dialer/app/res/values-zu/strings.xml
index 07aa68d24..0d9957dda 100644
--- a/java/com/android/dialer/app/res/values-zu/strings.xml
+++ b/java/com/android/dialer/app/res/values-zu/strings.xml
@@ -231,4 +231,6 @@
<string name="call_log_action_unblock_number" msgid="6100117033288448758">"Vulela inombolo"</string>
<string name="spam_number_call_log_label" msgid="2678431398326811131">"Ugaxekile"</string>
<string name="call_composer_connection_failed" msgid="6776461585447831242">"U-<xliff:g id="NAME">%1$s</xliff:g> akaxhunyiwe kwi-inthanethi futhi akakwazi ukufinyelelwa"</string>
+ <!-- no translation found for about_phone_label (582991354677973731) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 174bbe17a..9e1fdeb5a 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -897,4 +897,7 @@
<!-- Shown as a message that notifies the user enriched calling isn't working -->
<string name="call_composer_connection_failed"><xliff:g id="name">%1$s</xliff:g> is offline and can\'t be reached</string>
+ <!-- Label for setting that shows more information about the Phone app [CHAR LIMIT=30] -->
+ <string name="about_phone_label">About</string>
+
</resources>
diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
index fae5ff3ee..f1c270ca9 100644
--- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java
+++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
@@ -32,6 +32,7 @@ import android.telephony.TelephonyManager;
import android.view.MenuItem;
import android.widget.Toast;
import com.android.contacts.common.compat.TelephonyManagerCompat;
+import com.android.dialer.about.AboutPhoneFragment;
import com.android.dialer.app.R;
import com.android.dialer.blocking.FilteredNumberCompat;
import com.android.dialer.common.LogUtil;
@@ -136,6 +137,11 @@ public class DialerSettingsActivity extends AppCompatPreferenceActivity {
accessibilitySettingsHeader.intent = accessibilitySettingsIntent;
target.add(accessibilitySettingsHeader);
}
+
+ Header aboutPhoneHeader = new Header();
+ aboutPhoneHeader.titleRes = R.string.about_phone_label;
+ aboutPhoneHeader.fragment = AboutPhoneFragment.class.getName();
+ target.add(aboutPhoneHeader);
}
private void addVoicemailSettings(List<Header> target, boolean isPrimaryUser) {
diff --git a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
index a7ef4f43a..9d07ec561 100644
--- a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
+++ b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
@@ -52,39 +52,32 @@ public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
PhoneAccountHandle phoneAccountHandle =
Assert.isNotNull(intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE));
- // Carrier might not send voicemail count. Missing extra means there are unknown numbers of
- // voicemails (One or more). Treat it as 1 so the generic version will be shown. ("Voicemail"
- // instead of "X voicemails")
- int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, 1);
+ int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, -1);
- // Need credential encrypted storage to access preferences.
- if (UserManagerCompat.isUserUnlocked(context)) {
- PerAccountSharedPreferences preferences =
- new PerAccountSharedPreferences(
- context, phoneAccountHandle, PreferenceManager.getDefaultSharedPreferences(context));
- // Carriers may send multiple notifications for the same voicemail.
- if (count != 0 && count == preferences.getInt(LEGACY_VOICEMAIL_COUNT, -1)) {
- LogUtil.i(
- "LegacyVoicemailNotificationReceiver.onReceive",
- "voicemail count hasn't changed, ignoring");
- return;
- }
- preferences.edit().putInt(LEGACY_VOICEMAIL_COUNT, count).apply();
- } else {
+ if (!hasVoicemailCountChanged(context, phoneAccountHandle, count)) {
LogUtil.i(
"LegacyVoicemailNotificationReceiver.onReceive",
- "User locked, bypassing voicemail count check");
+ "voicemail count hasn't changed, ignoring");
+ return;
+ }
+
+ if (count == -1) {
+ // Carrier might not send voicemail count. Missing extra means there are unknown numbers of
+ // voicemails (One or more). Treat it as 1 so the generic version will be shown. ("Voicemail"
+ // instead of "X voicemails")
+ count = 1;
}
if (count == 0) {
LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "clearing notification");
- DefaultVoicemailNotifier.getInstance(context).cancelLegacyNotification();
+ new DefaultVoicemailNotifier(context).cancelLegacyNotification();
return;
}
- if (VoicemailComponent.get(context)
- .getVoicemailClient()
- .isActivated(context, phoneAccountHandle)) {
+ if (UserManagerCompat.isUserUnlocked(context)
+ && VoicemailComponent.get(context)
+ .getVoicemailClient()
+ .isActivated(context, phoneAccountHandle)) {
LogUtil.i(
"LegacyVoicemailNotificationReceiver.onReceive",
"visual voicemail is activated, ignoring notification");
@@ -98,7 +91,7 @@ public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
intent.getParcelableExtra(TelephonyManager.EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT);
LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "sending notification");
- DefaultVoicemailNotifier.getInstance(context)
+ new DefaultVoicemailNotifier(context)
.notifyLegacyVoicemail(
phoneAccountHandle,
count,
@@ -106,4 +99,30 @@ public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
callVoicemailIntent,
voicemailSettingIntent);
}
+
+ private static boolean hasVoicemailCountChanged(
+ Context context, PhoneAccountHandle phoneAccountHandle, int newCount) {
+ // Need credential encrypted storage to access preferences.
+ if (!UserManagerCompat.isUserUnlocked(context)) {
+ LogUtil.i(
+ "LegacyVoicemailNotificationReceiver.onReceive",
+ "User locked, bypassing voicemail count check");
+ return true;
+ }
+
+ if (newCount == -1) {
+ // Carrier does not report voicemail count
+ return true;
+ }
+
+ PerAccountSharedPreferences preferences =
+ new PerAccountSharedPreferences(
+ context, phoneAccountHandle, PreferenceManager.getDefaultSharedPreferences(context));
+ // Carriers may send multiple notifications for the same voicemail.
+ if (newCount != 0 && newCount == preferences.getInt(LEGACY_VOICEMAIL_COUNT, -1)) {
+ return false;
+ }
+ preferences.edit().putInt(LEGACY_VOICEMAIL_COUNT, newCount).apply();
+ return true;
+ }
}
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index 524873f6d..ea48c8321 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -57,6 +57,7 @@ import com.android.dialer.constants.Constants;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.phonenumbercache.CallLogQuery;
+import com.android.dialer.util.PermissionsUtil;
import com.google.common.io.ByteStreams;
import java.io.File;
import java.io.IOException;
@@ -1051,7 +1052,9 @@ public class VoicemailPlaybackPresenter
mFetchResultHandler = handler;
mVoicemailUri = uri;
if (mContext != null) {
- mContext.getContentResolver().registerContentObserver(mVoicemailUri, false, this);
+ if (PermissionsUtil.hasReadVoicemailPermissions(mContext)) {
+ mContext.getContentResolver().registerContentObserver(mVoicemailUri, false, this);
+ }
mFetchResultHandler.postDelayed(this, FETCH_CONTENT_TIMEOUT_MS);
}
}
diff --git a/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java b/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java
index 3cc42207d..6e9fe1315 100644
--- a/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java
+++ b/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java
@@ -21,6 +21,7 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v4.os.UserManagerCompat;
import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -100,6 +101,10 @@ public class BlockedNumbersAutoMigrator {
@Nullable
@Override
public Boolean doInBackground(@Nullable Void input) {
+ if (!UserManagerCompat.isUserUnlocked(appContext)) {
+ LogUtil.i("BlockedNumbersAutoMigrator", "not attempting auto-migrate: device is locked");
+ return false;
+ }
SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(appContext);
diff --git a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
index 12a2086d4..fa74850ba 100644
--- a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
+++ b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
@@ -137,14 +137,6 @@ public class FilteredNumberAsyncQueryHandler extends AsyncQueryHandler {
return;
}
- String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
- String formattedNumber = FilteredNumbersUtil.getBlockableNumber(context, e164Number, number);
- if (TextUtils.isEmpty(formattedNumber)) {
- listener.onCheckComplete(INVALID_ID);
- blockedNumberCache.put(number, INVALID_ID);
- return;
- }
-
if (!UserManagerCompat.isUserUnlocked(context)) {
LogUtil.i(
"FilteredNumberAsyncQueryHandler.isBlockedNumber",
@@ -153,6 +145,14 @@ public class FilteredNumberAsyncQueryHandler extends AsyncQueryHandler {
return;
}
+ String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+ String formattedNumber = FilteredNumbersUtil.getBlockableNumber(context, e164Number, number);
+ if (TextUtils.isEmpty(formattedNumber)) {
+ listener.onCheckComplete(INVALID_ID);
+ blockedNumberCache.put(number, INVALID_ID);
+ return;
+ }
+
startQuery(
NO_TOKEN,
new Listener() {
diff --git a/java/com/android/dialer/blocking/FilteredNumbersUtil.java b/java/com/android/dialer/blocking/FilteredNumbersUtil.java
index a95e8d789..3c001a2c2 100644
--- a/java/com/android/dialer/blocking/FilteredNumbersUtil.java
+++ b/java/com/android/dialer/blocking/FilteredNumbersUtil.java
@@ -37,6 +37,7 @@ import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import com.android.dialer.notification.NotificationChannelManager;
import com.android.dialer.notification.NotificationChannelManager.Channel;
+import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PermissionsUtil;
/** Utility to help with tasks related to filtered numbers. */
@@ -72,7 +73,7 @@ public class FilteredNumbersUtil {
new AsyncTask<Object, Void, Boolean>() {
@Override
public Boolean doInBackground(Object... params) {
- if (context == null || !PermissionsUtil.hasContactsPermissions(context)) {
+ if (context == null || !PermissionsUtil.hasContactsReadPermissions(context)) {
return false;
}
@@ -186,7 +187,7 @@ public class FilteredNumbersUtil {
}
public static long getLastEmergencyCallTimeMillis(Context context) {
- return PreferenceManager.getDefaultSharedPreferences(context)
+ return DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
.getLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, 0);
}
diff --git a/java/com/android/dialer/calldetails/res/layout/contact_container.xml b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
index daf465b2c..bb89b36f2 100644
--- a/java/com/android/dialer/calldetails/res/layout/contact_container.xml
+++ b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
@@ -47,6 +47,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/photo_text_margin"
+ android:ellipsize="end"
+ android:maxLines="1"
style="@style/PrimaryText"/>
<TextView
@@ -68,4 +70,4 @@
android:scaleType="center"
android:src="@drawable/quantum_ic_call_white_24"
android:tint="@color/secondary_text_color"/>
-</RelativeLayout> \ No newline at end of file
+</RelativeLayout>
diff --git a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
index 241be5d71..355940f6a 100644
--- a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
@@ -54,5 +54,7 @@ public final class ContactsDataSource implements CallLogDataSource {
@MainThread
@Override
public void registerContentObservers(
- Context appContext, ContentObserverCallbacks contentObserverCallbacks) {}
+ Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
+ // TODO: Guard against missing permissions during callback registration.
+ }
}
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 1cc51ee99..ea6663fbe 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -29,6 +29,7 @@ import com.android.dialer.calllog.datasources.CallLogDataSource;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.util.PermissionsUtil;
import javax.inject.Inject;
/**
@@ -46,6 +47,11 @@ public class SystemCallLogDataSource implements CallLogDataSource {
Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
Assert.isMainThread();
+ if (!PermissionsUtil.hasCallLogReadPermissions(appContext)) {
+ LogUtil.i("SystemCallLogDataSource.registerContentObservers", "no call log permissions");
+ return;
+ }
+
appContext
.getContentResolver()
.registerContentObserver(
diff --git a/java/com/android/dialer/common/ConfigProviderBindings.java b/java/com/android/dialer/common/ConfigProviderBindings.java
index 92e6cc3ff..9f045add4 100644
--- a/java/com/android/dialer/common/ConfigProviderBindings.java
+++ b/java/com/android/dialer/common/ConfigProviderBindings.java
@@ -20,17 +20,25 @@ import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.support.v4.os.UserManagerCompat;
/** Accessor for getting a {@link ConfigProvider}. */
public class ConfigProviderBindings {
private static ConfigProvider configProvider;
+ private static ConfigProvider configProviderStub;
public static ConfigProvider get(@NonNull Context context) {
Assert.isNotNull(context);
if (configProvider != null) {
return configProvider;
}
+ if (!UserManagerCompat.isUserUnlocked(context)) {
+ if (configProviderStub == null) {
+ configProviderStub = new ConfigProviderStub();
+ }
+ return configProviderStub;
+ }
Context application = context.getApplicationContext();
if (application instanceof ConfigProviderFactory) {
diff --git a/java/com/android/dialer/constants/ScheduledJobIds.java b/java/com/android/dialer/constants/ScheduledJobIds.java
index 8f7a18edd..2fed4ef8a 100644
--- a/java/com/android/dialer/constants/ScheduledJobIds.java
+++ b/java/com/android/dialer/constants/ScheduledJobIds.java
@@ -31,6 +31,11 @@ public final class ScheduledJobIds {
public static final int VVM_TASK_SCHEDULER_JOB = 200;
public static final int VVM_STATUS_CHECK_JOB = 201;
+ public static final int VVM_DEVICE_PROVISIONED_JOB = 202;
public static final int VOIP_REGISTRATION = 300;
+
+ // Job Ids from 10_000 to 10_100 should be reserved for proto upload jobs.
+ public static final int PROTO_UPLOAD_JOB_MIN_ID = 10_000;
+ public static final int PROTO_UPLOAD_JOB_MAX_ID = 10_100;
}
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index 18220601f..ea662fc89 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -29,6 +29,7 @@ import android.view.View;
import android.view.View.OnScrollChangeListener;
import android.view.ViewGroup;
import android.widget.TextView;
+import com.android.dialer.util.PermissionsUtil;
/** Fragment containing a list of all contacts. */
public class ContactsFragment extends Fragment
@@ -52,6 +53,11 @@ public class ContactsFragment extends Fragment
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(manager);
getLoaderManager().initLoader(0, null, this);
+
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ getLoaderManager().initLoader(0, null, this);
+ }
+
return view;
}
diff --git a/java/com/android/dialer/database/DialerDatabaseHelper.java b/java/com/android/dialer/database/DialerDatabaseHelper.java
index 7b6033b65..348814281 100644
--- a/java/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/java/com/android/dialer/database/DialerDatabaseHelper.java
@@ -333,7 +333,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
/** Starts the database upgrade process in the background. */
public void startSmartDialUpdateThread() {
- if (PermissionsUtil.hasContactsPermissions(mContext)) {
+ if (PermissionsUtil.hasContactsReadPermissions(mContext)) {
new SmartDialUpdateAsyncTask().execute();
}
}
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index c3c160a42..541614623 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -360,11 +360,16 @@ message DialerImpression {
EMERGENCY_GOT_MAP = 1172;
EMERGENCY_LAUNCHED_MAP = 1173;
- VIDEO_CALL_UPGRADE_REQUESTED = 1174;
- VIDEO_CALL_REQUEST_ACCEPTED = 1175;
- VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO = 1176;
- VIDEO_CALL_REQUEST_DECLINED = 1177;
- VIDEO_CALL_REQUEST_RECEIVED = 1178;
+ VIDEO_CALL_UPGRADE_REQUESTED = 1174
+ ;
+ VIDEO_CALL_REQUEST_ACCEPTED = 1175
+ ;
+ VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO = 1176
+ ;
+ VIDEO_CALL_REQUEST_DECLINED = 1177
+ ;
+ VIDEO_CALL_REQUEST_RECEIVED = 1178
+ ;
RCS_VIDEO_SHARE_UPGRADE_REQUESTED = 1179;
RCS_VIDEO_SHARE_REQUEST_ACCEPTED = 1180;
diff --git a/java/com/android/dialer/notification/NotificationChannelManager.java b/java/com/android/dialer/notification/NotificationChannelManager.java
index ef0f5f17a..599e5ca59 100644
--- a/java/com/android/dialer/notification/NotificationChannelManager.java
+++ b/java/com/android/dialer/notification/NotificationChannelManager.java
@@ -340,8 +340,10 @@ public class NotificationChannelManager {
NotificationChannel channel = new NotificationChannel(channelId, name, importance);
channel.setShowBadge(canShowBadge);
if (sound != null) {
+ // silentRingtone acts as a sentinel value to indicate that setSound should still be called,
+ // but with a null value to indicate no sound.
channel.setSound(
- sound,
+ sound.equals(silentRingtone) ? null : sound,
new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
}
channel.enableLights(lights);
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index 983be6c48..095ee4e66 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -31,6 +31,7 @@ import android.text.TextUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.util.PermissionsUtil;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -285,6 +286,11 @@ public class CequintCallerIdManager {
}
private static synchronized void registerContentObserver(Context context) {
+ if (!PermissionsUtil.hasCequintPermissions(context)) {
+ LogUtil.i("CequintCallerIdManager.registerContentObserver", "no cequint permissions");
+ return;
+ }
+
if (hasRegisteredContentObserver) {
return;
}
diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
index 4ba5a72ec..5c7a28c5b 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
@@ -26,6 +26,7 @@ import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
+import android.support.v4.os.UserManagerCompat;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -65,6 +66,7 @@ final class PersistentLogFileHandler {
private SharedPreferences sharedPreferences;
private File outputFile;
+ private Context context;
@MainThread
PersistentLogFileHandler(String subfolder, int fileSizeLimit, int fileCountLimit) {
@@ -76,8 +78,18 @@ final class PersistentLogFileHandler {
/** Must be called right after the logger thread is created. */
@WorkerThread
void initialize(Context context) {
+ this.context = context;
logDirectory = new File(new File(context.getCacheDir(), LOG_DIRECTORY), subfolder);
- sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ initializeSharedPreference(context);
+ }
+
+ @WorkerThread
+ private boolean initializeSharedPreference(Context context) {
+ if (sharedPreferences == null && UserManagerCompat.isUserUnlocked(context)) {
+ sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ return true;
+ }
+ return sharedPreferences != null;
}
/**
@@ -117,10 +129,10 @@ final class PersistentLogFileHandler {
return byteBuffer.array();
}
- private static final int getTotalSize(File[] files) {
+ private static int getTotalSize(File[] files) {
int sum = 0;
for (File file : files) {
- sum += file.length();
+ sum += (int) file.length();
}
return sum;
}
@@ -195,7 +207,11 @@ final class PersistentLogFileHandler {
}
@WorkerThread
- private int getAndIncrementNextFileIndex() {
+ private int getAndIncrementNextFileIndex() throws IOException {
+ if (!initializeSharedPreference(context)) {
+ throw new IOException("Shared preference is not available");
+ }
+
int index = sharedPreferences.getInt(getNextFileKey(), 0);
sharedPreferences.edit().putInt(getNextFileKey(), index + 1).commit();
return index;
diff --git a/java/com/android/dialer/persistentlog/PersistentLogger.java b/java/com/android/dialer/persistentlog/PersistentLogger.java
index 049eb9687..cf43b8ca8 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogger.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogger.java
@@ -23,6 +23,7 @@ import android.support.annotation.AnyThread;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
+import android.support.v4.os.UserManagerCompat;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import java.io.IOException;
@@ -79,6 +80,9 @@ public final class PersistentLogger {
loggerThreadHandler.removeMessages(MESSAGE_FLUSH);
List<byte[]> messages = new ArrayList<>();
messageQueue.drainTo(messages);
+ if (!UserManagerCompat.isUserUnlocked(context)) {
+ return true;
+ }
try {
fileHandler.writeLogs(messages);
} catch (IOException e) {
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index a9a5edce5..bd4ba9764 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -327,7 +327,7 @@ public class ContactInfoHelper {
if (uri == null) {
return null;
}
- if (!PermissionsUtil.hasContactsPermissions(mContext)) {
+ if (!PermissionsUtil.hasContactsReadPermissions(mContext)) {
return ContactInfo.EMPTY;
}
diff --git a/java/com/android/dialer/theme/res/values-af/strings.xml b/java/com/android/dialer/theme/res/values-af/strings.xml
index 6c496ce4f..3e92ef956 100644
--- a/java/com/android/dialer/theme/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/res/values-af/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Onbekend"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefoonhokkie"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Foon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-am/strings.xml b/java/com/android/dialer/theme/res/values-am/strings.xml
index a3ac81883..b8a5b1477 100644
--- a/java/com/android/dialer/theme/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/res/values-am/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"ያልታወቀ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"የሕዝብ ስልክ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ስልክ"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ar/strings.xml b/java/com/android/dialer/theme/res/values-ar/strings.xml
index e4ac049a4..b1fa77aaa 100644
--- a/java/com/android/dialer/theme/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ar/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"غير معروف"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"هاتف يعمل بالعملة"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"الهاتف"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-az/strings.xml b/java/com/android/dialer/theme/res/values-az/strings.xml
index 2335cf009..492fa2c99 100644
--- a/java/com/android/dialer/theme/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/res/values-az/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Naməlum"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
index bd719ecd1..adf133340 100644
--- a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-be/strings.xml b/java/com/android/dialer/theme/res/values-be/strings.xml
index 585c571c3..a86bfbb4f 100644
--- a/java/com/android/dialer/theme/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/res/values-be/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Невядомы"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Таксафон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Тэлефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-bg/strings.xml b/java/com/android/dialer/theme/res/values-bg/strings.xml
index 00e88927a..68aa1d457 100644
--- a/java/com/android/dialer/theme/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bg/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Неизвестен номер"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Обществен телефон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-bn/strings.xml b/java/com/android/dialer/theme/res/values-bn/strings.xml
index 25b5d4823..90fce3310 100644
--- a/java/com/android/dialer/theme/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bn/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"অজানা"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"পে ফোন"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ফোন"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-bs/strings.xml b/java/com/android/dialer/theme/res/values-bs/strings.xml
index bd719ecd1..adf133340 100644
--- a/java/com/android/dialer/theme/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bs/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ca/strings.xml b/java/com/android/dialer/theme/res/values-ca/strings.xml
index 0e3ef6028..7c51c5b0f 100644
--- a/java/com/android/dialer/theme/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ca/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Desconegut"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telèfon públic"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telèfon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-cs/strings.xml b/java/com/android/dialer/theme/res/values-cs/strings.xml
index bf632c58a..4b796d380 100644
--- a/java/com/android/dialer/theme/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-cs/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Neznámé"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonní automat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-da/strings.xml b/java/com/android/dialer/theme/res/values-da/strings.xml
index 199018459..f4312bd8d 100644
--- a/java/com/android/dialer/theme/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/res/values-da/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Ukendt"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Mønttelefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Opkald"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-de/strings.xml b/java/com/android/dialer/theme/res/values-de/strings.xml
index 54881924b..4c1fe34f0 100644
--- a/java/com/android/dialer/theme/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/res/values-de/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Unbekannt"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Münztelefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-el/strings.xml b/java/com/android/dialer/theme/res/values-el/strings.xml
index 82e67d4ec..da20304e9 100644
--- a/java/com/android/dialer/theme/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/res/values-el/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Άγνωστος"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Τηλέφωνο με χρέωση"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Τηλέφωνο"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
index 451f13574..9c0650c08 100644
--- a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Unknown"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
index 451f13574..9c0650c08 100644
--- a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Unknown"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
index 451f13574..9c0650c08 100644
--- a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Unknown"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
index f0397a8ef..1e6a23795 100644
--- a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Desconocido"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-es/strings.xml b/java/com/android/dialer/theme/res/values-es/strings.xml
index f0397a8ef..1e6a23795 100644
--- a/java/com/android/dialer/theme/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Desconocido"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-et/strings.xml b/java/com/android/dialer/theme/res/values-et/strings.xml
index 13c662f35..2af58d510 100644
--- a/java/com/android/dialer/theme/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/res/values-et/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Tundmatu"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefoniautomaat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-eu/strings.xml b/java/com/android/dialer/theme/res/values-eu/strings.xml
index 9637ce56b..37f15f1cb 100644
--- a/java/com/android/dialer/theme/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-eu/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Ezezaguna"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefono publikoa"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonoa"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fa/strings.xml b/java/com/android/dialer/theme/res/values-fa/strings.xml
index ec03ec1b0..2fab699a9 100644
--- a/java/com/android/dialer/theme/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fa/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"ناشناس"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"تلفن عمومی"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"تلفن"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fi/strings.xml b/java/com/android/dialer/theme/res/values-fi/strings.xml
index b729ff837..33fc0a09c 100644
--- a/java/com/android/dialer/theme/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fi/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Tuntematon"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Maksupuhelin"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Puhelin"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
index afbf86abd..d047c42f6 100644
--- a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Inconnu"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fr/strings.xml b/java/com/android/dialer/theme/res/values-fr/strings.xml
index afbf86abd..d047c42f6 100644
--- a/java/com/android/dialer/theme/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Inconnu"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-gl/strings.xml b/java/com/android/dialer/theme/res/values-gl/strings.xml
index ad7ee278c..e5da31445 100644
--- a/java/com/android/dialer/theme/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gl/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Descoñecido"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-gu/strings.xml b/java/com/android/dialer/theme/res/values-gu/strings.xml
index 0ab9312e4..764414e34 100644
--- a/java/com/android/dialer/theme/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gu/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"અજાણ્યું"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"પેફોન"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ફોન"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hi/strings.xml b/java/com/android/dialer/theme/res/values-hi/strings.xml
index 0922eef8c..af502874c 100644
--- a/java/com/android/dialer/theme/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hi/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"अज्ञात"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"पे-फ़ोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फ़ोन"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hr/strings.xml b/java/com/android/dialer/theme/res/values-hr/strings.xml
index cf314be8e..2e7cbf0cc 100644
--- a/java/com/android/dialer/theme/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hr/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Javna telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hu/strings.xml b/java/com/android/dialer/theme/res/values-hu/strings.xml
index b7809fad3..51d7e5405 100644
--- a/java/com/android/dialer/theme/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hu/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Ismeretlen"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Nyilvános telefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hy/strings.xml b/java/com/android/dialer/theme/res/values-hy/strings.xml
index 71fc9f8c7..353d80b9b 100644
--- a/java/com/android/dialer/theme/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hy/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Անհայտ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Բջջային տերմինալ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Հեռախոս"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-in/strings.xml b/java/com/android/dialer/theme/res/values-in/strings.xml
index 00178c25d..d340e6f2e 100644
--- a/java/com/android/dialer/theme/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/res/values-in/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Tidak diketahui"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telepon Umum"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telepon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-is/strings.xml b/java/com/android/dialer/theme/res/values-is/strings.xml
index e4af0b0cd..6c8f9ba6b 100644
--- a/java/com/android/dialer/theme/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/res/values-is/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Óþekkt"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Símasjálfsali"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Sími"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-it/strings.xml b/java/com/android/dialer/theme/res/values-it/strings.xml
index a495f5199..27a74b122 100644
--- a/java/com/android/dialer/theme/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/res/values-it/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Sconosciuto"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Cabina telefonica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefono"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-iw/strings.xml b/java/com/android/dialer/theme/res/values-iw/strings.xml
index 1e496f4b8..664fef61f 100644
--- a/java/com/android/dialer/theme/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-iw/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"לא ידוע"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"טלפון ציבורי"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"טלפון"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ja/strings.xml b/java/com/android/dialer/theme/res/values-ja/strings.xml
index 8649c372a..809ceb9d0 100644
--- a/java/com/android/dialer/theme/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ja/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"不明"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"公衆電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ka/strings.xml b/java/com/android/dialer/theme/res/values-ka/strings.xml
index f826768a2..67bb8ceb4 100644
--- a/java/com/android/dialer/theme/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ka/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"უცნობი"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"გადახდის ტელეფონი"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ტელეფონი"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-kk/strings.xml b/java/com/android/dialer/theme/res/values-kk/strings.xml
index a1b7e6d6e..4fabd8549 100644
--- a/java/com/android/dialer/theme/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kk/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Белгісіз"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Автомат-телефон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-km/strings.xml b/java/com/android/dialer/theme/res/values-km/strings.xml
index 1a880b7fd..163023cc4 100644
--- a/java/com/android/dialer/theme/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/res/values-km/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"មិន​ស្គាល់"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"ទូរស័ព្ទសាធារណៈ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ទូរស័ព្ទ"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-kn/strings.xml b/java/com/android/dialer/theme/res/values-kn/strings.xml
index 3338de3c6..48e2772c6 100644
--- a/java/com/android/dialer/theme/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kn/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"ಅಪರಿಚಿತ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"ಪೇಫೋನ್"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ಫೋನ್"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ko/strings.xml b/java/com/android/dialer/theme/res/values-ko/strings.xml
index 1f371f970..5a977f94a 100644
--- a/java/com/android/dialer/theme/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ko/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"알 수 없음"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"공중전화"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"휴대전화"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ky/strings.xml b/java/com/android/dialer/theme/res/values-ky/strings.xml
index 6a82f8abc..e9283e073 100644
--- a/java/com/android/dialer/theme/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ky/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Белгисиз"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-lo/strings.xml b/java/com/android/dialer/theme/res/values-lo/strings.xml
index 0f08eedd6..f9b1200dc 100644
--- a/java/com/android/dialer/theme/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lo/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"ບໍ່ຮູ້ຈັກ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ໂທລະສັບ"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-lt/strings.xml b/java/com/android/dialer/theme/res/values-lt/strings.xml
index ecb5b3f6f..80ac2baef 100644
--- a/java/com/android/dialer/theme/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lt/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Nežinomas"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Taksofonas"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonas"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-lv/strings.xml b/java/com/android/dialer/theme/res/values-lv/strings.xml
index 69e33f8cd..05bd1eb0d 100644
--- a/java/com/android/dialer/theme/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lv/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Nezināms"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Maksas tālrunis"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Tālrunis"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-mk/strings.xml b/java/com/android/dialer/theme/res/values-mk/strings.xml
index 6f9738201..491958209 100644
--- a/java/com/android/dialer/theme/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mk/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Непознато"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Говорница"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ml/strings.xml b/java/com/android/dialer/theme/res/values-ml/strings.xml
index 275f2c008..a49bb117d 100644
--- a/java/com/android/dialer/theme/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ml/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"അജ്ഞാതം"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ഫോണ്‍"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-mn/strings.xml b/java/com/android/dialer/theme/res/values-mn/strings.xml
index ad115d1e2..23274857d 100644
--- a/java/com/android/dialer/theme/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mn/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Тодорхойгүй"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Утас"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-mr/strings.xml b/java/com/android/dialer/theme/res/values-mr/strings.xml
index acab4db0c..ea6262cff 100644
--- a/java/com/android/dialer/theme/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mr/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"अज्ञात"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"सार्वजनिक फोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ms/strings.xml b/java/com/android/dialer/theme/res/values-ms/strings.xml
index 0368a662a..b0c980420 100644
--- a/java/com/android/dialer/theme/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ms/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Tidak diketahui"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefon Awam"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-my/strings.xml b/java/com/android/dialer/theme/res/values-my/strings.xml
index 27771ee0d..abd53db26 100644
--- a/java/com/android/dialer/theme/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/res/values-my/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"အကြောင်းအရာ မသိရှိ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"ငွေပေးရသည့်ဖုန်း"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ဖုန်း"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-nb/strings.xml b/java/com/android/dialer/theme/res/values-nb/strings.xml
index 3164ab015..52a7d63d2 100644
--- a/java/com/android/dialer/theme/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nb/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Ukjent"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ne/strings.xml b/java/com/android/dialer/theme/res/values-ne/strings.xml
index 7654d4920..ecc566ba4 100644
--- a/java/com/android/dialer/theme/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ne/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"अज्ञात"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"पेफोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-nl/strings.xml b/java/com/android/dialer/theme/res/values-nl/strings.xml
index b01fecf23..c965c71e2 100644
--- a/java/com/android/dialer/theme/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nl/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Onbekend"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefooncel"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-no/strings.xml b/java/com/android/dialer/theme/res/values-no/strings.xml
index 3164ab015..52a7d63d2 100644
--- a/java/com/android/dialer/theme/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/res/values-no/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Ukjent"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pa/strings.xml b/java/com/android/dialer/theme/res/values-pa/strings.xml
index 2adc68055..a0811f8d7 100644
--- a/java/com/android/dialer/theme/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pa/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"ਅਗਿਆਤ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"ਪੇਫੋਨ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ਫੋਨ"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pl/strings.xml b/java/com/android/dialer/theme/res/values-pl/strings.xml
index c62e6032b..83f27a9c9 100644
--- a/java/com/android/dialer/theme/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pl/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Nieznane"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Automat telefoniczny"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
index 14e78b284..55c2b83a1 100644
--- a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Desconhecido"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
index 14e78b284..55c2b83a1 100644
--- a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Desconhecido"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pt/strings.xml b/java/com/android/dialer/theme/res/values-pt/strings.xml
index 14e78b284..55c2b83a1 100644
--- a/java/com/android/dialer/theme/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Desconhecido"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ro/strings.xml b/java/com/android/dialer/theme/res/values-ro/strings.xml
index 54b95f3ef..274e0355b 100644
--- a/java/com/android/dialer/theme/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ro/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Necunoscut"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefon public"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ru/strings.xml b/java/com/android/dialer/theme/res/values-ru/strings.xml
index 19e1254e6..3e60702e9 100644
--- a/java/com/android/dialer/theme/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ru/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Неизвестно"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Телефон-автомат"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-si/strings.xml b/java/com/android/dialer/theme/res/values-si/strings.xml
index 5e245d4a9..3de993a89 100644
--- a/java/com/android/dialer/theme/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/res/values-si/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"නොදනී"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"පේෆෝනය"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"දුරකථනය"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sk/strings.xml b/java/com/android/dialer/theme/res/values-sk/strings.xml
index 4b8c01a8b..53692dfcc 100644
--- a/java/com/android/dialer/theme/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sk/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Neznáme"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefónny automat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefón"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sl/strings.xml b/java/com/android/dialer/theme/res/values-sl/strings.xml
index 095fa1150..d56c39992 100644
--- a/java/com/android/dialer/theme/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sl/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Neznano"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonska govorilnica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sq/strings.xml b/java/com/android/dialer/theme/res/values-sq/strings.xml
index 4682e6c4a..b60971b45 100644
--- a/java/com/android/dialer/theme/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sq/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"I panjohur"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefon me pagesë"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoni"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sr/strings.xml b/java/com/android/dialer/theme/res/values-sr/strings.xml
index 37ebb8d09..ec732dfa1 100644
--- a/java/com/android/dialer/theme/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sr/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Непознато"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Телефонска говорница"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sv/strings.xml b/java/com/android/dialer/theme/res/values-sv/strings.xml
index 3d584efb4..fc166719e 100644
--- a/java/com/android/dialer/theme/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sv/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Okänd"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Telefonautomat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sw/strings.xml b/java/com/android/dialer/theme/res/values-sw/strings.xml
index faa12a6ea..4a768ad06 100644
--- a/java/com/android/dialer/theme/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sw/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Haijulikani"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Simu ya kulipia"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Simu"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ta/strings.xml b/java/com/android/dialer/theme/res/values-ta/strings.xml
index 1c5d03d74..3ea68fad8 100644
--- a/java/com/android/dialer/theme/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ta/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"தெரியாதவர்"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"கட்டணத் தொலைபேசி"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"மொபைல்"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-te/strings.xml b/java/com/android/dialer/theme/res/values-te/strings.xml
index 4df16b5c7..30dc1d3cf 100644
--- a/java/com/android/dialer/theme/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/res/values-te/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"తెలియదు"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"పే ఫోన్"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ఫోన్"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-th/strings.xml b/java/com/android/dialer/theme/res/values-th/strings.xml
index b00922e85..586f62223 100644
--- a/java/com/android/dialer/theme/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/res/values-th/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"ไม่ทราบ"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"โทรศัพท์สาธารณะ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"โทรศัพท์"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-tl/strings.xml b/java/com/android/dialer/theme/res/values-tl/strings.xml
index 84bff0a34..812e13442 100644
--- a/java/com/android/dialer/theme/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tl/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Di-kilala"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telepono"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-tr/strings.xml b/java/com/android/dialer/theme/res/values-tr/strings.xml
index a2b9a8ddb..24a614a21 100644
--- a/java/com/android/dialer/theme/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tr/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Bilinmiyor"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Ankesörlü telefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-uk/strings.xml b/java/com/android/dialer/theme/res/values-uk/strings.xml
index 31994bad8..394166b74 100644
--- a/java/com/android/dialer/theme/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uk/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Невідомий"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ur/strings.xml b/java/com/android/dialer/theme/res/values-ur/strings.xml
index d06d21f81..167022d8a 100644
--- a/java/com/android/dialer/theme/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ur/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"نامعلوم"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"پے فون"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"فون"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-uz/strings.xml b/java/com/android/dialer/theme/res/values-uz/strings.xml
index b9f88019e..eab73eb96 100644
--- a/java/com/android/dialer/theme/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uz/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Noma’lum"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-vi/strings.xml b/java/com/android/dialer/theme/res/values-vi/strings.xml
index 66e2ea4df..23bb9dcd4 100644
--- a/java/com/android/dialer/theme/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-vi/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Không xác định"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Điện thoại công cộng"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Điện thoại"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
index b311a82e0..d1a5d9a67 100644
--- a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"未知"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"公用电话"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"电话"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
index 552720ee0..17e130560 100644
--- a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"未知"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"公共電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
index 87b642568..9c4e66133 100644
--- a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"不明"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"公用電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zu/strings.xml b/java/com/android/dialer/theme/res/values-zu/strings.xml
index f5a479ad3..fd294bd0a 100644
--- a/java/com/android/dialer/theme/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zu/strings.xml
@@ -18,6 +18,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="unknown" msgid="7932659017139013277">"Akwaziwa"</string>
+ <!-- no translation found for unknown_counter (7452889151953704159) -->
+ <skip />
<string name="payphone" msgid="7106361320283710387">"Ucingo olufakwa imali"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Ifoni"</string>
+ <!-- no translation found for call (3699617769606114168) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/theme/res/values/strings.xml b/java/com/android/dialer/theme/res/values/strings.xml
index 3a954ae14..a14693f51 100644
--- a/java/com/android/dialer/theme/res/values/strings.xml
+++ b/java/com/android/dialer/theme/res/values/strings.xml
@@ -14,14 +14,22 @@
~ limitations under the License
-->
-<resources>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- String used to display calls from unknown numbers in the call log -->
<string name="unknown">Unknown</string>
+ <!-- String to identify an unknown/restricted callers. ex. "Unknown 1", "Restricted 2", ect. -->
+ <string name="unknown_counter">
+ <xliff:g id="unknown">%s</xliff:g> <xliff:g id="id">%d</xliff:g>
+ </string>
+
<!-- String used to display calls from pay phone in the call log -->
<string name="payphone">Payphone</string>
<!-- Title for the activity that dials the phone. This is the name
used in the Launcher icon. -->
<string name="launcherActivityLabel">Phone</string>
+
+ <!-- Label shown on the 'positive' button for the dialog. Indicates that the call will proceed -->
+ <string name="call">Call</string>
</resources>
diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java
index 5741e734a..466e86204 100644
--- a/java/com/android/dialer/util/PermissionsUtil.java
+++ b/java/com/android/dialer/util/PermissionsUtil.java
@@ -30,12 +30,13 @@ import com.android.dialer.common.LogUtil;
public class PermissionsUtil {
private static final String PERMISSION_PREFERENCE = "dialer_permissions";
+ private static final String CEQUINT_PERMISSION = "com.cequint.ecid.CALLER_ID_LOOKUP";
public static boolean hasPhonePermissions(Context context) {
return hasPermission(context, permission.CALL_PHONE);
}
- public static boolean hasContactsPermissions(Context context) {
+ public static boolean hasContactsReadPermissions(Context context) {
return hasPermission(context, permission.READ_CONTACTS);
}
@@ -51,6 +52,30 @@ public class PermissionsUtil {
return hasPermission(context, permission.RECORD_AUDIO);
}
+ public static boolean hasCallLogReadPermissions(Context context) {
+ return hasPermission(context, permission.READ_CALL_LOG);
+ }
+
+ public static boolean hasCallLogWritePermissions(Context context) {
+ return hasPermission(context, permission.WRITE_CALL_LOG);
+ }
+
+ public static boolean hasCequintPermissions(Context context) {
+ return hasPermission(context, CEQUINT_PERMISSION);
+ }
+
+ public static boolean hasReadVoicemailPermissions(Context context) {
+ return hasPermission(context, permission.READ_VOICEMAIL);
+ }
+
+ public static boolean hasWriteVoicemailPermissions(Context context) {
+ return hasPermission(context, permission.WRITE_VOICEMAIL);
+ }
+
+ public static boolean hasAddVoicemailPermissions(Context context) {
+ return hasPermission(context, permission.ADD_VOICEMAIL);
+ }
+
public static boolean hasPermission(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission)
== PackageManager.PERMISSION_GRANTED;
diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java
index 8116f131b..ca34aa6aa 100644
--- a/java/com/android/incallui/AnswerScreenPresenter.java
+++ b/java/com/android/incallui/AnswerScreenPresenter.java
@@ -180,6 +180,9 @@ public class AnswerScreenPresenter
@Override
public void onHandoverToWifiFailure() {}
+
+ @Override
+ public void onInternationalCallOnWifi() {}
}
private boolean isSmsResponseAllowed(DialerCall call) {
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 76a5d24a8..0b3592d01 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -373,6 +373,9 @@ public class CallCardPresenter
@Override
public void onHandoverToWifiFailure() {}
+ @Override
+ public void onInternationalCallOnWifi() {}
+
/** Handles a change to the child number by refreshing the primary call info. */
@Override
public void onDialerCallChildNumberChange() {
@@ -737,7 +740,7 @@ public class CallCardPresenter
mInCallScreen.setPrimary(
new PrimaryInfo(
number,
- name,
+ mPrimary.updateNameIfRestricted(name),
nameIsNumber,
shouldShowLocationAsLabel(nameIsNumber, mPrimaryContactInfo.shouldShowLocation)
? mPrimaryContactInfo.location
@@ -890,7 +893,7 @@ public class CallCardPresenter
mInCallScreen.setSecondary(
new SecondaryInfo(
true /* show */,
- name,
+ mSecondary.updateNameIfRestricted(name),
nameIsNumber,
mSecondaryContactInfo.label,
mSecondary.getCallProviderLabel(),
diff --git a/java/com/android/incallui/CallerInfoUtils.java b/java/com/android/incallui/CallerInfoUtils.java
index 7c14533bb..564446647 100644
--- a/java/com/android/incallui/CallerInfoUtils.java
+++ b/java/com/android/incallui/CallerInfoUtils.java
@@ -64,7 +64,7 @@ public class CallerInfoUtils {
// TODO: Have phoneapp send a Uri when it knows the contact that triggered this call.
if (info.numberPresentation == TelecomManager.PRESENTATION_ALLOWED) {
- if (PermissionsUtil.hasContactsPermissions(context)) {
+ if (PermissionsUtil.hasContactsReadPermissions(context)) {
// Start the query with the number provided from the call.
LogUtil.d(
"CallerInfoUtils.getCallerInfoForCall",
diff --git a/java/com/android/incallui/ConferenceParticipantListAdapter.java b/java/com/android/incallui/ConferenceParticipantListAdapter.java
index 72c0fcd20..712bdefa6 100644
--- a/java/com/android/incallui/ConferenceParticipantListAdapter.java
+++ b/java/com/android/incallui/ConferenceParticipantListAdapter.java
@@ -232,11 +232,14 @@ public class ConferenceParticipantListAdapter extends BaseAdapter {
boolean thisRowCanDisconnect =
call.can(android.telecom.Call.Details.CAPABILITY_DISCONNECT_FROM_CONFERENCE);
+ String name =
+ ContactDisplayUtils.getPreferredDisplayName(
+ contactCache.namePrimary, contactCache.nameAlternative, mContactsPreferences);
+
setCallerInfoForRow(
result,
contactCache.namePrimary,
- ContactDisplayUtils.getPreferredDisplayName(
- contactCache.namePrimary, contactCache.nameAlternative, mContactsPreferences),
+ call.updateNameIfRestricted(name),
contactCache.number,
contactCache.label,
contactCache.lookupKey,
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index e1e699011..cc9a8e438 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -23,6 +23,7 @@ import android.graphics.drawable.GradientDrawable.Orientation;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.annotation.FloatRange;
+import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
@@ -487,6 +488,11 @@ public class InCallActivity extends TransactionSafeFragmentActivity
common.showWifiFailedDialog(call);
}
+ public void onInternationalCallOnWifi(@NonNull DialerCall call) {
+ LogUtil.enterBlock("InCallActivity.onInternationalCallOnWifi");
+ common.showInternationalCallOnWifiDialog(call);
+ }
+
public void setAllowOrientationChange(boolean allowOrientationChange) {
if (!allowOrientationChange) {
setRequestedOrientation(InCallOrientationEventListener.ACTIVITY_PREFERENCE_DISALLOW_ROTATION);
diff --git a/java/com/android/incallui/InCallActivityCommon.java b/java/com/android/incallui/InCallActivityCommon.java
index e6c74b0a9..4b0a3cd05 100644
--- a/java/com/android/incallui/InCallActivityCommon.java
+++ b/java/com/android/incallui/InCallActivityCommon.java
@@ -62,6 +62,8 @@ import com.android.incallui.call.CallList;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCall.State;
import com.android.incallui.call.TelecomAdapter;
+import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment;
+import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment.Callback;
import com.android.incallui.wifi.EnableWifiCallingPrompt;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -80,6 +82,7 @@ public class InCallActivityCommon {
private static final String TAG_SELECT_ACCOUNT_FRAGMENT = "tag_select_account_fragment";
private static final String TAG_DIALPAD_FRAGMENT = "tag_dialpad_fragment";
+ private static final String TAG_INTERNATIONAL_CALL_ON_WIFI = "tag_international_call_on_wifi";
@Retention(RetentionPolicy.SOURCE)
@IntDef({
@@ -107,7 +110,7 @@ public class InCallActivityCommon {
private String dtmfTextToPreopulate;
@DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
- private SelectPhoneAccountListener selectAccountListener =
+ private final SelectPhoneAccountListener selectAccountListener =
new SelectPhoneAccountListener() {
@Override
public void onPhoneAccountSelected(
@@ -133,6 +136,25 @@ public class InCallActivityCommon {
}
};
+ private InternationalCallOnWifiDialogFragment.Callback internationalCallOnWifiCallback =
+ new Callback() {
+ @Override
+ public void continueCall(@NonNull String callId) {
+ LogUtil.i("InCallActivityCommon.continueCall", "continuing call with id: %s", callId);
+ }
+
+ @Override
+ public void cancelCall(@NonNull String callId) {
+ DialerCall call = CallList.getInstance().getCallById(callId);
+ if (call == null) {
+ LogUtil.i("InCallActivityCommon.cancelCall", "call destroyed before dialog closed");
+ return;
+ }
+ LogUtil.i("InCallActivityCommon.cancelCall", "disconnecting international call on wifi");
+ call.disconnect();
+ }
+ };
+
public static void setIntentExtras(
Intent intent, boolean showDialpad, boolean newOutgoingCall, boolean isForFullScreen) {
if (showDialpad) {
@@ -210,6 +232,17 @@ public class InCallActivityCommon {
}
}
+ InternationalCallOnWifiDialogFragment existingInternationalFragment =
+ (InternationalCallOnWifiDialogFragment)
+ inCallActivity
+ .getSupportFragmentManager()
+ .findFragmentByTag(TAG_INTERNATIONAL_CALL_ON_WIFI);
+ if (existingInternationalFragment != null) {
+ LogUtil.i(
+ "InCallActivityCommon.onCreate", "international fragment exists attaching callback");
+ existingInternationalFragment.setCallback(internationalCallOnWifiCallback);
+ }
+
inCallOrientationEventListener = new InCallOrientationEventListener(inCallActivity);
}
@@ -510,6 +543,18 @@ public class InCallActivityCommon {
selectPhoneAccountDialogFragment.dismiss();
selectPhoneAccountDialogFragment = null;
}
+
+ InternationalCallOnWifiDialogFragment internationalCallOnWifiFragment =
+ (InternationalCallOnWifiDialogFragment)
+ inCallActivity
+ .getSupportFragmentManager()
+ .findFragmentByTag(TAG_INTERNATIONAL_CALL_ON_WIFI);
+ if (internationalCallOnWifiFragment != null) {
+ LogUtil.i(
+ "InCallActivityCommon.dismissPendingDialogs",
+ "dismissing InternationalCallOnWifiDialogFragment");
+ internationalCallOnWifiFragment.dismiss();
+ }
}
private static boolean shouldShowDisconnectErrorDialog(@NonNull DisconnectCause cause) {
@@ -584,6 +629,21 @@ public class InCallActivityCommon {
}
}
+ void showInternationalCallOnWifiDialog(@NonNull DialerCall call) {
+ LogUtil.enterBlock("InCallActivityCommon.showInternationalCallOnWifiDialog");
+ if (!InternationalCallOnWifiDialogFragment.shouldShow(inCallActivity)) {
+ LogUtil.i(
+ "InCallActivityCommon.showInternationalCallOnWifiDialog",
+ "InternationalCallOnWifiDialogFragment.shouldShow returned false");
+ return;
+ }
+
+ InternationalCallOnWifiDialogFragment fragment =
+ InternationalCallOnWifiDialogFragment.newInstance(
+ call.getId(), internationalCallOnWifiCallback);
+ fragment.show(inCallActivity.getSupportFragmentManager(), TAG_INTERNATIONAL_CALL_ON_WIFI);
+ }
+
public void showWifiToLteHandoverToast(DialerCall call) {
if (call.hasShownWiFiToLteHandoverToast()) {
return;
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index a5ba31c50..9c8120c92 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -641,6 +641,14 @@ public class InCallPresenter implements CallList.Listener {
}
}
+ @Override
+ public void onInternationalCallOnWifi(@NonNull DialerCall call) {
+ LogUtil.enterBlock("InCallPresenter.onInternationalCallOnWifi");
+ if (mInCallActivity != null) {
+ mInCallActivity.onInternationalCallOnWifi(call);
+ }
+ }
+
/**
* Called when there is a change to the call list. Sets the In-Call state for the entire in-call
* app based on the information it gets from CallList. Dispatches the in-call state to all
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 4fb402caa..af541b0e5 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -1004,6 +1004,9 @@ public class StatusBarNotifier
@Override
public void onHandoverToWifiFailure() {}
+ @Override
+ public void onInternationalCallOnWifi() {}
+
/**
* Responds to changes in the session modification state for the call by dismissing the status
* bar notification as required.
diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
index eaf5b74e5..77b45ec71 100644
--- a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
+++ b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
@@ -20,13 +20,13 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Build;
-import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import com.android.dialer.common.Assert;
import com.android.dialer.common.ConfigProvider;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.util.DialerUtils;
import com.android.incallui.util.AccessibilityUtil;
/**
@@ -62,7 +62,7 @@ public class AnswerHintFactory {
if (shouldShowAnswerHint(
context,
ConfigProviderBindings.get(context),
- getDeviceProtectedPreferences(context),
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context),
Build.PRODUCT)) {
return new DotAnswerHint(context, puckUpDuration, puckUpDelay);
}
@@ -77,7 +77,8 @@ public class AnswerHintFactory {
}
public static void increaseAnsweredCount(Context context) {
- SharedPreferences sharedPreferences = getDeviceProtectedPreferences(context);
+ SharedPreferences sharedPreferences =
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context);
int answeredCount = sharedPreferences.getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0);
sharedPreferences.edit().putInt(ANSWERED_COUNT_PREFERENCE_KEY, answeredCount + 1).apply();
}
@@ -119,12 +120,4 @@ public class AnswerHintFactory {
.getString(CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY, DEFAULT_WHITELISTED_DEVICES_CSV)
.contains("/" + device + "/");
}
-
- private static SharedPreferences getDeviceProtectedPreferences(Context context) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
- return PreferenceManager.getDefaultSharedPreferences(context);
- }
- return PreferenceManager.getDefaultSharedPreferences(
- context.createDeviceProtectedStorageContext());
- }
}
diff --git a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java
index 485a9ae37..21154cade 100644
--- a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java
+++ b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java
@@ -21,10 +21,10 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Build.VERSION_CODES;
-import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.android.dialer.common.Assert;
+import com.android.dialer.util.DialerUtils;
/** Decrypt the event payload to be shown if in a specific time range and the key is received. */
@TargetApi(VERSION_CODES.M)
@@ -35,7 +35,8 @@ public final class PawImageLoaderImpl implements PawImageLoader {
public Drawable loadPayload(@NonNull Context context) {
Assert.isNotNull(context);
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ SharedPreferences preferences =
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context);
if (!preferences.getBoolean(PawSecretCodeListener.PAW_ENABLED_WITH_SECRET_CODE_KEY, false)) {
return null;
}
diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
index 6a2c4b493..24fbfc428 100644
--- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
+++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
@@ -140,6 +140,9 @@ public class AnswerProximitySensor
public void onHandoverToWifiFailure() {}
@Override
+ public void onInternationalCallOnWifi() {}
+
+ @Override
public void onDialerCallSessionModificationStateChange() {}
@Override
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 0bb16080b..34f0cc0d7 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -290,6 +290,10 @@ public class CallList implements DialerCallDelegate {
"CallList.onCallRemoved", "Removing call not previously disconnected " + call.getId());
}
}
+
+ if (!hasLiveCall()) {
+ DialerCall.clearRestrictedCount();
+ }
}
InCallUiLegacyBindings getLegacyBindings(Context context) {
@@ -723,15 +727,17 @@ public class CallList implements DialerCallDelegate {
* WiFi
*/
void onHandoverToWifiFailed(DialerCall call);
+
+ /** Called when the user initiates a call to an international number while on WiFi. */
+ void onInternationalCallOnWifi(@NonNull DialerCall call);
}
private class DialerCallListenerImpl implements DialerCallListener {
- private final DialerCall mCall;
+ @NonNull private final DialerCall mCall;
- DialerCallListenerImpl(DialerCall call) {
- Assert.isNotNull(call);
- mCall = call;
+ DialerCallListenerImpl(@NonNull DialerCall call) {
+ mCall = Assert.isNotNull(call);
}
@Override
@@ -779,6 +785,14 @@ public class CallList implements DialerCallDelegate {
}
@Override
+ public void onInternationalCallOnWifi() {
+ LogUtil.enterBlock("DialerCallListenerImpl.onInternationalCallOnWifi");
+ for (Listener listener : mListeners) {
+ listener.onInternationalCallOnWifi(mCall);
+ }
+ }
+
+ @Override
public void onDialerCallSessionModificationStateChange() {
for (Listener listener : mListeners) {
listener.onSessionModificationStateChange(mCall);
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 3825e6e26..acedf41f1 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -56,6 +56,7 @@ import com.android.dialer.lightbringer.LightbringerComponent;
import com.android.dialer.logging.ContactLookupResult;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.theme.R;
import com.android.incallui.audiomode.AudioModeProvider;
import com.android.incallui.latencyreport.LatencyReport;
import com.android.incallui.util.TelecomCallUtil;
@@ -92,6 +93,13 @@ public class DialerCall implements VideoTechListener {
private static int sIdCounter = 0;
/**
+ * A counter used to append to restricted/private/hidden calls so that users can identify them in
+ * a conversation. This value is reset in {@link CallList#onCallRemoved(Context, Call)} when there
+ * are no live calls.
+ */
+ private static int sHiddenCounter;
+
+ /**
* The unique call ID for every call. This will help us to identify each call and allow us the
* ability to stitch impressions to calls if needed.
*/
@@ -100,6 +108,7 @@ public class DialerCall implements VideoTechListener {
private final Call mTelecomCall;
private final LatencyReport mLatencyReport;
private final String mId;
+ private final int mHiddenId;
private final List<String> mChildCallIds = new ArrayList<>();
private final LogState mLogState = new LogState();
private final Context mContext;
@@ -243,11 +252,15 @@ public class DialerCall implements VideoTechListener {
isRemotelyHeld = false;
update();
break;
+ case TelephonyManagerCompat.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC:
+ notifyInternationalCallOnWifi();
+ break;
default:
break;
}
}
};
+
private long mTimeAddedMs;
public DialerCall(
@@ -267,6 +280,11 @@ public class DialerCall implements VideoTechListener {
mVideoTechManager = new VideoTechManager(this);
updateFromTelecomCall();
+ if (isHiddenNumber() && TextUtils.isEmpty(getNumber())) {
+ mHiddenId = ++sHiddenCounter;
+ } else {
+ mHiddenId = 0;
+ }
if (registerCallback) {
mTelecomCall.registerCallback(mTelecomCallCallback);
@@ -358,6 +376,13 @@ public class DialerCall implements VideoTechListener {
}
}
+ public void notifyInternationalCallOnWifi() {
+ LogUtil.enterBlock("DialerCall.notifyInternationalCallOnWifi");
+ for (DialerCallListener dialerCallListener : mListeners) {
+ dialerCallListener.onInternationalCallOnWifi();
+ }
+ }
+
/* package-private */ Call getTelecomCall() {
return mTelecomCall;
}
@@ -526,6 +551,27 @@ public class DialerCall implements VideoTechListener {
return mId;
}
+ /**
+ * @return name appended with a number if the number is restricted/unknown and the user has
+ * received more than one restricted/unknown call.
+ */
+ @Nullable
+ public String updateNameIfRestricted(@Nullable String name) {
+ if (name != null && isHiddenNumber() && mHiddenId != 0 && sHiddenCounter > 1) {
+ return mContext.getString(R.string.unknown_counter, name, mHiddenId);
+ }
+ return name;
+ }
+
+ public static void clearRestrictedCount() {
+ sHiddenCounter = 0;
+ }
+
+ private boolean isHiddenNumber() {
+ return getNumberPresentation() == TelecomManager.PRESENTATION_RESTRICTED
+ || getNumberPresentation() == TelecomManager.PRESENTATION_UNKNOWN;
+ }
+
public boolean hasShownWiFiToLteHandoverToast() {
return hasShownWiFiToLteHandoverToast;
}
@@ -1326,7 +1372,6 @@ public class DialerCall implements VideoTechListener {
String phoneNumber = call.getNumber();
phoneNumber = phoneNumber != null ? phoneNumber : "";
- phoneNumber = phoneNumber.replaceAll("[^+0-9]", "");
// Insert order here determines the priority of that video tech option
videoTechs = new ArrayList<>();
diff --git a/java/com/android/incallui/call/DialerCallListener.java b/java/com/android/incallui/call/DialerCallListener.java
index fece103fa..ed321be05 100644
--- a/java/com/android/incallui/call/DialerCallListener.java
+++ b/java/com/android/incallui/call/DialerCallListener.java
@@ -34,4 +34,6 @@ public interface DialerCallListener {
void onWiFiToLteHandover();
void onHandoverToWifiFailure();
+
+ void onInternationalCallOnWifi();
}
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index b3b775be2..ed533be58 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -22,6 +22,7 @@ import android.graphics.drawable.Drawable;
import android.os.SystemClock;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v4.view.ViewCompat;
import android.telecom.TelecomManager;
import android.text.TextUtils;
import android.view.View;
@@ -50,13 +51,13 @@ public class ContactGridManager {
// Row 0: [Wi-Fi icon] Calling via Starbucks Wi-Fi
// Row 0: [Wi-Fi icon] Starbucks Wi-Fi
// Row 0: Hey Jake, pick up!
- private ImageView connectionIconImageView;
- private TextView statusTextView;
+ private final ImageView connectionIconImageView;
+ private final TextView statusTextView;
// Row 1: Jake Peralta [Contact photo]
// Row 1: Walgreens
// Row 1: +1 (650) 253-0000
- private TextView contactNameTextView;
+ private final TextView contactNameTextView;
@Nullable private ImageView avatarImageView;
// Row 2: Mobile +1 (650) 253-0000
@@ -65,13 +66,14 @@ public class ContactGridManager {
// Row 2: Hanging up
// Row 2: [Alert sign] Suspected spam caller
// Row 2: Your emergency callback number: +1 (650) 253-0000
- private ImageView workIconImageView;
- private ImageView hdIconImageView;
- private ImageView forwardIconImageView;
- private ImageView spamIconImageView;
- private ViewAnimator bottomTextSwitcher;
- private TextView bottomTextView;
- private Chronometer bottomTimerView;
+ private final ImageView workIconImageView;
+ private final ImageView hdIconImageView;
+ private final ImageView forwardIconImageView;
+ private final TextView forwardedNumberView;
+ private final ImageView spamIconImageView;
+ private final ViewAnimator bottomTextSwitcher;
+ private final TextView bottomTextView;
+ private final Chronometer bottomTimerView;
private int avatarSize;
private boolean hideAvatar;
private boolean showAnonymousAvatar;
@@ -89,16 +91,17 @@ public class ContactGridManager {
this.avatarImageView = avatarImageView;
this.avatarSize = avatarSize;
this.showAnonymousAvatar = showAnonymousAvatar;
- connectionIconImageView = (ImageView) view.findViewById(R.id.contactgrid_connection_icon);
- statusTextView = (TextView) view.findViewById(R.id.contactgrid_status_text);
- contactNameTextView = (TextView) view.findViewById(R.id.contactgrid_contact_name);
- workIconImageView = (ImageView) view.findViewById(R.id.contactgrid_workIcon);
- hdIconImageView = (ImageView) view.findViewById(R.id.contactgrid_hdIcon);
- forwardIconImageView = (ImageView) view.findViewById(R.id.contactgrid_forwardIcon);
- spamIconImageView = (ImageView) view.findViewById(R.id.contactgrid_spamIcon);
- bottomTextSwitcher = (ViewAnimator) view.findViewById(R.id.contactgrid_bottom_text_switcher);
- bottomTextView = (TextView) view.findViewById(R.id.contactgrid_bottom_text);
- bottomTimerView = (Chronometer) view.findViewById(R.id.contactgrid_bottom_timer);
+ connectionIconImageView = view.findViewById(R.id.contactgrid_connection_icon);
+ statusTextView = view.findViewById(R.id.contactgrid_status_text);
+ contactNameTextView = view.findViewById(R.id.contactgrid_contact_name);
+ workIconImageView = view.findViewById(R.id.contactgrid_workIcon);
+ hdIconImageView = view.findViewById(R.id.contactgrid_hdIcon);
+ forwardIconImageView = view.findViewById(R.id.contactgrid_forwardIcon);
+ forwardedNumberView = view.findViewById(R.id.contactgrid_forwardNumber);
+ spamIconImageView = view.findViewById(R.id.contactgrid_spamIcon);
+ bottomTextSwitcher = view.findViewById(R.id.contactgrid_bottom_text_switcher);
+ bottomTextView = view.findViewById(R.id.contactgrid_bottom_text);
+ bottomTimerView = view.findViewById(R.id.contactgrid_bottom_timer);
contactGridLayout = (View) contactNameTextView.getParent();
letterTile = new LetterTileDrawable(context.getResources());
@@ -336,9 +339,27 @@ public class ContactGridManager {
} else if (!info.isHdAttemptingIconVisible) {
hdIconImageView.setVisibility(View.GONE);
}
- forwardIconImageView.setVisibility(info.isForwardIconVisible ? View.VISIBLE : View.GONE);
spamIconImageView.setVisibility(info.isSpamIconVisible ? View.VISIBLE : View.GONE);
+ if (info.isForwardIconVisible) {
+ forwardIconImageView.setVisibility(View.VISIBLE);
+ forwardedNumberView.setVisibility(View.VISIBLE);
+ if (info.isTimerVisible) {
+ bottomTextSwitcher.setVisibility(View.VISIBLE);
+ if (ViewCompat.getLayoutDirection(contactGridLayout) == ViewCompat.LAYOUT_DIRECTION_LTR) {
+ forwardedNumberView.setText(TextUtils.concat(info.label, " • "));
+ } else {
+ forwardedNumberView.setText(TextUtils.concat(" • ", info.label));
+ }
+ } else {
+ bottomTextSwitcher.setVisibility(View.GONE);
+ forwardedNumberView.setText(info.label);
+ }
+ } else {
+ forwardIconImageView.setVisibility(View.GONE);
+ forwardedNumberView.setVisibility(View.GONE);
+ }
+
if (info.isTimerVisible) {
bottomTextSwitcher.setDisplayedChild(1);
bottomTimerView.setBase(
diff --git a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
index ac378484b..c74017e5d 100644
--- a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
+++ b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
@@ -20,6 +20,15 @@
android:id="@id/contactgrid_forwardIcon"
style="@style/BottomRowIcon"
android:src="@drawable/quantum_ic_forward_vd_theme_24"/>
+ <TextView
+ android:id="@+id/contactgrid_forwardNumber"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:singleLine="true"
+ android:textAppearance="@style/Dialer.Incall.TextAppearance"
+ tools:gravity="start"
+ tools:text="+1 (650) 253-0000"/>
<ImageView
android:id="@+id/contactgrid_spamIcon"
style="@style/BottomRowIcon"
diff --git a/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java b/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java
index 33e133d7f..d774fc3d4 100644
--- a/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java
+++ b/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java
@@ -24,6 +24,7 @@ import android.support.annotation.NonNull;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.AsyncTaskExecutor;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+import com.android.dialer.util.PermissionsUtil;
import java.util.Objects;
/**
@@ -93,8 +94,13 @@ public class BlockedNumberContentObserver extends ContentObserver
*/
public void register() {
LogUtil.i("BlockedNumberContentObserver.register", null);
- context.getContentResolver().registerContentObserver(CallLog.CONTENT_URI, true, this);
- handler.postDelayed(timeoutRunnable, TIMEOUT_MS);
+ if (PermissionsUtil.hasCallLogReadPermissions(context)
+ && PermissionsUtil.hasCallLogWritePermissions(context)) {
+ context.getContentResolver().registerContentObserver(CallLog.CONTENT_URI, true, this);
+ handler.postDelayed(timeoutRunnable, TIMEOUT_MS);
+ } else {
+ LogUtil.w("BlockedNumberContentObserver.register", "no call log read/write permissions.");
+ }
}
private void unregister() {
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index 748718566..547337eda 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -23,6 +23,7 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Icon;
+import android.support.annotation.NonNull;
import android.telecom.DisconnectCause;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
@@ -101,6 +102,9 @@ public class SpamCallListListener implements CallList.Listener {
public void onHandoverToWifiFailed(DialerCall call) {}
@Override
+ public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
+
+ @Override
public void onDisconnect(DialerCall call) {
if (!shouldShowAfterCallNotification(call)) {
return;
diff --git a/java/com/android/incallui/telecomeventui/AndroidManifest.xml b/java/com/android/incallui/telecomeventui/AndroidManifest.xml
new file mode 100644
index 000000000..861b9368a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<manifest package="com.android.incallui.telecomeventui"/> \ No newline at end of file
diff --git a/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java b/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java
new file mode 100644
index 000000000..2b602f876
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui.telecomeventui;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.os.UserManagerCompat;
+import android.view.View;
+import android.widget.CheckBox;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+
+/**
+ * Dialog that may be shown when users place an outgoing call to an international number while on
+ * Wifi.
+ *
+ * <p>The android.telephony.event.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC event is sent when users
+ * attempt to place a call under these circumstances.
+ */
+public class InternationalCallOnWifiDialogFragment extends DialogFragment {
+
+ /**
+ * Returns {@code true} if an {@link InternationalCallOnWifiDialogFragment} should be shown.
+ *
+ * <p>Attempting to show an InternationalCallOnWifiDialogFragment when this method returns {@code
+ * false} will result in an {@link IllegalStateException}.
+ */
+ public static boolean shouldShow(@NonNull Context context) {
+ if (!UserManagerCompat.isUserUnlocked(context)) {
+ LogUtil.i("InternationalCallOnWifiDialogFragment.shouldShow", "user locked, returning false");
+ return false;
+ }
+
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean shouldShow = preferences.getBoolean(ALWAYS_SHOW_WARNING_PREFERENCE_KEY, true);
+
+ LogUtil.i("InternationalCallOnWifiDialogFragment.shouldShow", "result: %b", shouldShow);
+ return shouldShow;
+ }
+
+ /**
+ * Called in response to user interaction with the {@link InternationalCallOnWifiDialogFragment}.
+ */
+ public interface Callback {
+
+ /** Indicates that the user wishes to proceed with the call represented by the given call id. */
+ void continueCall(@NonNull String callId);
+
+ /** Indicates that the user wishes to cancel the call represented by the given call id. */
+ void cancelCall(@NonNull String callId);
+ }
+
+ /**
+ * Returns a new instance of {@link InternationalCallOnWifiDialogFragment} with the given
+ * callback.
+ *
+ * <p>Prefer this method over the default constructor.
+ */
+ public static InternationalCallOnWifiDialogFragment newInstance(
+ @NonNull String callId, @NonNull Callback callback) {
+ InternationalCallOnWifiDialogFragment fragment = new InternationalCallOnWifiDialogFragment();
+ fragment.setCallback(callback);
+ Bundle args = new Bundle();
+ args.putString(ARG_CALL_ID, Assert.isNotNull(callId));
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ /**
+ * Key to the preference used to determine if the user wants to see {@link
+ * InternationalCallOnWifiDialogFragment InternationalCallOnWifiDialogFragments}.
+ */
+ @VisibleForTesting
+ static final String ALWAYS_SHOW_WARNING_PREFERENCE_KEY =
+ "ALWAYS_SHOW_INTERNATIONAL_CALL_ON_WIFI_WARNING";
+
+ /** Key in the arguments bundle for call id. */
+ private static final String ARG_CALL_ID = "call_id";
+
+ /**
+ * Callback which will receive information about user interactions with this dialog.
+ *
+ * <p>This is Nullable in the event that the dialog is destroyed by the framework, but doesn't
+ * have a callback reattached. Ideally, the InCallActivity would implement the callback and we
+ * would use FragmentUtils.getParentUnsafe instead of holding onto the callback here, but that's
+ * not possible with the existing InCallActivity/InCallActivityCommon implementation.
+ */
+ @Nullable private Callback callback;
+
+ /**
+ * Sets the callback for this dialog.
+ *
+ * <p>Used to reset the callback after state changes.
+ */
+ public void setCallback(@NonNull Callback callback) {
+ this.callback = Assert.isNotNull(callback);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle bundle) {
+ super.onCreateDialog(bundle);
+ LogUtil.enterBlock("InternationalCallOnWifiDialogFragment.onCreateDialog");
+
+ if (!InternationalCallOnWifiDialogFragment.shouldShow(getActivity())) {
+ throw new IllegalStateException(
+ "shouldShow indicated InternationalCallOnWifiDialogFragment should not have showed");
+ }
+
+ View dialogView =
+ View.inflate(getActivity(), R.layout.frag_international_call_on_wifi_dialog, null);
+
+ CheckBox alwaysWarn = dialogView.findViewById(R.id.always_warn);
+
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
+ // The default is set to false in this case to ensure that the first time the dialog opens,
+ // the checkbox is unchecked.
+ alwaysWarn.setChecked(preferences.getBoolean(ALWAYS_SHOW_WARNING_PREFERENCE_KEY, false));
+
+ AlertDialog alertDialog =
+ new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme)
+ .setCancelable(false)
+ .setView(dialogView)
+ .setPositiveButton(
+ android.R.string.ok,
+ (dialog, which) -> onPositiveButtonClick(preferences, alwaysWarn.isChecked()))
+ .setNegativeButton(
+ android.R.string.cancel,
+ (dialog, which) -> onNegativeButtonClick(preferences, alwaysWarn.isChecked()))
+ .create();
+
+ alertDialog.setCanceledOnTouchOutside(false);
+ return alertDialog;
+ }
+
+ private void onPositiveButtonClick(@NonNull SharedPreferences preferences, boolean alwaysWarn) {
+ LogUtil.i(
+ "InternationalCallOnWifiDialogFragment.onPositiveButtonClick",
+ "alwaysWarn: %b",
+ alwaysWarn);
+ preferences.edit().putBoolean(ALWAYS_SHOW_WARNING_PREFERENCE_KEY, alwaysWarn).apply();
+
+ // Neither callback nor callId are null in normal circumstances. See comments on callback
+ callback.continueCall(getArguments().getString(ARG_CALL_ID));
+ }
+
+ private void onNegativeButtonClick(@NonNull SharedPreferences preferences, boolean alwaysWarn) {
+ LogUtil.i(
+ "InternationalCallOnWifiDialogFragment.onNegativeButtonClick",
+ "alwaysWarn: %b",
+ alwaysWarn);
+ preferences.edit().putBoolean(ALWAYS_SHOW_WARNING_PREFERENCE_KEY, alwaysWarn).apply();
+
+ // Neither callback nor callId are null in normal circumstances. See comments on callback
+ callback.cancelCall(getArguments().getString(ARG_CALL_ID));
+ }
+}
diff --git a/java/com/android/incallui/telecomeventui/res/layout/frag_international_call_on_wifi_dialog.xml b/java/com/android/incallui/telecomeventui/res/layout/frag_international_call_on_wifi_dialog.xml
new file mode 100644
index 000000000..3d8adcb0d
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/layout/frag_international_call_on_wifi_dialog.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingTop="25dp"
+ android:paddingStart="25dp"
+ android:paddingEnd="25dp"
+ android:paddingBottom="4dp"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/details"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="10dp"
+ android:text="@string/details"
+ android:textColor="@color/dialer_primary_text_color"
+ android:textSize="16sp"/>
+
+ <CheckBox
+ android:id="@+id/always_warn"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:buttonTint="@color/dialer_theme_color"
+ android:text="@string/always_warn"
+ android:textColor="@color/dialer_primary_text_color"
+ android:textSize="14sp"/>
+</LinearLayout>
+
diff --git a/java/com/android/incallui/telecomeventui/res/values-af/strings.xml b/java/com/android/incallui/telecomeventui/res/values-af/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-af/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-am/strings.xml b/java/com/android/incallui/telecomeventui/res/values-am/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-am/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ar/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ar/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ar/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-az/strings.xml b/java/com/android/incallui/telecomeventui/res/values-az/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-az/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/telecomeventui/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-be/strings.xml b/java/com/android/incallui/telecomeventui/res/values-be/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-be/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-bg/strings.xml b/java/com/android/incallui/telecomeventui/res/values-bg/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-bg/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-bn/strings.xml b/java/com/android/incallui/telecomeventui/res/values-bn/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-bn/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-bs/strings.xml b/java/com/android/incallui/telecomeventui/res/values-bs/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-bs/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ca/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ca/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ca/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-cs/strings.xml b/java/com/android/incallui/telecomeventui/res/values-cs/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-cs/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-da/strings.xml b/java/com/android/incallui/telecomeventui/res/values-da/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-da/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-de/strings.xml b/java/com/android/incallui/telecomeventui/res/values-de/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-de/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-el/strings.xml b/java/com/android/incallui/telecomeventui/res/values-el/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-el/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-en-rAU/strings.xml b/java/com/android/incallui/telecomeventui/res/values-en-rAU/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-en-rAU/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-en-rGB/strings.xml b/java/com/android/incallui/telecomeventui/res/values-en-rGB/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-en-rGB/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-en-rIN/strings.xml b/java/com/android/incallui/telecomeventui/res/values-en-rIN/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-en-rIN/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-es-rUS/strings.xml b/java/com/android/incallui/telecomeventui/res/values-es-rUS/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-es-rUS/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-es/strings.xml b/java/com/android/incallui/telecomeventui/res/values-es/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-es/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-et/strings.xml b/java/com/android/incallui/telecomeventui/res/values-et/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-et/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-eu/strings.xml b/java/com/android/incallui/telecomeventui/res/values-eu/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-eu/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-fa/strings.xml b/java/com/android/incallui/telecomeventui/res/values-fa/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-fa/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-fi/strings.xml b/java/com/android/incallui/telecomeventui/res/values-fi/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-fi/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-fr-rCA/strings.xml b/java/com/android/incallui/telecomeventui/res/values-fr-rCA/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-fr-rCA/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-fr/strings.xml b/java/com/android/incallui/telecomeventui/res/values-fr/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-fr/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-gl/strings.xml b/java/com/android/incallui/telecomeventui/res/values-gl/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-gl/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-gu/strings.xml b/java/com/android/incallui/telecomeventui/res/values-gu/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-gu/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-hi/strings.xml b/java/com/android/incallui/telecomeventui/res/values-hi/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-hi/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-hr/strings.xml b/java/com/android/incallui/telecomeventui/res/values-hr/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-hr/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-hu/strings.xml b/java/com/android/incallui/telecomeventui/res/values-hu/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-hu/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-hy/strings.xml b/java/com/android/incallui/telecomeventui/res/values-hy/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-hy/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-in/strings.xml b/java/com/android/incallui/telecomeventui/res/values-in/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-in/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-is/strings.xml b/java/com/android/incallui/telecomeventui/res/values-is/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-is/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-it/strings.xml b/java/com/android/incallui/telecomeventui/res/values-it/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-it/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-iw/strings.xml b/java/com/android/incallui/telecomeventui/res/values-iw/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-iw/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ja/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ja/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ja/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ka/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ka/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ka/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-kk/strings.xml b/java/com/android/incallui/telecomeventui/res/values-kk/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-kk/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-km/strings.xml b/java/com/android/incallui/telecomeventui/res/values-km/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-km/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-kn/strings.xml b/java/com/android/incallui/telecomeventui/res/values-kn/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-kn/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ko/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ko/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ko/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ky/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ky/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ky/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-lo/strings.xml b/java/com/android/incallui/telecomeventui/res/values-lo/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-lo/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-lt/strings.xml b/java/com/android/incallui/telecomeventui/res/values-lt/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-lt/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-lv/strings.xml b/java/com/android/incallui/telecomeventui/res/values-lv/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-lv/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-mk/strings.xml b/java/com/android/incallui/telecomeventui/res/values-mk/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-mk/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ml/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ml/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ml/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-mn/strings.xml b/java/com/android/incallui/telecomeventui/res/values-mn/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-mn/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-mr/strings.xml b/java/com/android/incallui/telecomeventui/res/values-mr/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-mr/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ms/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ms/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ms/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-my/strings.xml b/java/com/android/incallui/telecomeventui/res/values-my/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-my/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-nb/strings.xml b/java/com/android/incallui/telecomeventui/res/values-nb/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-nb/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ne/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ne/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ne/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-nl/strings.xml b/java/com/android/incallui/telecomeventui/res/values-nl/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-nl/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-no/strings.xml b/java/com/android/incallui/telecomeventui/res/values-no/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-no/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-pa/strings.xml b/java/com/android/incallui/telecomeventui/res/values-pa/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-pa/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-pl/strings.xml b/java/com/android/incallui/telecomeventui/res/values-pl/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-pl/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-pt-rBR/strings.xml b/java/com/android/incallui/telecomeventui/res/values-pt-rBR/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-pt-rBR/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-pt-rPT/strings.xml b/java/com/android/incallui/telecomeventui/res/values-pt-rPT/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-pt-rPT/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-pt/strings.xml b/java/com/android/incallui/telecomeventui/res/values-pt/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-pt/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ro/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ro/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ro/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ru/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ru/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ru/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-si/strings.xml b/java/com/android/incallui/telecomeventui/res/values-si/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-si/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-sk/strings.xml b/java/com/android/incallui/telecomeventui/res/values-sk/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-sk/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-sl/strings.xml b/java/com/android/incallui/telecomeventui/res/values-sl/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-sl/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-sq/strings.xml b/java/com/android/incallui/telecomeventui/res/values-sq/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-sq/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-sr/strings.xml b/java/com/android/incallui/telecomeventui/res/values-sr/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-sr/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-sv/strings.xml b/java/com/android/incallui/telecomeventui/res/values-sv/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-sv/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-sw/strings.xml b/java/com/android/incallui/telecomeventui/res/values-sw/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-sw/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ta/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ta/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ta/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-te/strings.xml b/java/com/android/incallui/telecomeventui/res/values-te/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-te/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-th/strings.xml b/java/com/android/incallui/telecomeventui/res/values-th/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-th/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-tl/strings.xml b/java/com/android/incallui/telecomeventui/res/values-tl/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-tl/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-tr/strings.xml b/java/com/android/incallui/telecomeventui/res/values-tr/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-tr/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-uk/strings.xml b/java/com/android/incallui/telecomeventui/res/values-uk/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-uk/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-ur/strings.xml b/java/com/android/incallui/telecomeventui/res/values-ur/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-ur/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-uz/strings.xml b/java/com/android/incallui/telecomeventui/res/values-uz/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-uz/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-vi/strings.xml b/java/com/android/incallui/telecomeventui/res/values-vi/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-vi/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-zh-rCN/strings.xml b/java/com/android/incallui/telecomeventui/res/values-zh-rCN/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-zh-rCN/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-zh-rHK/strings.xml b/java/com/android/incallui/telecomeventui/res/values-zh-rHK/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-zh-rHK/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-zh-rTW/strings.xml b/java/com/android/incallui/telecomeventui/res/values-zh-rTW/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-zh-rTW/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values-zu/strings.xml b/java/com/android/incallui/telecomeventui/res/values-zu/strings.xml
new file mode 100644
index 000000000..ce7c4822a
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values-zu/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- no translation found for always_warn (8332929731464707890) -->
+ <skip />
+ <!-- no translation found for details (8642701148762155677) -->
+ <skip />
+</resources>
diff --git a/java/com/android/incallui/telecomeventui/res/values/strings.xml b/java/com/android/incallui/telecomeventui/res/values/strings.xml
new file mode 100644
index 000000000..a752e2e50
--- /dev/null
+++ b/java/com/android/incallui/telecomeventui/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+
+ <!-- Label next to the checkbox users can use to prevent the associated dialog from showing -->
+ <string name="always_warn">Show warning every time</string>
+
+ <!-- Main text shown to the user in the dialog -->
+ <string name="details">You are calling an international number and charges may apply.</string>
+
+</resources> \ No newline at end of file
diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
index 608634778..b7a960e35 100644
--- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
@@ -495,7 +495,7 @@ public class SurfaceViewVideoCallFragment extends Fragment
}
private View[] getAllPreviewRelatedViews() {
- return new View[] {previewRoot, mutePreviewOverlay};
+ return new View[] {previewRoot};
}
private int getOffsetTop(View view) {
diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
index 1a2bc2429..c67246675 100644
--- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
+++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
@@ -14,7 +14,7 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -32,7 +32,7 @@
android:id="@+id/videocall_remote_video_off"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_centerInParent="true"
+ android:layout_gravity="center"
android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
android:drawablePadding="8dp"
android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
@@ -71,22 +71,19 @@
android:visibility="gone"
android:importantForAccessibility="no"
tools:visibility="visible"/>
- </FrameLayout>
- <ImageView
- android:id="@+id/videocall_video_preview_mute_overlay"
- android:layout_width="32dp"
- android:layout_height="32dp"
- android:layout_alignBottom="@id/videocall_preview_root"
- android:layout_alignEnd="@id/videocall_preview_root"
- android:layout_marginBottom="-8dp"
- android:layout_marginEnd="-8dp"
- android:background="@drawable/videocall_background_circle_white"
- android:contentDescription="@string/incall_content_description_muted"
- android:scaleType="center"
- android:src="@drawable/quantum_ic_mic_off_black_24"
- android:visibility="gone"
- tools:visibility="visible"/>
+ <ImageView
+ android:id="@+id/videocall_video_preview_mute_overlay"
+ android:layout_width="32dp"
+ android:layout_height="32dp"
+ android:layout_gravity="center"
+ android:background="@drawable/videocall_background_circle_white"
+ android:contentDescription="@string/incall_content_description_muted"
+ android:scaleType="center"
+ android:src="@drawable/quantum_ic_mic_off_black_24"
+ android:visibility="gone"
+ tools:visibility="visible"/>
+ </FrameLayout>
<View
android:id="@+id/videocall_green_screen_background"
@@ -105,4 +102,4 @@
android:layout_height="wrap_content"
android:layout_gravity="top"/>
-</RelativeLayout>
+</FrameLayout>
diff --git a/java/com/android/incallui/video/impl/res/values-land/styles.xml b/java/com/android/incallui/video/impl/res/values-land/styles.xml
index f60dbd1d6..a809708df 100644
--- a/java/com/android/incallui/video/impl/res/values-land/styles.xml
+++ b/java/com/android/incallui/video/impl/res/values-land/styles.xml
@@ -16,8 +16,7 @@
-->
<resources>
<style name="VideoPreviewHolder">
- <item name="android:layout_alignParentBottom">true</item>
- <item name="android:layout_alignParentEnd">true</item>
+ <item name="android:layout_gravity">bottom|end</item>
<item name="android:layout_width">@dimen/videocall_preview_long</item>
<item name="android:layout_height">@dimen/videocall_preview_height</item>
<item name="android:layout_marginBottom">@dimen/videocall_preview_margin_bottom</item>
diff --git a/java/com/android/incallui/video/impl/res/values/styles.xml b/java/com/android/incallui/video/impl/res/values/styles.xml
index 010aca2d1..f73075f09 100644
--- a/java/com/android/incallui/video/impl/res/values/styles.xml
+++ b/java/com/android/incallui/video/impl/res/values/styles.xml
@@ -23,8 +23,7 @@
<item name="android:stateListAnimator">@animator/disabled_alpha</item>
</style>
<style name="VideoPreviewHolder">
- <item name="android:layout_alignParentBottom">true</item>
- <item name="android:layout_alignParentStart">true</item>
+ <item name="android:layout_gravity">bottom|start</item>
<item name="android:layout_width">@dimen/videocall_preview_width</item>
<item name="android:layout_height">@dimen/videocall_preview_long</item>
<item name="android:layout_marginBottom">@dimen/videocall_preview_margin_bottom</item>
diff --git a/java/com/android/voicemail/impl/ActivationTask.java b/java/com/android/voicemail/impl/ActivationTask.java
index 91e369531..6e27b5015 100644
--- a/java/com/android/voicemail/impl/ActivationTask.java
+++ b/java/com/android/voicemail/impl/ActivationTask.java
@@ -19,11 +19,9 @@ package com.android.voicemail.impl;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
-import android.database.ContentObserver;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.provider.Settings;
-import android.provider.Settings.Global;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
import android.telecom.PhoneAccountHandle;
@@ -43,8 +41,6 @@ import com.android.voicemail.impl.sync.SyncTask;
import com.android.voicemail.impl.sync.VvmAccountManager;
import com.android.voicemail.impl.utils.LoggerUtils;
import java.io.IOException;
-import java.util.HashSet;
-import java.util.Set;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
@@ -67,8 +63,6 @@ public class ActivationTask extends BaseTask {
private static final String EXTRA_MESSAGE_DATA_BUNDLE = "extra_message_data_bundle";
- @Nullable private static DeviceProvisionedObserver sDeviceProvisionedObserver;
-
private final RetryPolicy mRetryPolicy;
private Bundle mMessageData;
@@ -98,7 +92,7 @@ public class ActivationTask extends BaseTask {
// Activation might need information such as system language to be set, so wait until
// the setup wizard is finished. The data bundle from the SMS will be re-requested upon
// activation.
- queueActivationAfterProvisioned(context, phoneAccountHandle);
+ DeviceProvisionedJobService.activateAfterProvisioned(context, phoneAccountHandle);
return;
}
@@ -285,45 +279,4 @@ public class ActivationTask extends BaseTask {
.createForPhoneAccountHandle(phoneAccountHandle);
return telephonyManager.getServiceState().getState() == ServiceState.STATE_IN_SERVICE;
}
-
- private static void queueActivationAfterProvisioned(
- Context context, PhoneAccountHandle phoneAccountHandle) {
- if (sDeviceProvisionedObserver == null) {
- sDeviceProvisionedObserver = new DeviceProvisionedObserver(context);
- context
- .getContentResolver()
- .registerContentObserver(
- Settings.Global.getUriFor(Global.DEVICE_PROVISIONED),
- false,
- sDeviceProvisionedObserver);
- }
- sDeviceProvisionedObserver.addPhoneAcountHandle(phoneAccountHandle);
- }
-
- private static class DeviceProvisionedObserver extends ContentObserver {
-
- private final Context mContext;
- private final Set<PhoneAccountHandle> mPhoneAccountHandles = new HashSet<>();
-
- private DeviceProvisionedObserver(Context context) {
- super(null);
- mContext = context;
- }
-
- public void addPhoneAcountHandle(PhoneAccountHandle phoneAccountHandle) {
- mPhoneAccountHandles.add(phoneAccountHandle);
- }
-
- @Override
- public void onChange(boolean selfChange) {
- if (isDeviceProvisioned(mContext)) {
- VvmLog.i(TAG, "device provisioned, resuming activation");
- for (PhoneAccountHandle phoneAccountHandle : mPhoneAccountHandles) {
- start(mContext, phoneAccountHandle, null);
- }
- mContext.getContentResolver().unregisterContentObserver(sDeviceProvisionedObserver);
- sDeviceProvisionedObserver = null;
- }
- }
- }
}
diff --git a/java/com/android/voicemail/impl/AndroidManifest.xml b/java/com/android/voicemail/impl/AndroidManifest.xml
index 8c0d67f6b..3e512ba1e 100644
--- a/java/com/android/voicemail/impl/AndroidManifest.xml
+++ b/java/com/android/voicemail/impl/AndroidManifest.xml
@@ -92,6 +92,11 @@
android:exported="false"/>
<service
+ android:name="com.android.voicemail.impl.DeviceProvisionedJobService"
+ android:permission="android.permission.BIND_JOB_SERVICE"
+ android:exported="false"/>
+
+ <service
android:name="com.android.voicemail.impl.OmtpService"
android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
android:exported="true"
diff --git a/java/com/android/voicemail/impl/DeviceProvisionedJobService.java b/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
new file mode 100644
index 000000000..a0b999d23
--- /dev/null
+++ b/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.voicemail.impl;
+
+import android.annotation.TargetApi;
+import android.app.job.JobInfo;
+import android.app.job.JobInfo.TriggerContentUri;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.app.job.JobWorkItem;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build.VERSION_CODES;
+import android.provider.Settings;
+import android.provider.Settings.Global;
+import android.telecom.PhoneAccountHandle;
+import com.android.dialer.constants.ScheduledJobIds;
+
+/**
+ * JobService triggered when the setup wizard is completed, and rerun all {@link ActivationTask}
+ * scheduled during the setup.
+ */
+@TargetApi(VERSION_CODES.O)
+public class DeviceProvisionedJobService extends JobService {
+
+ private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "EXTRA_PHONE_ACCOUNT_HANDLE";
+
+ /** Queue the phone account to be reactivated after the setup wizard has completed. */
+ public static void activateAfterProvisioned(
+ Context context, PhoneAccountHandle phoneAccountHandle) {
+ JobInfo jobInfo =
+ new JobInfo.Builder(
+ ScheduledJobIds.VVM_DEVICE_PROVISIONED_JOB,
+ new ComponentName(context, DeviceProvisionedJobService.class))
+ .addTriggerContentUri(
+ new TriggerContentUri(Global.getUriFor(Global.DEVICE_PROVISIONED), 0))
+ // VVM activation must be run as soon as possible to avoid voicemail loss
+ .setTriggerContentMaxDelay(0)
+ .build();
+
+ Intent intent = new Intent();
+ intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+ context.getSystemService(JobScheduler.class).enqueue(jobInfo, new JobWorkItem(intent));
+ }
+
+ @Override
+ public boolean onStartJob(JobParameters params) {
+ Assert.isTrue(isDeviceProvisioned());
+ VvmLog.i("DeviceProvisionedJobService.onStartJob", "device provisioned");
+ for (JobWorkItem item = params.dequeueWork(); item != null; item = params.dequeueWork()) {
+ PhoneAccountHandle phoneAccountHandle =
+ item.getIntent().getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+ VvmLog.i(
+ "DeviceProvisionedJobService.onStartJob",
+ "restarting activation for " + phoneAccountHandle);
+ ActivationTask.start(this, phoneAccountHandle, null);
+ }
+ return false; // job not running in background
+ }
+
+ @Override
+ public boolean onStopJob(JobParameters params) {
+ return true; // reschedule job
+ }
+
+ private boolean isDeviceProvisioned() {
+ return Settings.Global.getInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) == 1;
+ }
+}
diff --git a/java/com/android/voicemail/impl/OmtpService.java b/java/com/android/voicemail/impl/OmtpService.java
index ad24e1243..759be4fd1 100644
--- a/java/com/android/voicemail/impl/OmtpService.java
+++ b/java/com/android/voicemail/impl/OmtpService.java
@@ -27,6 +27,7 @@ import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.voicemail.VoicemailComponent;
import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
+import com.android.voicemail.impl.sms.LegacyModeSmsHandler;
import com.android.voicemail.impl.sync.VvmAccountManager;
/** Implements {@link VisualVoicemailService} to receive visual voicemail events */
@@ -74,6 +75,11 @@ public class OmtpService extends VisualVoicemailService {
return;
}
+ if (!isUserUnlocked()) {
+ LegacyModeSmsHandler.handle(this, sms);
+ return;
+ }
+
VvmPackageInstallHandler.scanNewPackages(this);
if (!isServiceEnabled(sms.getPhoneAccountHandle())) {
diff --git a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
index 04b3e73da..4a9e43370 100644
--- a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
+++ b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
@@ -107,8 +107,7 @@ public class OmtpVvmCarrierConfigHelper {
mCarrierConfig = getCarrierConfig(telephonyManager);
mTelephonyConfig =
- new TelephonyVvmConfigManager(context.getResources())
- .getConfig(telephonyManager.getSimOperator());
+ new TelephonyVvmConfigManager(context).getConfig(telephonyManager.getSimOperator());
mVvmType = getVvmType();
mProtocol = VisualVoicemailProtocolFactory.create(mContext.getResources(), mVvmType);
diff --git a/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java b/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java
index 04012c9c2..b4def2fc3 100644
--- a/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java
+++ b/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java
@@ -16,11 +16,12 @@
package com.android.voicemail.impl;
-import android.content.res.Resources;
+import android.content.Context;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.util.ArrayMap;
+import com.android.dialer.common.ConfigProviderBindings;
import com.android.voicemail.impl.utils.XmlUtils;
import java.io.IOException;
import java.util.ArrayList;
@@ -38,22 +39,24 @@ public class TelephonyVvmConfigManager {
private static final String TAG_PERSISTABLEMAP = "pbundle_as_map";
- static final String KEY_MCCMNC = "mccmnc";
+ @VisibleForTesting static final String KEY_MCCMNC = "mccmnc";
+
+ private static final String KEY_FEATURE_FLAG_NAME = "feature_flag_name";
private static Map<String, PersistableBundle> sCachedConfigs;
private final Map<String, PersistableBundle> mConfigs;
- public TelephonyVvmConfigManager(Resources resources) {
+ public TelephonyVvmConfigManager(Context context) {
if (sCachedConfigs == null) {
- sCachedConfigs = loadConfigs(resources.getXml(R.xml.vvm_config));
+ sCachedConfigs = loadConfigs(context, context.getResources().getXml(R.xml.vvm_config));
}
mConfigs = sCachedConfigs;
}
@VisibleForTesting
- TelephonyVvmConfigManager(XmlPullParser parser) {
- mConfigs = loadConfigs(parser);
+ TelephonyVvmConfigManager(Context context, XmlPullParser parser) {
+ mConfigs = loadConfigs(context, parser);
}
@Nullable
@@ -64,7 +67,7 @@ public class TelephonyVvmConfigManager {
return mConfigs.get(mccMnc);
}
- private static Map<String, PersistableBundle> loadConfigs(XmlPullParser parser) {
+ private static Map<String, PersistableBundle> loadConfigs(Context context, XmlPullParser parser) {
Map<String, PersistableBundle> configs = new ArrayMap<>();
try {
ArrayList list = readBundleList(parser);
@@ -73,6 +76,13 @@ public class TelephonyVvmConfigManager {
throw new IllegalArgumentException("PersistableBundle expected, got " + object);
}
PersistableBundle bundle = (PersistableBundle) object;
+
+ if (bundle.containsKey(KEY_FEATURE_FLAG_NAME)
+ && !ConfigProviderBindings.get(context)
+ .getBoolean(bundle.getString(KEY_FEATURE_FLAG_NAME), false)) {
+ continue;
+ }
+
String[] mccMncs = bundle.getStringArray(KEY_MCCMNC);
if (mccMncs == null) {
throw new IllegalArgumentException("MCCMNC is null");
diff --git a/java/com/android/voicemail/impl/res/xml/vvm_config.xml b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
index 230d40f90..daba3d511 100644
--- a/java/com/android/voicemail/impl/res/xml/vvm_config.xml
+++ b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
@@ -23,6 +23,30 @@
</pbundle_as_map>
<pbundle_as_map>
+ <!-- Orange Belgium -->
+ <string name="feature_flag_name">vvm_carrier_flag_20610</string>
+ <string-array name="mccmnc">
+ <item value="20610"/>
+ </string-array>
+
+ <int
+ name="vvm_port_number_int"
+ value="0"/>
+ <string name="vvm_destination_number_string">8082</string>
+ <string-array name="carrier_vvm_package_name_string_array">
+ <item value="com.orange.vvm"/>
+ </string-array>
+ <string name="vvm_type_string">vvm_type_omtp</string>
+ <boolean
+ name="vvm_cellular_data_required_bool"
+ value="true"/>
+ <string-array name="vvm_disabled_capabilities_string_array">
+ <!-- b/32365569 -->
+ <item value="STARTTLS"/>
+ </string-array>
+ </pbundle_as_map>
+
+ <pbundle_as_map>
<!-- Orange France -->
<string-array name="mccmnc">
<item value="20801"/>
@@ -47,6 +71,30 @@
</pbundle_as_map>
<pbundle_as_map>
+ <!-- Orange Luxembourg -->
+ <string name="feature_flag_name">vvm_carrier_flag_20610</string>
+ <string-array name="mccmnc">
+ <item value="27099"/>
+ </string-array>
+
+ <int
+ name="vvm_port_number_int"
+ value="0"/>
+ <string name="vvm_destination_number_string">64085</string>
+ <string-array name="carrier_vvm_package_name_string_array">
+ <item value="com.orange.vvm"/>
+ </string-array>
+ <string name="vvm_type_string">vvm_type_omtp</string>
+ <boolean
+ name="vvm_cellular_data_required_bool"
+ value="true"/>
+ <string-array name="vvm_disabled_capabilities_string_array">
+ <!-- b/32365569 -->
+ <item value="STARTTLS"/>
+ </string-array>
+ </pbundle_as_map>
+
+ <pbundle_as_map>
<!-- T-Mobile USA-->
<string-array name="mccmnc">
<item value="310160"/>
@@ -86,6 +134,22 @@
</pbundle_as_map>
<pbundle_as_map>
+ <!-- Telus Canada -->
+ <string name="feature_flag_name">vvm_carrier_flag_302220</string>
+ <string-array name="mccmnc">
+ <item value="302220"/>
+ </string-array>
+ <int
+ name="vvm_port_number_int"
+ value="5499"/>
+ <string name="vvm_destination_number_string">7723</string>
+ <string name="vvm_type_string">vvm_type_omtp</string>
+ <boolean
+ name="vvm_cellular_data_required_bool"
+ value="true"/>
+ </pbundle_as_map>
+
+ <pbundle_as_map>
<!-- Verizon USA -->
<string-array name="mccmnc">
<item value="310004"/>
diff --git a/java/com/android/voicemail/impl/scheduling/TaskExecutor.java b/java/com/android/voicemail/impl/scheduling/TaskExecutor.java
index 84dc1db4a..e3b718e50 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskExecutor.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskExecutor.java
@@ -193,13 +193,13 @@ final class TaskExecutor {
/** Should attempt to run the next task when a task has finished or been added. */
private boolean taskAutoRunDisabledForTesting = false;
+ /** Handles execution of the background task in teh worker thread. */
@VisibleForTesting
final class WorkerThreadHandler extends Handler {
public WorkerThreadHandler(Looper looper) {
super(looper);
}
-
@Override
@WorkerThread
public void handleMessage(Message msg) {
@@ -218,6 +218,7 @@ final class TaskExecutor {
}
}
+ /** Handles completion of the background task in the main thread. */
@VisibleForTesting
final class MainThreadHandler extends Handler {
@@ -233,6 +234,11 @@ final class TaskExecutor {
getTasks().remove(task);
task.onCompleted();
isWorkerThreadBusy = false;
+ if (!isJobRunning() || isTerminating()) {
+ // TaskExecutor was terminated when the task is running in background, don't need to run the
+ // next task or terminate again
+ return;
+ }
maybeRunNextTask();
}
}
@@ -290,6 +296,7 @@ final class TaskExecutor {
@MainThread
private void maybeRunNextTask() {
Assert.isMainThread();
+
if (isWorkerThreadBusy) {
return;
}
diff --git a/java/com/android/voicemail/impl/scheduling/TaskReceiver.java b/java/com/android/voicemail/impl/scheduling/TaskReceiver.java
index 00d36d00f..e78dcf72c 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskReceiver.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskReceiver.java
@@ -49,6 +49,7 @@ public class TaskReceiver extends BroadcastReceiver {
for (Intent intent : deferredBroadcasts) {
context.sendBroadcast(intent);
}
+ deferredBroadcasts.clear();
}
@Override
@@ -68,13 +69,13 @@ public class TaskReceiver extends BroadcastReceiver {
deferredBroadcasts.add(intent);
return;
}
- Task task = Tasks.createTask(context, intent.getExtras());
+ Task task = Tasks.createTask(context.getApplicationContext(), intent.getExtras());
taskExecutor.addTask(task);
} else {
VvmLog.i(TAG, "scheduling new job");
List<Bundle> taskList = new ArrayList<>();
taskList.add(intent.getExtras());
- TaskSchedulerJobService.scheduleJob(context, taskList, 0, true);
+ TaskSchedulerJobService.scheduleJob(context.getApplicationContext(), taskList, 0, true);
}
}
}
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
index 9bfce0052..107234edc 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -23,9 +23,11 @@ import android.app.job.JobScheduler;
import android.app.job.JobService;
import android.content.ComponentName;
import android.content.Context;
+import android.content.SharedPreferences;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.Parcelable;
+import android.preference.PreferenceManager;
import android.support.annotation.MainThread;
import com.android.dialer.constants.ScheduledJobIds;
import com.android.voicemail.impl.Assert;
@@ -41,11 +43,28 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
private static final String EXTRA_TASK_EXTRAS_ARRAY = "extra_task_extras_array";
+ private static final String EXTRA_JOB_ID = "extra_job_id";
+
+ private static final String EXPECTED_JOB_ID =
+ "com.android.voicemail.impl.scheduling.TaskSchedulerJobService.EXPECTED_JOB_ID";
+
+ private static final String NEXT_JOB_ID =
+ "com.android.voicemail.impl.scheduling.TaskSchedulerJobService.NEXT_JOB_ID";
+
private JobParameters jobParameters;
@Override
@MainThread
public boolean onStartJob(JobParameters params) {
+ int jobId = params.getTransientExtras().getInt(EXTRA_JOB_ID);
+ int expectedJobId =
+ PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0);
+ if (jobId != expectedJobId) {
+ VvmLog.e(
+ TAG, "Job " + jobId + " is not the last scheduled job " + expectedJobId + ", ignoring");
+ return false; // nothing more to do. Job not running in background.
+ }
+ VvmLog.i(TAG, "starting " + jobId);
jobParameters = params;
TaskExecutor.createRunningInstance(this);
TaskExecutor.getRunningInstance()
@@ -97,6 +116,13 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
jobScheduler.cancel(ScheduledJobIds.VVM_TASK_SCHEDULER_JOB);
}
Bundle extras = new Bundle();
+ int jobId = createJobId(context);
+ extras.putInt(EXTRA_JOB_ID, jobId);
+ PreferenceManager.getDefaultSharedPreferences(context)
+ .edit()
+ .putInt(EXPECTED_JOB_ID, jobId)
+ .apply();
+
extras.putParcelableArray(
EXTRA_TASK_EXTRAS_ARRAY, pendingTasks.toArray(new Bundle[pendingTasks.size()]));
JobInfo.Builder builder =
@@ -112,7 +138,7 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
VvmLog.i(TAG, "running job instantly.");
}
jobScheduler.schedule(builder.build());
- VvmLog.i(TAG, "job scheduled");
+ VvmLog.i(TAG, "job " + jobId + " scheduled");
}
/**
@@ -143,4 +169,11 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
}
return result;
}
+
+ private static int createJobId(Context context) {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ int jobId = sharedPreferences.getInt(NEXT_JOB_ID, 0);
+ sharedPreferences.edit().putInt(NEXT_JOB_ID, jobId + 1).apply();
+ return jobId;
+ }
}