Update oc-dr1-dev to v11.1 RC06 am: 9a6afa3ae2 -s ours am: 012b92867d -s ours
am: 9369ec816e -s ours
Change-Id: I5c97aaa0c0c8083a55de8df2741f76eb64c14205
diff --git a/Android.mk b/Android.mk
index beccd86..2da71a5 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,25 +1,13 @@
# Local modifications:
-# * removed com.google.android.backup.api_key. This should be added to
-# the manifest in the top level directory.
# * removed com.google.android.geo.API_KEY key. This should be added to
# the manifest files in java/com/android/incallui/calllocation/impl/
# and /java/com/android/incallui/maps/impl/
# * b/62417801 modify translation string naming convention:
# $ find . -type d | grep 262 | rename 's/(values)\-([a-zA-Z\+\-]+)\-(mcc262-mnc01)/$1-$3-$2/'
-# * b/62343966 include manually generated GRPC service class:
-# $ protoc --plugin=protoc-gen-grpc-java=prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
-# --grpc-java_out=lite:"packages/apps/Dialer/java/com/android/voicemail/impl/" \
-# --proto_path="packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/" "packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto"
# * b/37077388 temporarily disable proguard with javac
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(TARGET_BUILD_APPS),)
-support_library_root_dir := frameworks/support
-else
-support_library_root_dir := prebuilts/sdk/current/support
-endif
-
# The base directory for Dialer sources.
BASE_DIR := java/com/android
@@ -63,210 +51,82 @@
$(BASE_DIR)/dialer/binary/google/GoogleStubDialerRootComponent.java \
$(BASE_DIR)/dialer/binary/google/GoogleStubDialerApplication.java
-# All Dialers resources.
-# find . -type d -name "res" | uniq | sort
-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 \
- $(BASE_DIR)/dialer/callcomposer/camera/camerafocus/res \
- $(BASE_DIR)/dialer/callcomposer/cameraui/res \
- $(BASE_DIR)/dialer/callcomposer/res \
- $(BASE_DIR)/dialer/calldetails/res \
- $(BASE_DIR)/dialer/calllog/ui/res \
- $(BASE_DIR)/dialer/calllogutils/res \
- $(BASE_DIR)/dialer/common/res \
- $(BASE_DIR)/dialer/contactactions/res \
- $(BASE_DIR)/dialer/contactsfragment/res \
- $(BASE_DIR)/dialer/dialpadview/res \
- $(BASE_DIR)/dialer/enrichedcall/simulator/res \
- $(BASE_DIR)/dialer/interactions/res \
- $(BASE_DIR)/dialer/main/impl/res \
- $(BASE_DIR)/dialer/notification/res \
- $(BASE_DIR)/dialer/oem/res \
- $(BASE_DIR)/dialer/phonenumberutil/res \
- $(BASE_DIR)/dialer/postcall/res \
- $(BASE_DIR)/dialer/searchfragment/common/res \
- $(BASE_DIR)/dialer/searchfragment/list/res \
- $(BASE_DIR)/dialer/searchfragment/nearbyplaces/res \
- $(BASE_DIR)/dialershared/bubble/res \
- $(BASE_DIR)/dialer/shortcuts/res \
- $(BASE_DIR)/dialer/speeddial/res \
- $(BASE_DIR)/dialer/theme/res \
- $(BASE_DIR)/dialer/util/res \
- $(BASE_DIR)/dialer/voicemailstatus/res \
- $(BASE_DIR)/dialer/widget/res \
- $(BASE_DIR)/incallui/answer/impl/affordance/res \
- $(BASE_DIR)/incallui/answer/impl/answermethod/res \
- $(BASE_DIR)/incallui/answer/impl/hint/res \
- $(BASE_DIR)/incallui/answer/impl/res \
- $(BASE_DIR)/incallui/audioroute/res \
- $(BASE_DIR)/incallui/autoresizetext/res \
- $(BASE_DIR)/incallui/calllocation/impl/res \
- $(BASE_DIR)/incallui/commontheme/res \
- $(BASE_DIR)/incallui/contactgrid/res \
- $(BASE_DIR)/incallui/disconnectdialog/res \
- $(BASE_DIR)/incallui/hold/res \
- $(BASE_DIR)/incallui/incall/impl/res \
- $(BASE_DIR)/incallui/res \
- $(BASE_DIR)/incallui/sessiondata/res \
- $(BASE_DIR)/incallui/speakerbuttonlogic/res \
- $(BASE_DIR)/incallui/telecomeventui/res \
- $(BASE_DIR)/incallui/video/impl/res \
- $(BASE_DIR)/incallui/video/protocol/res \
- $(BASE_DIR)/voicemail/impl/configui/res \
- $(BASE_DIR)/voicemail/impl/res \
+EXCLUDE_RESOURCE_DIRECTORIES := \
+ java/com/android/incallui/maps/impl/res \
+# All Dialers resources.
+RES_DIRS := $(call all-subdir-named-dirs,res,.)
+RES_DIRS := $(filter-out $(EXCLUDE_RESOURCE_DIRECTORIES),$(RES_DIRS))
+
+EXCLUDE_MANIFESTS := \
+ $(BASE_DIR)/dialer/binary/aosp/testing/AndroidManifest.xml \
+ $(BASE_DIR)/dialer/binary/google/AndroidManifest.xml \
+ $(BASE_DIR)/incallui/calllocation/impl/AndroidManifest.xml \
+ $(BASE_DIR)/incallui/maps/impl/AndroidManifest.xml \
# Dialer manifest files to merge.
-# 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 \
- $(BASE_DIR)/dialer/backup/AndroidManifest.xml \
- $(BASE_DIR)/dialer/blocking/AndroidManifest.xml \
- $(BASE_DIR)/dialer/callcomposer/AndroidManifest.xml \
- $(BASE_DIR)/dialer/callcomposer/camera/AndroidManifest.xml \
- $(BASE_DIR)/dialer/callcomposer/camera/camerafocus/AndroidManifest.xml \
- $(BASE_DIR)/dialer/callcomposer/cameraui/AndroidManifest.xml \
- $(BASE_DIR)/dialer/calldetails/AndroidManifest.xml \
- $(BASE_DIR)/dialer/calllog/ui/AndroidManifest.xml \
- $(BASE_DIR)/dialer/calllogutils/AndroidManifest.xml \
- $(BASE_DIR)/dialer/common/AndroidManifest.xml \
- $(BASE_DIR)/dialer/contactactions/AndroidManifest.xml \
- $(BASE_DIR)/dialer/contactsfragment/AndroidManifest.xml \
- $(BASE_DIR)/dialer/dialpadview/AndroidManifest.xml \
- $(BASE_DIR)/dialer/enrichedcall/simulator/AndroidManifest.xml \
- $(BASE_DIR)/dialer/interactions/AndroidManifest.xml \
- $(BASE_DIR)/dialer/main/impl/AndroidManifest.xml \
- $(BASE_DIR)/dialer/notification/AndroidManifest.xml \
- $(BASE_DIR)/dialer/oem/AndroidManifest.xml \
- $(BASE_DIR)/dialer/phonenumberutil/AndroidManifest.xml \
- $(BASE_DIR)/dialer/postcall/AndroidManifest.xml \
- $(BASE_DIR)/dialer/searchfragment/common/AndroidManifest.xml \
- $(BASE_DIR)/dialer/searchfragment/list/AndroidManifest.xml \
- $(BASE_DIR)/dialer/searchfragment/nearbyplaces/AndroidManifest.xml \
- $(BASE_DIR)/dialershared/bubble/AndroidManifest.xml \
- $(BASE_DIR)/dialer/shortcuts/AndroidManifest.xml \
- $(BASE_DIR)/dialer/simulator/impl/AndroidManifest.xml \
- $(BASE_DIR)/dialer/speeddial/AndroidManifest.xml \
- $(BASE_DIR)/dialer/theme/AndroidManifest.xml \
- $(BASE_DIR)/dialer/util/AndroidManifest.xml \
- $(BASE_DIR)/dialer/voicemailstatus/AndroidManifest.xml \
- $(BASE_DIR)/dialer/widget/AndroidManifest.xml \
- $(BASE_DIR)/incallui/AndroidManifest.xml \
- $(BASE_DIR)/incallui/answer/impl/affordance/AndroidManifest.xml \
- $(BASE_DIR)/incallui/answer/impl/AndroidManifest.xml \
- $(BASE_DIR)/incallui/answer/impl/answermethod/AndroidManifest.xml \
- $(BASE_DIR)/incallui/answer/impl/hint/AndroidManifest.xml \
- $(BASE_DIR)/incallui/audioroute/AndroidManifest.xml \
- $(BASE_DIR)/incallui/autoresizetext/AndroidManifest.xml \
- $(BASE_DIR)/incallui/commontheme/AndroidManifest.xml \
- $(BASE_DIR)/incallui/contactgrid/AndroidManifest.xml \
- $(BASE_DIR)/incallui/disconnectdialog/AndroidManifest.xml \
- $(BASE_DIR)/incallui/hold/AndroidManifest.xml \
- $(BASE_DIR)/incallui/incall/impl/AndroidManifest.xml \
- $(BASE_DIR)/incallui/sessiondata/AndroidManifest.xml \
- $(BASE_DIR)/incallui/speakerbuttonlogic/AndroidManifest.xml \
- $(BASE_DIR)/incallui/telecomeventui/AndroidManifest.xml \
- $(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \
- $(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \
- $(BASE_DIR)/voicemail/AndroidManifest.xml \
- $(BASE_DIR)/voicemail/impl/configui/AndroidManifest.xml \
- $(BASE_DIR)/voicemail/impl/AndroidManifest.xml \
-
+DIALER_MANIFEST_FILES := $(call all-named-files-under,AndroidManifest.xml,.)
+DIALER_MANIFEST_FILES := $(filter-out $(EXCLUDE_MANIFESTS),$(DIALER_MANIFEST_FILES))
# Merge all manifest files.
LOCAL_FULL_LIBS_MANIFEST_FILES := \
$(addprefix $(LOCAL_PATH)/, $(DIALER_MANIFEST_FILES))
+
+# * b/62875795 include manually generated GRPC service class:
+ifeq ($(HOST_OS),linux)
+ define gen-dialer-grpc
+ $(shell cd $(LOCAL_PATH) ; \
+ ../../../prebuilts/tools/linux-x86_64/protoc/bin/protoc --plugin=protoc-gen-grpc-java=../../../prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
+ --grpc-java_out=lite:"java/com/android/voicemail/impl/" \
+ --proto_path="java/com/android/voicemail/impl/transcribe/grpc/" "java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto")
+ endef
+endif
+ifeq ($(HOST_OS),darwin)
+ define gen-dialer-grpc
+ $(shell cd $(LOCAL_PATH) ; \
+ ../../../prebuilts/tools/darwin-x86_64/protoc/bin/protoc --plugin=protoc-gen-grpc-java=../../../prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-osx-x86_64.exe \
+ --grpc-java_out=lite:"java/com/android/voicemail/impl/" \
+ --proto_path="java/com/android/voicemail/impl/transcribe/grpc/" "java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto")
+ endef
+endif
+
+$(call gen-dialer-grpc)
+
LOCAL_SRC_FILES := $(call all-java-files-under, $(SRC_DIRS))
LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_FILES),$(LOCAL_SRC_FILES))
+# * b/62875795 include manually generated GRPC service class:
+LOCAL_SRC_FILES += java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
LOCAL_SRC_FILES += $(call all-proto-files-under, $(SRC_DIRS))
+
+# Backup Library
+BACKUP_LIB_SRC_DIR := ../../../external/libbackup/src/com/google/android/libraries/backup
+EXCLUDE_BACKUP_LIB_SRCS := $(call all-java-files-under, $(BACKUP_LIB_SRC_DIR)/shadow)
+LOCAL_SRC_FILES += $(call all-java-files-under, $(BACKUP_LIB_SRC_DIR))
+LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_BACKUP_LIB_SRCS),$(LOCAL_SRC_FILES))
+
LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
-LOCAL_RESOURCE_DIR := \
- $(addprefix $(LOCAL_PATH)/, $(RES_DIRS)) \
- $(support_library_root_dir)/design/res \
- $(support_library_root_dir)/transition/res \
- $(support_library_root_dir)/v7/appcompat/res \
- $(support_library_root_dir)/v7/cardview/res \
- $(support_library_root_dir)/v7/recyclerview/res
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(RES_DIRS))
+
+define all-dialer-manifest-extra-packages
+ $(shell cd $(LOCAL_PATH) ; \
+ find . -type f -name "AndroidManifest.xml" | uniq | sort | cut -c 8- | rev | cut -c 21- | rev | sed 's/\//./g')
+endef
+
+EXCLUDE_EXTRA_PACKAGES := \
+ com.android.dialer.binary.aosp.testing \
+ com.android.dialer.binary.google \
+ com.android.incallui.calllocation.impl \
+ com.android.incallui.maps.impl \
# We specify each package explicitly to glob resource files.
-LOCAL_AAPT_FLAGS := \
+LOCAL_AAPT_FLAGS := $(call all-dialer-manifest-extra-packages)
+LOCAL_AAPT_FLAGS := $(filter-out $(EXCLUDE_EXTRA_PACKAGES),$(LOCAL_AAPT_FLAGS))
+LOCAL_AAPT_FLAGS := $(addprefix --extra-packages , $(LOCAL_AAPT_FLAGS))
+LOCAL_AAPT_FLAGS += \
--auto-add-overlay \
- --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 \
- --extra-packages com.android.dialer.callcomposer \
- --extra-packages com.android.dialer.callcomposer \
- --extra-packages com.android.dialer.callcomposer.camera \
- --extra-packages com.android.dialer.callcomposer.camera.camerafocus \
- --extra-packages com.android.dialer.callcomposer.cameraui \
- --extra-packages com.android.dialer.calldetails \
- --extra-packages com.android.dialer.calllog.ui \
- --extra-packages com.android.dialer.calllogutils \
- --extra-packages com.android.dialer.common \
- --extra-packages com.android.dialer.contactactions \
- --extra-packages com.android.dialer.contactsfragment \
- --extra-packages com.android.dialer.dialpadview \
- --extra-packages com.android.dialer.enrichedcall.simulator \
- --extra-packages com.android.dialer.interactions \
- --extra-packages com.android.dialer.main.impl \
- --extra-packages com.android.dialer.notification \
- --extra-packages com.android.dialer.oem \
- --extra-packages com.android.dialer.phonenumberutil \
- --extra-packages com.android.dialer.postcall \
- --extra-packages com.android.dialer.searchfragment.common \
- --extra-packages com.android.dialer.searchfragment.list \
- --extra-packages com.android.dialer.searchfragment.nearbyplaces \
- --extra-packages com.android.dialershared.bubble \
- --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 \
- --extra-packages com.android.incallui \
- --extra-packages com.android.incallui.answer.impl \
- --extra-packages com.android.incallui.answer.impl.affordance \
- --extra-packages com.android.incallui.answer.impl.affordance \
- --extra-packages com.android.incallui.answer.impl.answermethod \
- --extra-packages com.android.incallui.answer.impl.hint \
- --extra-packages com.android.incallui.audioroute \
- --extra-packages com.android.incallui.autoresizetext \
- --extra-packages com.android.incallui.calllocation \
- --extra-packages com.android.incallui.calllocation.impl \
- --extra-packages com.android.incallui.commontheme \
- --extra-packages com.android.incallui.contactgrid \
- --extra-packages com.android.incallui.disconnectdialog \
- --extra-packages com.android.incallui.hold \
- --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.speakerbuttonlogic \
- --extra-packages com.android.incallui.telecomeventui \
- --extra-packages com.android.incallui.video \
- --extra-packages com.android.incallui.video.impl \
- --extra-packages com.android.phone.common \
- --extra-packages com.android.voicemail \
- --extra-packages com.android.voicemail.impl.configui \
- --extra-packages com.android.voicemail.impl \
- --extra-packages com.android.voicemail.impl.fetch \
- --extra-packages com.android.voicemail.impl.settings \
- --extra-packages com.android.voicemail.settings \
--extra-packages me.leolin.shortcutbadger \
-
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-dynamic-animation \
@@ -276,12 +136,12 @@
dialer-disklrucache-target \
dialer-gifdecoder-target \
dialer-glide-target \
- dialer-grpc-all-target \
- dialer-grpc-context-target \
- dialer-grpc-core-target \
+ dialer-grpc-all-target \
+ dialer-grpc-context-target \
+ dialer-grpc-core-target \
dialer-grpc-okhttp-target \
dialer-grpc-protobuf-lite-target \
- dialer-grpc-stub-target \
+ dialer-grpc-stub-target \
dialer-guava-target \
dialer-javax-annotation-api-target \
dialer-javax-inject-target \
@@ -290,10 +150,10 @@
dialer-mime4j-dom-target \
jsr305 \
libphonenumber \
- okhttp \
volley \
LOCAL_STATIC_ANDROID_LIBRARIES := \
+ android-support-core-ui \
android-support-design \
android-support-transition \
android-support-v13 \
@@ -331,13 +191,14 @@
LOCAL_PROGUARD_ENABLED := disabled
ifdef LOCAL_JACK_ENABLED
+
+define all-dialer-proguard-flags
+ $(shell cd $(LOCAL_PATH) ; \
+ find . -type f -name "proguard.*flags" | uniq | sort | cut -c 3-)
+endef
+
# Proguard includes
-LOCAL_PROGUARD_FLAG_FILES := \
- java/com/android/dialer/common/proguard.flags \
- java/com/android/dialer/proguard/proguard_base.flags \
- java/com/android/dialer/proguard/proguard.flags \
- java/com/android/dialer/proguard/proguard_release.flags \
- java/com/android/incallui/answer/impl/proguard.flags
+LOCAL_PROGUARD_FLAG_FILES := $(call all-dialer-proguard-flags)
LOCAL_PROGUARD_ENABLED := custom
LOCAL_PROGUARD_ENABLED += optimization
@@ -365,6 +226,10 @@
DIALER_MANIFEST_FILES :=
PROCESSOR_LIBRARIES_TARGET :=
PROCESSOR_JARS :=
+EXCLUDE_MANIFESTS :=
+EXCLUDE_EXTRA_PACKAGES :=
+BACKUP_LIB_SRC_DIR :=
+EXCLUDE_BACKUP_LIB_SRCS :=
# Create references to prebuilt libraries.
include $(CLEAR_VARS)
@@ -557,4 +422,4 @@
include $(BUILD_PREBUILT)
-include $(CLEAR_VARS)
\ No newline at end of file
+include $(CLEAR_VARS)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 5420ec0..ca18feb 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
coreApp="true"
package="com.android.dialer"
- android:versionCode="150000"
- android:versionName="11.0">
+ android:versionCode="160000"
+ android:versionName="12.0">
<uses-sdk
android:minSdkVersion="23"
@@ -103,17 +103,12 @@
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
<application
- android:backupAgent='com.android.dialer.backup.DialerBackupAgent'
- android:fullBackupOnly="true"
- android:restoreAnyVersion="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher_phone"
android:label="@string/applicationLabel"
android:name="com.android.dialer.binary.aosp.AospDialerApplication"
android:supportsRtl="true"
android:usesCleartextTraffic="false">
-
-
</application>
</manifest>
diff --git a/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
new file mode 100644
index 0000000..bea0d5c
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?attr/colorControlNormal">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/>
+</vector>
diff --git a/java/com/android/contacts/common/Bindings.java b/java/com/android/contacts/common/Bindings.java
deleted file mode 100644
index 29cf795..0000000
--- a/java/com/android/contacts/common/Bindings.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common;
-
-import android.content.Context;
-import com.android.contacts.common.bindings.ContactsCommonBindings;
-import com.android.contacts.common.bindings.ContactsCommonBindingsFactory;
-import com.android.contacts.common.bindings.ContactsCommonBindingsStub;
-import java.util.Objects;
-
-/** Accessor for the contacts common bindings. */
-public class Bindings {
-
- private static ContactsCommonBindings instance;
-
- private Bindings() {}
-
- public static ContactsCommonBindings get(Context context) {
- Objects.requireNonNull(context);
- if (instance != null) {
- return instance;
- }
-
- Context application = context.getApplicationContext();
- if (application instanceof ContactsCommonBindingsFactory) {
- instance = ((ContactsCommonBindingsFactory) application).newContactsCommonBindings();
- }
-
- if (instance == null) {
- instance = new ContactsCommonBindingsStub();
- }
- return instance;
- }
-
- public static void setForTesting(ContactsCommonBindings testInstance) {
- instance = testInstance;
- }
-}
diff --git a/java/com/android/contacts/common/bindings/ContactsCommonBindings.java b/java/com/android/contacts/common/bindings/ContactsCommonBindings.java
deleted file mode 100644
index 44be53b..0000000
--- a/java/com/android/contacts/common/bindings/ContactsCommonBindings.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.contacts.common.bindings;
-
-import android.support.annotation.Nullable;
-
-/** Allows the container application to customize the contacts common library. */
-public interface ContactsCommonBindings {
-
- /** Builds a user agent string for the current application. */
- @Nullable
- String getUserAgent();
-}
diff --git a/java/com/android/contacts/common/bindings/ContactsCommonBindingsFactory.java b/java/com/android/contacts/common/bindings/ContactsCommonBindingsFactory.java
deleted file mode 100644
index 8958ad9..0000000
--- a/java/com/android/contacts/common/bindings/ContactsCommonBindingsFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.contacts.common.bindings;
-
-/**
- * This interface should be implementated by the Application subclass. It allows the contacts common
- * module to get references to the ContactsCommonBindings.
- */
-public interface ContactsCommonBindingsFactory {
-
- ContactsCommonBindings newContactsCommonBindings();
-}
diff --git a/java/com/android/contacts/common/bindings/ContactsCommonBindingsStub.java b/java/com/android/contacts/common/bindings/ContactsCommonBindingsStub.java
deleted file mode 100644
index f2e21b1..0000000
--- a/java/com/android/contacts/common/bindings/ContactsCommonBindingsStub.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.contacts.common.bindings;
-
-import android.support.annotation.Nullable;
-
-/** Default implementation for contacts common bindings. */
-public class ContactsCommonBindingsStub implements ContactsCommonBindings {
-
- @Override
- @Nullable
- public String getUserAgent() {
- return null;
- }
-}
diff --git a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
index 2d77dc7..172fb11 100644
--- a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
+++ b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
@@ -23,7 +23,7 @@
/** Compatibility class for {@link android.telecom.TelecomManager}. */
public class TelecomManagerCompat {
- // TODO: remove once this is available in android.telecom.Call
+ // TODO(mdooley): remove once this is available in android.telecom.Call
// b/33779976
public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS =
"android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
@@ -37,7 +37,7 @@
// This is a hidden constant in android.telecom.DisconnectCause. Telecom sets this as a disconnect
// reason if it wants us to prompt the user that the video call is not available.
- // TODO: Reference it to constant in android.telecom.DisconnectCause.
+ // TODO(wangqi): Reference it to constant in android.telecom.DisconnectCause.
public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
/**
diff --git a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
index d5e6135..5d10720 100644
--- a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
+++ b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -20,6 +20,9 @@
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* An {@AsyncQueryHandler} that will never return a null cursor.
@@ -27,6 +30,8 @@
* <p>Instead, will return a {@link Cursor} with 0 records.
*/
public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
+ private static final AtomicInteger pendingQueryCount = new AtomicInteger();
+ @Nullable private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
super(cr);
@@ -41,6 +46,11 @@
String selection,
String[] selectionArgs,
String orderBy) {
+ pendingQueryCount.getAndIncrement();
+ if (pendingQueryCountChangedListener != null) {
+ pendingQueryCountChangedListener.onPendingQueryCountChanged();
+ }
+
final CookieWithProjection projectionCookie = new CookieWithProjection(cookie, projection);
super.startQuery(token, projectionCookie, uri, projection, selection, selectionArgs, orderBy);
}
@@ -55,10 +65,31 @@
cursor = new EmptyCursor(projectionCookie.projection);
}
onNotNullableQueryComplete(token, projectionCookie.originalCookie, cursor);
+
+ pendingQueryCount.getAndDecrement();
+ if (pendingQueryCountChangedListener != null) {
+ pendingQueryCountChangedListener.onPendingQueryCountChanged();
+ }
}
protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static void setPendingQueryCountChangedListener(
+ @Nullable PendingQueryCountChangedListener listener) {
+ pendingQueryCountChangedListener = listener;
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static int getPendingQueryCount() {
+ return pendingQueryCount.get();
+ }
+
+ /** Callback to listen for changes in the number of queries that have not completed. */
+ public interface PendingQueryCountChangedListener {
+ void onPendingQueryCountChanged();
+ }
+
/** Class to add projection to an existing cookie. */
private static class CookieWithProjection {
diff --git a/java/com/android/contacts/common/dialog/CallSubjectDialog.java b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
index 88fac02..5c2ae2f 100644
--- a/java/com/android/contacts/common/dialog/CallSubjectDialog.java
+++ b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
@@ -43,13 +43,13 @@
import android.widget.ListView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.R;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.animation.AnimUtils;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.util.ViewUtil;
import java.nio.charset.Charset;
import java.util.ArrayList;
diff --git a/java/com/android/contacts/common/list/ContactEntryListAdapter.java b/java/com/android/contacts/common/list/ContactEntryListAdapter.java
index 7335297..117825d 100644
--- a/java/com/android/contacts/common/list/ContactEntryListAdapter.java
+++ b/java/com/android/contacts/common/list/ContactEntryListAdapter.java
@@ -32,8 +32,6 @@
import android.widget.QuickContactBadge;
import android.widget.SectionIndexer;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.R;
import com.android.contacts.common.compat.DirectoryCompat;
@@ -41,6 +39,8 @@
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import java.util.HashSet;
diff --git a/java/com/android/contacts/common/list/ContactEntryListFragment.java b/java/com/android/contacts/common/list/ContactEntryListFragment.java
index 04658be..94551a8 100644
--- a/java/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/java/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -43,10 +43,10 @@
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.android.common.widget.CompositeCursorAdapter.Partition;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.ContactListViewUtils;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.performancereport.PerformanceReport;
import java.lang.ref.WeakReference;
import java.util.Locale;
diff --git a/java/com/android/contacts/common/list/ContactListAdapter.java b/java/com/android/contacts/common/list/ContactListAdapter.java
index 6cd3118..721609d 100644
--- a/java/com/android/contacts/common/list/ContactListAdapter.java
+++ b/java/com/android/contacts/common/list/ContactListAdapter.java
@@ -23,9 +23,9 @@
import android.provider.ContactsContract.Directory;
import android.provider.ContactsContract.SearchSnippets;
import android.view.ViewGroup;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.R;
import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
/**
* A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type. Also
diff --git a/java/com/android/contacts/common/list/ContactTileView.java b/java/com/android/contacts/common/list/ContactTileView.java
index 15582d6..4635641 100644
--- a/java/com/android/contacts/common/list/ContactTileView.java
+++ b/java/com/android/contacts/common/list/ContactTileView.java
@@ -23,13 +23,13 @@
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.R;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
/** A ContactTile displays a contact's picture and name */
public abstract class ContactTileView extends FrameLayout {
diff --git a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
index ae15eb2..71d9dad 100644
--- a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -31,25 +31,25 @@
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.R;
import com.android.contacts.common.compat.CallableCompat;
import com.android.contacts.common.compat.DirectoryCompat;
import com.android.contacts.common.compat.PhoneCompat;
import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.list.ContactListItemView.CallToAction;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.Constants;
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.enrichedcall.EnrichedCallManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.lightbringer.LightbringerComponent;
-import com.android.dialer.location.GeoUtil;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.util.CallUtil;
import java.util.ArrayList;
import java.util.Arrays;
@@ -381,7 +381,7 @@
text = phoneLabel;
} else {
final String phoneNumber = cursor.getString(PhoneQuery.PHONE_NUMBER);
- text = GeoUtil.getGeocodedLocationFor(mContext, phoneNumber);
+ text = PhoneNumberHelper.getGeoDescription(mContext, phoneNumber);
}
}
view.setPhoneNumber(text);
@@ -407,7 +407,7 @@
if (action == ContactListItemView.NONE) {
EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager();
EnrichedCallCapabilities capabilities = manager.getCapabilities(number);
- if (capabilities != null && capabilities.supportsCallComposer()) {
+ if (capabilities != null && capabilities.isCallComposerCapable()) {
action = ContactListItemView.CALL_AND_SHARE;
} else if (capabilities == null
&& getQueryString() != null
diff --git a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
index de7903e..2ab1217 100644
--- a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
+++ b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
@@ -278,7 +278,7 @@
@MainThread
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
Assert.isMainThread();
- // TODO: define and verify behavior for "Nearby places", corp directories,
+ // TODO(strongarm): define and verify behavior for "Nearby places", corp directories,
// and dividers listed in UI between these categories
if (mCursorReranker != null
&& data != null
@@ -353,7 +353,7 @@
if (view.getCallToAction() != ContactListItemView.NONE
|| view.getPhoneNumber() == null
|| manager.getCapabilities(view.getPhoneNumber()) == null
- || !manager.getCapabilities(view.getPhoneNumber()).supportsCallComposer()) {
+ || !manager.getCapabilities(view.getPhoneNumber()).isCallComposerCapable()) {
continue;
}
view.setCallToAction(ContactListItemView.CALL_AND_SHARE, listener, view.getPosition());
diff --git a/java/com/android/contacts/common/model/ContactLoader.java b/java/com/android/contacts/common/model/ContactLoader.java
index 7ef3b73..d2c7577 100644
--- a/java/com/android/contacts/common/model/ContactLoader.java
+++ b/java/com/android/contacts/common/model/ContactLoader.java
@@ -44,10 +44,10 @@
import com.android.contacts.common.model.dataitem.PhotoDataItem;
import com.android.contacts.common.util.Constants;
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.android.dialer.util.UriUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -731,6 +731,7 @@
intent.setClassName(servicePackageName, serviceName);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(uri, RawContacts.CONTENT_ITEM_TYPE);
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
try {
context.startService(intent);
} catch (Exception e) {
diff --git a/java/com/android/contacts/common/preference/ContactsPreferences.java b/java/com/android/contacts/common/preference/ContactsPreferences.java
index 7f0d99a..2bdf5c8 100644
--- a/java/com/android/contacts/common/preference/ContactsPreferences.java
+++ b/java/com/android/contacts/common/preference/ContactsPreferences.java
@@ -27,6 +27,7 @@
import android.text.TextUtils;
import com.android.contacts.common.R;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.dialer.strictmode.DialerStrictMode;
/** Manages user preferences for contacts. */
public class ContactsPreferences implements OnSharedPreferenceChangeListener {
@@ -77,11 +78,11 @@
maybeMigrateSystemSettings();
}
- public boolean isSortOrderUserChangeable() {
+ private boolean isSortOrderUserChangeable() {
return mContext.getResources().getBoolean(R.bool.config_sort_order_user_changeable);
}
- public int getDefaultSortOrder() {
+ private int getDefaultSortOrder() {
if (mContext.getResources().getBoolean(R.bool.config_default_sort_order_primary)) {
return SORT_ORDER_PRIMARY;
} else {
@@ -103,14 +104,14 @@
mSortOrder = sortOrder;
final Editor editor = mPreferences.edit();
editor.putInt(SORT_ORDER_KEY, sortOrder);
- editor.commit();
+ DialerStrictMode.bypass(editor::commit);
}
- public boolean isDisplayOrderUserChangeable() {
+ private boolean isDisplayOrderUserChangeable() {
return mContext.getResources().getBoolean(R.bool.config_display_order_user_changeable);
}
- public int getDefaultDisplayOrder() {
+ private int getDefaultDisplayOrder() {
if (mContext.getResources().getBoolean(R.bool.config_default_display_order_primary)) {
return DISPLAY_ORDER_PRIMARY;
} else {
@@ -132,14 +133,14 @@
mDisplayOrder = displayOrder;
final Editor editor = mPreferences.edit();
editor.putInt(DISPLAY_ORDER_KEY, displayOrder);
- editor.commit();
+ DialerStrictMode.bypass(editor::commit);
}
- public boolean isDefaultAccountUserChangeable() {
+ private boolean isDefaultAccountUserChangeable() {
return mContext.getResources().getBoolean(R.bool.config_default_account_user_changeable);
}
- public String getDefaultAccount() {
+ private String getDefaultAccount() {
if (!isDefaultAccountUserChangeable()) {
return mDefaultAccount;
}
@@ -153,7 +154,7 @@
return mDefaultAccount;
}
- public void setDefaultAccount(AccountWithDataSet accountWithDataSet) {
+ private void setDefaultAccount(AccountWithDataSet accountWithDataSet) {
mDefaultAccount = accountWithDataSet == null ? null : accountWithDataSet.name;
final Editor editor = mPreferences.edit();
if (TextUtils.isEmpty(mDefaultAccount)) {
@@ -162,7 +163,7 @@
editor.putString(mDefaultAccountKey, accountWithDataSet.stringify());
}
editor.putBoolean(mDefaultAccountSavedKey, true);
- editor.commit();
+ DialerStrictMode.bypass(editor::commit);
}
public void registerChangeListener(ChangeListener listener) {
diff --git a/java/com/android/contacts/common/res/drawable/ic_work_profile.xml b/java/com/android/contacts/common/res/drawable/ic_work_profile.xml
index fc21100..4452885 100644
--- a/java/com/android/contacts/common/res/drawable/ic_work_profile.xml
+++ b/java/com/android/contacts/common/res/drawable/ic_work_profile.xml
@@ -1,16 +1,26 @@
-<?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.
+-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="16dp"
- android:viewportHeight="48"
- android:viewportWidth="48"
- android:width="16dp">
+ android:width="16dp"
+ android:height="16dp"
+ android:viewportWidth="16.0"
+ android:viewportHeight="16.0">
- <path
- android:fillColor="#757575"
- android:pathData="M28 33h-8v-3H6v8c0 2.2 1.8 4 4 4h28c2.2 0 4-1.8
-4-4v-8H28v3zm12-21h-7V9l-3-3H18l-3 3.1V12H8c-2.2 0-4 1.8-4 4v8c0 2.2 1.8 4 4
-4h12v-3h8v3h12c2.2 0 4-1.8 4-4v-8c0-2.2-1.8-4-4-4zm-10 0H18V9h12v3z"/>
- <path
- android:pathData="M0 0h48v48H0z"/>
+ <path
+ android:pathData="M13.33,4h-2.67V2.67c0,-0.74 -0.59,-1.33 -1.33,-1.33H6.67c-0.74,0 -1.33,0.59 -1.33,1.33V4H2.67C1.93,4 1.34,4.59 1.34,5.33l-0.01,7.33c0,0.74 0.59,1.33 1.33,1.33h10.67c0.74,0 1.33,-0.59 1.33,-1.33V5.33C14.67,4.59 14.07,4 13.33,4zM8,10c-0.73,0 -1.33,-0.6 -1.33,-1.33S7.27,7.33 8,7.33s1.33,0.6 1.33,1.33S8.73,10 8,10zM9.33,4H6.67V2.67h2.67V4z"
+ android:fillColor="#757575"/>
</vector>
diff --git a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
index 842ac87..122d0fe 100644
--- a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
@@ -64,7 +64,7 @@
<string name="sms_mms" msgid="5187888900503248542">"傳送短訊至 MMS 電話號碼"</string>
<string name="sms_by_shortcut" msgid="8005496406639963582">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (訊息)"</string>
<string name="clearFrequentsConfirmation_title" msgid="7465690215775790243">"清除常用聯絡人?"</string>
- <string name="clearFrequentsConfirmation" msgid="5750611450893399198">"您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單,並強制電子郵件應用程式重新取得您的寄件偏好設定。"</string>
+ <string name="clearFrequentsConfirmation" msgid="5750611450893399198">"您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單,並強制電子郵件應用程式重新取得您的寄件喜好設定。"</string>
<string name="clearFrequentsProgress_title" msgid="2057183487226039454">"正在清除常用聯絡人…"</string>
<string name="status_available" msgid="2648156525685472626">"在線"</string>
<string name="status_away" msgid="2298688367552893953">"離開"</string>
diff --git a/java/com/android/contacts/common/res/values/colors.xml b/java/com/android/contacts/common/res/values/colors.xml
index 434d193..ca87341 100644
--- a/java/com/android/contacts/common/res/values/colors.xml
+++ b/java/com/android/contacts/common/res/values/colors.xml
@@ -20,8 +20,6 @@
<color name="focus_color">#44ff0000</color>
- <color name="spam_contact_background">#A52714</color>
-
<!-- Color of ripples used for views with dark backgrounds -->
<color name="dialer_ripple_material_dark">#a0ffffff</color>
@@ -59,24 +57,6 @@
<color name="textColorIconOverlay">#fff</color>
<color name="textColorIconOverlayShadow">#000</color>
-
- <array name="letter_tile_colors">
- <item>#DB4437</item>
- <item>#E91E63</item>
- <item>#9C27B0</item>
- <item>#673AB7</item>
- <item>#3F51B5</item>
- <item>#4285F4</item>
- <item>#039BE5</item>
- <item>#0097A7</item>
- <item>#009688</item>
- <item>#0F9D58</item>
- <item>#689F38</item>
- <item>#EF6C00</item>
- <item>#FF5722</item>
- <item>#757575</item>
- </array>
-
<!-- Darker versions of letter_tile_colors, two shades darker. These colors are used
for settings secondary activity colors. -->
<array name="letter_tile_colors_dark">
@@ -103,11 +83,6 @@
this is Blue Grey 700 -->
<color name="quickcontact_default_photo_tint_color_dark">#455A64</color>
-
- <color name="letter_tile_default_color">#cccccc</color>
-
- <color name="letter_tile_font_color">#ffffff</color>
-
<color name="contactscommon_actionbar_background_color">@color/dialer_theme_color</color>
<!-- Color for icons in the actionbar -->
<color name="actionbar_icon_color">#ffffff</color>
diff --git a/java/com/android/contacts/common/res/values/dimens.xml b/java/com/android/contacts/common/res/values/dimens.xml
index 26f095f..74e1547 100644
--- a/java/com/android/contacts/common/res/values/dimens.xml
+++ b/java/com/android/contacts/common/res/values/dimens.xml
@@ -83,12 +83,6 @@
<dimen name="contact_phone_list_empty_description_size">20sp</dimen>
<dimen name="contact_phone_list_empty_description_padding">10dip</dimen>
- <!-- Dimensions for contact letter tiles -->
- <dimen name="tile_letter_font_size">40dp</dimen>
- <dimen name="tile_letter_font_size_small">20dp</dimen>
- <dimen name="tile_divider_width">1dp</dimen>
- <item name="letter_to_tile_ratio" type="dimen">67%</item>
-
<!-- Height of the floating action button -->
<dimen name="floating_action_button_height">56dp</dimen>
<!-- Width of the floating action button -->
diff --git a/java/com/android/contacts/common/res/values/strings.xml b/java/com/android/contacts/common/res/values/strings.xml
index 85866f7..f83f16b 100644
--- a/java/com/android/contacts/common/res/values/strings.xml
+++ b/java/com/android/contacts/common/res/values/strings.xml
@@ -182,13 +182,6 @@
<item quantity="other"><xliff:g id="count">%d</xliff:g> found</item>
</plurals>
- <!-- String describing the text for photo of a contact in a contacts list.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_quick_contact_for">Quick contact for <xliff:g id="name">%1$s</xliff:g></string>
-
<!-- Shown as the display name for a person when the name is missing or unknown. [CHAR LIMIT=18]-->
<string name="missing_name">(No name)</string>
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
old mode 100644
new mode 100755
diff --git a/java/com/android/dialer/about/res/raw/third_party_licenses b/java/com/android/dialer/about/res/raw/third_party_licenses
old mode 100644
new mode 100755
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index b6025d3..7e62065 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -287,7 +287,7 @@
}
mSearchQuery = newText;
- // TODO: show p13n when newText is empty.
+ // TODO(calderwoodra): show p13n when newText is empty.
// Show search fragment only when the query string is changed to non-empty text.
if (!TextUtils.isEmpty(newText)) {
// Call enterSearchUi only if we are switching search modes, or showing a search
@@ -598,7 +598,7 @@
new P13nRefreshCompleteListener() {
@Override
public void onP13nRefreshComplete() {
- // TODO: make zero-query search results visible
+ // TODO(strongarm): make zero-query search results visible
}
});
Trace.endSection();
@@ -678,6 +678,7 @@
mListsFragment.addOnPageChangeListener(this);
} else if (fragment instanceof NewSearchFragment) {
mNewSearchFragment = (NewSearchFragment) fragment;
+ updateSearchFragmentPosition();
}
if (fragment instanceof SearchFragment) {
final SearchFragment searchFragment = (SearchFragment) fragment;
@@ -854,7 +855,7 @@
Assert.isNotNull(mListsFragment.getView()).animate().alpha(0).withLayer();
- //adjust the title, so the user will know where we're at when the activity start/resumes.
+ // adjust the title, so the user will know where we're at when the activity start/resumes.
setTitle(R.string.launcherDialpadActivityLabel);
}
@@ -916,7 +917,7 @@
exitSearchUi();
}
}
- //reset the title to normal.
+ // reset the title to normal.
setTitle(R.string.launcherActivityLabel);
}
@@ -951,6 +952,12 @@
// available immediately which is required to update position. By forcing an animation,
// position will be updated after a delay by when the dialpad height would be available.
fragment.updatePosition(true /* animate */);
+ } else if (mNewSearchFragment != null) {
+ int animationDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
+ int shadowHeight = getResources().getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
+ int start = isDialpadShown() ? mActionBarHeight - shadowHeight : 0;
+ int end = isDialpadShown() ? 0 : mActionBarHeight - shadowHeight;
+ mNewSearchFragment.animatePosition(start, end, animationDuration);
}
}
@@ -1171,7 +1178,7 @@
}
transaction.add(R.id.dialtacts_frame, fragment, tag);
} else {
- // TODO: if this is a transition from dialpad to searchbar, animate fragment
+ // TODO(calderwoodra): if this is a transition from dialpad to searchbar, animate fragment
// down, and vice versa. Perhaps just add a coordinator behavior with the search bar.
transaction.show(fragment);
}
@@ -1184,7 +1191,7 @@
((SearchFragment) fragment)
.setShowEmptyListForNullQuery(mP13nRanker.shouldShowEmptyListForNullQuery());
} else {
- // TODO: add p13n ranker to new search.
+ // TODO(calderwoodra): add p13n ranker to new search.
}
if (!smartDialSearch && !useNewSearch) {
diff --git a/java/com/android/dialer/app/SpecialCharSequenceMgr.java b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
index 20222d6..fd67f47 100644
--- a/java/com/android/dialer/app/SpecialCharSequenceMgr.java
+++ b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
@@ -39,7 +39,6 @@
import android.widget.EditText;
import android.widget.Toast;
import com.android.common.io.MoreCloseables;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
@@ -47,6 +46,7 @@
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.telecom.TelecomUtil;
import java.util.ArrayList;
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index 35e05bc..c9e655d 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -32,10 +32,8 @@
import com.android.contacts.common.list.ViewPagerTabs;
import com.android.dialer.app.DialtactsActivity;
import com.android.dialer.app.R;
-import com.android.dialer.app.calllog.ClearCallLogDialog.Listener;
import com.android.dialer.calldetails.CallDetailsActivity;
import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.logging.UiAction;
@@ -46,7 +44,7 @@
/** Activity for viewing call history. */
public class CallLogActivity extends TransactionSafeActivity
- implements ViewPager.OnPageChangeListener, Listener {
+ implements ViewPager.OnPageChangeListener {
private static final int TAB_INDEX_ALL = 0;
private static final int TAB_INDEX_MISSED = 1;
@@ -148,7 +146,7 @@
startActivity(intent);
return true;
} else if (item.getItemId() == R.id.delete_all) {
- ClearCallLogDialog.show(getFragmentManager(), this);
+ ClearCallLogDialog.show(getFragmentManager());
return true;
}
return super.onOptionsItemSelected(item);
@@ -184,15 +182,6 @@
}
@Override
- public void callHistoryDeleted() {
- if (EnrichedCallComponent.get(this).getEnrichedCallManager().hasStoredData()) {
- Snackbar.make(
- findViewById(R.id.calllog_frame), getString(R.string.multiple_ec_data_deleted), 5_000)
- .show();
- }
- }
-
- @Override
public void onBackPressed() {
PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
super.onBackPressed();
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index e0cd170..5fcf59b 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -344,10 +344,30 @@
// If enriched call capabilities were unknown on the initial load,
// viewHolder.isCallComposerCapable may be unset. Check here if we have the capabilities
// as a last attempt at getting them before showing the expanded view to the user
- EnrichedCallCapabilities capabilities =
- getEnrichedCallManager().getCapabilities(viewHolder.number);
- viewHolder.isCallComposerCapable =
- capabilities != null && capabilities.supportsCallComposer();
+ EnrichedCallCapabilities capabilities = null;
+
+ if (viewHolder.number != null) {
+ capabilities = getEnrichedCallManager().getCapabilities(viewHolder.number);
+ }
+
+ if (capabilities == null) {
+ capabilities = EnrichedCallCapabilities.NO_CAPABILITIES;
+ }
+
+ viewHolder.isCallComposerCapable = capabilities.isCallComposerCapable();
+
+ if (capabilities.isTemporarilyUnavailable()) {
+ LogUtil.i(
+ "mExpandCollapseListener.onClick",
+ "%s is temporarily unavailable, requesting capabilities",
+ LogUtil.sanitizePhoneNumber(viewHolder.number));
+ // Refresh the capabilities when temporarily unavailable, see go/ec-temp-unavailable.
+ // Similarly to when we request capabilities the first time, the 'Share and call' button
+ // won't pop in with the new capabilities. Instead the row needs to be collapsed and
+ // expanded again.
+ getEnrichedCallManager().requestCapabilities(viewHolder.number);
+ }
+
generateAndMapNewCallDetailsEntriesHistoryResults(
viewHolder.number,
viewHolder.getDetailedPhoneDetails(),
@@ -454,7 +474,7 @@
* Holds a list of URIs that are pending deletion or undo. If the activity ends before the undo
* timeout, all of the pending URIs will be deleted.
*
- * <p>TODO: move this and OnVoicemailDeletedListener to somewhere like {@link
+ * <p>TODO(twyen): move this and OnVoicemailDeletedListener to somewhere like {@link
* VisualVoicemailCallLogFragment}. The CallLogAdapter does not need to know about what to do with
* hidden item or what to hide.
*/
@@ -879,7 +899,7 @@
getEnrichedCallManager().requestCapabilities(number);
return false;
}
- return capabilities.supportsCallComposer();
+ return capabilities.isCallComposerCapable();
}
@NonNull
@@ -977,7 +997,7 @@
}
@MainThread
- private static CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
+ private CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
Assert.isMainThread();
int position = cursor.getPosition();
CallDetailsEntries.Builder entries = CallDetailsEntries.newBuilder();
@@ -990,6 +1010,16 @@
.setDate(cursor.getLong(CallLogQuery.DATE))
.setDuration(cursor.getLong(CallLogQuery.DURATION))
.setFeatures(cursor.getInt(CallLogQuery.FEATURES));
+
+ String phoneAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
+ if (getLightbringer().getPhoneAccountComponentName() != null
+ && getLightbringer()
+ .getPhoneAccountComponentName()
+ .flattenToString()
+ .equals(phoneAccountComponentName)) {
+ entry.setIsLightbringerCall(true);
+ }
+
entries.addEntries(entry.build());
cursor.moveToNext();
}
diff --git a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
index b1ad0d9..78ec7a6 100644
--- a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
+++ b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
@@ -66,9 +66,8 @@
.update(voicemailUri, values, Voicemails.IS_READ + " = 0", null)
> 0) {
uploadVoicemailLocalChangesToServer(context);
+ CallLogNotificationsService.markAllNewVoicemailsAsOld(context);
}
-
- CallLogNotificationsService.markAllNewVoicemailsAsOld(context);
return null;
}
});
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index a4a2ba2..f7ea63c 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -50,12 +50,8 @@
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;
import com.android.contacts.common.dialog.CallSubjectDialog;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType;
-import com.android.contacts.common.util.UriUtils;
import com.android.dialer.app.DialtactsActivity;
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
@@ -73,8 +69,11 @@
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.dialercontact.SimDetails;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerComponent;
import com.android.dialer.logging.ContactSource;
@@ -91,6 +90,7 @@
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.CallUtil;
import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.UriUtils;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -164,7 +164,7 @@
* The callable phone number for the current call log entry. Cached here as the call back intent
* is set only when the actions ViewStub is inflated.
*/
- public String number;
+ @Nullable public String number;
/** The post-dial numbers that are dialed following the phone number. */
public String postDialDigits;
/** The formatted phone number to display. */
@@ -584,8 +584,12 @@
return;
}
+ TextView callTypeOrLocationView =
+ ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
if (canPlaceCallToNumber) {
callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number));
+ callTypeOrLocationView.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) {
@@ -594,13 +598,10 @@
TextUtils.expandTemplate(
mContext.getString(R.string.call_log_action_call),
nameOrNumber == null ? "" : nameOrNumber));
- TextView callTypeOrLocationView =
- ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
if (callType == Calls.VOICEMAIL_TYPE && !TextUtils.isEmpty(callTypeOrLocation)) {
callTypeOrLocationView.setText(callTypeOrLocation);
callTypeOrLocationView.setVisibility(View.VISIBLE);
- } else {
- callTypeOrLocationView.setVisibility(View.GONE);
}
callButtonView.setVisibility(View.VISIBLE);
}
@@ -929,7 +930,9 @@
contact.setNameOrNumber((String) nameOrNumber);
}
contact.setContactType(getContactType());
- contact.setNumber(number);
+ if (number != null) {
+ contact.setNumber(number);
+ }
/* second line of contact view. */
if (!TextUtils.isEmpty(info.name)) {
contact.setDisplayNumber(displayNumber);
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
index be1ebfb..0490b99 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
@@ -24,7 +24,13 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.support.annotation.WorkerThread;
+import android.telecom.PhoneAccountHandle;
+import com.android.dialer.app.voicemail.LegacyVoicemailNotificationReceiver;
+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.DialerExecutorComponent;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.PermissionsUtil;
@@ -44,7 +50,8 @@
*/
public class CallLogNotificationsService extends IntentService {
- private static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
+ @VisibleForTesting
+ static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
"com.android.dialer.calllog.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD";
private static final String ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD =
@@ -64,6 +71,10 @@
public static final String ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION =
"com.android.dialer.calllog.CALL_BACK_FROM_MISSED_CALL_NOTIFICATION";
+ /** Action mark legacy voicemail as dismissed. */
+ public static final String ACTION_LEGACY_VOICEMAIL_DISMISSED =
+ "com.android.dialer.calllog.ACTION_LEGACY_VOICEMAIL_DISMISSED";
+
/**
* Extra to be included with {@link #ACTION_INCOMING_POST_CALL} to represent a post call note.
*
@@ -79,6 +90,8 @@
*/
private static final String EXTRA_POST_CALL_NUMBER = "POST_CALL_NUMBER";
+ private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "PHONE_ACCOUNT_HANDLE";
+
public static final int UNKNOWN_MISSED_CALL_COUNT = -1;
public CallLogNotificationsService() {
@@ -108,6 +121,15 @@
context.startService(serviceIntent);
}
+ public static void cancelAllMissedCalls(Context context) {
+ LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCalls");
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new CancelAllMissedCallsWorker())
+ .build()
+ .executeSerial(context);
+ }
+
public static PendingIntent createMarkAllNewVoicemailsAsOldIntent(@NonNull Context context) {
Intent intent = new Intent(context, CallLogNotificationsService.class);
intent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD);
@@ -122,13 +144,6 @@
return PendingIntent.getService(context, 0, intent, 0);
}
- public static void cancelAllMissedCalls(@NonNull Context context) {
- LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCalls");
- Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
- context.startService(serviceIntent);
- }
-
public static PendingIntent createCancelAllMissedCallsPendingIntent(@NonNull Context context) {
Intent intent = new Intent(context, CallLogNotificationsService.class);
intent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
@@ -143,6 +158,14 @@
return PendingIntent.getService(context, 0, intent, 0);
}
+ public static PendingIntent createLegacyVoicemailDismissedPendingIntent(
+ @NonNull Context context, PhoneAccountHandle phoneAccountHandle) {
+ Intent intent = new Intent(context, CallLogNotificationsService.class);
+ intent.setAction(ACTION_LEGACY_VOICEMAIL_DISMISSED);
+ intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+ return PendingIntent.getService(context, 0, intent, 0);
+ }
+
@Override
protected void onHandleIntent(Intent intent) {
if (intent == null) {
@@ -168,15 +191,17 @@
VoicemailQueryHandler.markSingleNewVoicemailAsRead(this, voicemailUri);
VisualVoicemailNotifier.cancelSingleVoicemailNotification(this, voicemailUri);
break;
+ case ACTION_LEGACY_VOICEMAIL_DISMISSED:
+ LegacyVoicemailNotificationReceiver.setDismissed(
+ this, intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE), true);
+ break;
case ACTION_INCOMING_POST_CALL:
String note = intent.getStringExtra(EXTRA_POST_CALL_NOTE);
String phoneNumber = intent.getStringExtra(EXTRA_POST_CALL_NUMBER);
MissedCallNotifier.getIstance(this).insertPostCallNotification(phoneNumber, note);
break;
case ACTION_CANCEL_ALL_MISSED_CALLS:
- CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(this);
- MissedCallNotifier.cancelAllMissedCallNotifications(this);
- TelecomUtil.cancelMissedCallsNotification(this);
+ cancelAllMissedCalls(this);
break;
case ACTION_CANCEL_SINGLE_MISSED_CALL:
Uri callUri = intent.getData();
@@ -196,4 +221,26 @@
break;
}
}
+
+ @WorkerThread
+ private static void cancelAllMissedCallsBackground(Context context) {
+ LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCallsBackground");
+ Assert.isWorkerThread();
+ CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(context);
+ MissedCallNotifier.cancelAllMissedCallNotifications(context);
+ TelecomUtil.cancelMissedCallsNotification(context);
+ }
+
+ /** Worker that cancels all missed call notifications and updates call log entries. */
+ private static class CancelAllMissedCallsWorker implements Worker<Context, Void> {
+
+ @Nullable
+ @Override
+ public Void doInBackground(@Nullable Context context) throws Throwable {
+ if (context != null) {
+ cancelAllMissedCallsBackground(context);
+ }
+ return null;
+ }
+ }
}
diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
index 5c3d4d9..b16eb1b 100644
--- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
+++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
@@ -22,76 +22,63 @@
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.app.ProgressDialog;
-import android.content.ContentResolver;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
-import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.design.widget.Snackbar;
import com.android.dialer.app.R;
import com.android.dialer.common.Assert;
+import com.android.dialer.common.concurrent.DialerExecutor;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
/** Dialog that clears the call log after confirming with the user */
public class ClearCallLogDialog extends DialogFragment {
- private Listener listener;
+ private DialerExecutor<Void> clearCallLogTask;
+ private ProgressDialog progressDialog;
/** Preferred way to show this dialog */
- public static void show(FragmentManager fragmentManager, @NonNull Listener listener) {
+ public static void show(FragmentManager fragmentManager) {
ClearCallLogDialog dialog = new ClearCallLogDialog();
- dialog.listener = Assert.isNotNull(listener);
dialog.show(fragmentManager, "deleteCallLog");
}
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ clearCallLogTask =
+ DialerExecutorComponent.get(getContext())
+ .dialerExecutorFactory()
+ .createUiTaskBuilder(
+ getFragmentManager(),
+ "clearCallLogTask",
+ new ClearCallLogWorker(getActivity().getApplicationContext()))
+ .onSuccess(this::onSuccess)
+ .build();
+ }
+
+ @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- final ContentResolver resolver = getActivity().getContentResolver();
- final Context context = getActivity().getApplicationContext();
- final OnClickListener okListener =
- new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- final ProgressDialog progressDialog =
- ProgressDialog.show(
- getActivity(), getString(R.string.clearCallLogProgress_title), "", true, false);
- progressDialog.setOwnerActivity(getActivity());
- CallLogNotificationsService.cancelAllMissedCalls(getContext());
- final AsyncTask<Void, Void, Void> task =
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- resolver.delete(Calls.CONTENT_URI, null, null);
- CachedNumberLookupService cachedNumberLookupService =
- PhoneNumberCache.get(context).getCachedNumberLookupService();
- if (cachedNumberLookupService != null) {
- cachedNumberLookupService.clearAllCacheEntries(context);
- }
- return null;
- }
+ OnClickListener okListener =
+ (dialog, which) -> {
+ progressDialog =
+ ProgressDialog.show(
+ getActivity(), getString(R.string.clearCallLogProgress_title), "", true, false);
+ progressDialog.setOwnerActivity(getActivity());
+ CallLogNotificationsService.cancelAllMissedCalls(getContext());
- @Override
- protected void onPostExecute(Void result) {
- final Activity activity = progressDialog.getOwnerActivity();
+ // TODO: Once we have the API, we should configure this ProgressDialog
+ // to only show up after a certain time (e.g. 150ms)
+ progressDialog.show();
- if (activity == null || activity.isDestroyed() || activity.isFinishing()) {
- return;
- }
-
- listener.callHistoryDeleted();
- if (progressDialog != null && progressDialog.isShowing()) {
- progressDialog.dismiss();
- }
- }
- };
- // TODO: Once we have the API, we should configure this ProgressDialog
- // to only show up after a certain time (e.g. 150ms)
- progressDialog.show();
- task.execute();
- }
+ clearCallLogTask.executeSerial(null);
};
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.clearCallLogConfirmation_title)
@@ -103,7 +90,48 @@
.create();
}
- interface Listener {
- void callHistoryDeleted();
+ private static class ClearCallLogWorker implements Worker<Void, Void> {
+ private final Context appContext;
+
+ private ClearCallLogWorker(Context appContext) {
+ this.appContext = appContext;
+ }
+
+ @Nullable
+ @Override
+ public Void doInBackground(@Nullable Void unused) throws Throwable {
+ appContext.getContentResolver().delete(Calls.CONTENT_URI, null, null);
+ CachedNumberLookupService cachedNumberLookupService =
+ PhoneNumberCache.get(appContext).getCachedNumberLookupService();
+ if (cachedNumberLookupService != null) {
+ cachedNumberLookupService.clearAllCacheEntries(appContext);
+ }
+ return null;
+ }
+ }
+
+ private void onSuccess(Void unused) {
+ Assert.isNotNull(progressDialog);
+ Activity activity = progressDialog.getOwnerActivity();
+
+ if (activity == null || activity.isDestroyed() || activity.isFinishing()) {
+ return;
+ }
+
+ maybeShowEnrichedCallSnackbar(activity);
+
+ if (progressDialog != null && progressDialog.isShowing()) {
+ progressDialog.dismiss();
+ }
+ }
+
+ private void maybeShowEnrichedCallSnackbar(Activity activity) {
+ if (EnrichedCallComponent.get(activity).getEnrichedCallManager().hasStoredData()) {
+ Snackbar.make(
+ activity.findViewById(R.id.calllog_frame),
+ getString(R.string.multiple_ec_data_deleted),
+ 5_000)
+ .show();
+ }
}
}
diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
index 428c716..c64e03e 100644
--- a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
@@ -122,7 +122,10 @@
.setSound(pinnedTelephonyManager.getVoicemailRingtoneUri(handle))
.setOngoing(isOngoing)
.setOnlyAlertOnce(isRefresh)
- .setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+ .setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle))
+ .setDeleteIntent(
+ CallLogNotificationsService.createLegacyVoicemailDismissedPendingIntent(
+ context, handle));
if (pinnedTelephonyManager.isVoicemailVibrationEnabled(handle)) {
builder.setDefaults(Notification.DEFAULT_VIBRATE);
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
deleted file mode 100644
index 2424b6d..0000000
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2013 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.app.calllog.calllogcache;
-
-import android.content.Context;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import com.android.dialer.calllogutils.PhoneAccountUtils;
-import com.android.dialer.telecom.TelecomUtil;
-import java.util.Map;
-
-/**
- * This is the CallLogCache for versions of dialer Lollipop Mr1 and above with support for multi-SIM
- * devices.
- *
- * <p>This class should not be initialized directly and instead be acquired from {@link
- * CallLogCache#getCallLogCache}.
- */
-class CallLogCacheLollipopMr1 extends CallLogCache {
-
- private final Map<PhoneAccountHandle, String> mPhoneAccountLabelCache = new ArrayMap<>();
- private final Map<PhoneAccountHandle, Integer> mPhoneAccountColorCache = new ArrayMap<>();
- private final Map<PhoneAccountHandle, Boolean> mPhoneAccountCallWithNoteCache = new ArrayMap<>();
-
- /* package */ CallLogCacheLollipopMr1(Context context) {
- super(context);
- }
-
- @Override
- public void reset() {
- mPhoneAccountLabelCache.clear();
- mPhoneAccountColorCache.clear();
- mPhoneAccountCallWithNoteCache.clear();
-
- super.reset();
- }
-
- @Override
- public boolean isVoicemailNumber(
- PhoneAccountHandle accountHandle, @Nullable CharSequence number) {
- if (TextUtils.isEmpty(number)) {
- return false;
- }
- return TelecomUtil.isVoicemailNumber(mContext, accountHandle, number.toString());
- }
-
- @Override
- public String getAccountLabel(PhoneAccountHandle accountHandle) {
- if (mPhoneAccountLabelCache.containsKey(accountHandle)) {
- return mPhoneAccountLabelCache.get(accountHandle);
- } else {
- String label = PhoneAccountUtils.getAccountLabel(mContext, accountHandle);
- mPhoneAccountLabelCache.put(accountHandle, label);
- return label;
- }
- }
-
- @Override
- public int getAccountColor(PhoneAccountHandle accountHandle) {
- if (mPhoneAccountColorCache.containsKey(accountHandle)) {
- return mPhoneAccountColorCache.get(accountHandle);
- } else {
- Integer color = PhoneAccountUtils.getAccountColor(mContext, accountHandle);
- mPhoneAccountColorCache.put(accountHandle, color);
- return color;
- }
- }
-
- @Override
- public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
- if (mPhoneAccountCallWithNoteCache.containsKey(accountHandle)) {
- return mPhoneAccountCallWithNoteCache.get(accountHandle);
- } else {
- Boolean supportsCallWithNote =
- PhoneAccountUtils.getAccountSupportsCallSubject(mContext, accountHandle);
- mPhoneAccountCallWithNoteCache.put(accountHandle, supportsCallWithNote);
- return supportsCallWithNote;
- }
- }
-}
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index 82fc229..155a6a2 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -163,7 +163,7 @@
if (request.isLocalRequest()) {
info = mContactInfoHelper.lookupNumber(request.number, request.countryIso);
if (info != null && !info.contactExists) {
- // TODO: Maybe skip look up if it's already available in cached number lookup
+ // TODO(wangqi): Maybe skip look up if it's already available in cached number lookup
// service.
long start = SystemClock.elapsedRealtime();
mContactInfoHelper.updateFromCequintCallerId(mCequintCallerIdManager, info, request.number);
diff --git a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
index 4c8e32a..537acd0 100644
--- a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
+++ b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
@@ -25,10 +25,10 @@
import android.support.annotation.VisibleForTesting;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.app.R;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
index dbd4e86..ca12e43 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
@@ -20,9 +20,9 @@
import android.database.Cursor;
import android.telephony.PhoneNumberUtils;
import android.view.View;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.dialer.app.R;
import com.android.dialer.blocking.BlockNumberDialogFragment;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.logging.InteractionEvent;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
index f53a458..db119ab 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
@@ -31,7 +31,6 @@
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.app.R;
import com.android.dialer.blocking.BlockedNumbersMigrator;
import com.android.dialer.blocking.BlockedNumbersMigrator.Listener;
@@ -40,6 +39,7 @@
import com.android.dialer.blocking.FilteredNumbersUtil.CheckForSendToVoicemailContactListener;
import com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
import com.android.dialer.database.FilteredNumberContract;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
public class BlockedNumbersFragment extends ListFragment
diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
index d98395e..6e1d1a5 100644
--- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
@@ -26,15 +26,15 @@
import android.widget.QuickContactBadge;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.util.UriUtils;
import com.android.dialer.app.R;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.util.UriUtils;
public class NumbersAdapter extends SimpleCursorAdapter {
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
index 313efb4..1e90eec 100644
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
@@ -19,9 +19,9 @@
import android.content.Context;
import android.database.Cursor;
import android.view.View;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.dialer.app.R;
import com.android.dialer.blocking.FilteredNumbersUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 05d017b..afc7c13 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -45,13 +45,13 @@
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.ListView;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactTileLoaderFactory;
import com.android.contacts.common.list.ContactTileView;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.dialer.app.R;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.ViewUtil;
import com.android.dialer.widget.EmptyContentView;
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
index 30870eb..88a6dff 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
@@ -18,20 +18,23 @@
import android.content.ClipData;
import android.content.Context;
+import android.net.Uri;
import android.provider.ContactsContract.PinnedPositions;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.MoreContactUtils;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.list.ContactEntry;
import com.android.contacts.common.list.ContactTileView;
+import com.android.contacts.common.model.ContactLoader;
import com.android.dialer.app.R;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.callintent.SpeedDialContactType;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
@@ -94,11 +97,11 @@
isPinned = (entry.pinned != PinnedPositions.UNPINNED);
isStarred = entry.isFavorite;
if (entry != null) {
+ sendViewNotification(getContext(), entry.lookupUri);
// Grab the phone-number to call directly. See {@link onClick()}.
mPhoneNumberString = entry.phoneNumber;
- // If this is a blank entry, don't show anything.
- // TODO krelease: Just hide the view for now. For this to truly look like an empty row
+ // If this is a blank entry, don't show anything. For this to truly look like an empty row
// the entire ContactTileRow needs to be hidden.
if (entry == ContactEntry.BLANK_ENTRY) {
setVisibility(View.INVISIBLE);
@@ -186,4 +189,22 @@
public void setPosition(int position) {
this.position = position;
}
+
+ /**
+ * Send a notification using a {@link ContactLoader} to inform the sync adapter that we are
+ * viewing a particular contact, so that it can download the high-res photo.
+ */
+ private static void sendViewNotification(Context context, Uri contactUri) {
+ ContactLoader loader = new ContactLoader(context, contactUri, true /* postViewNotification */);
+ loader.registerListener(
+ 0,
+ (loader1, contact) -> {
+ try {
+ loader1.reset();
+ } catch (RuntimeException e) {
+ LogUtil.e("PhoneFavoriteTileView.onLoadComplete", "error resetting loader", e);
+ }
+ });
+ loader.startLoading();
+ }
}
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
index dbd601a..cd5712e 100644
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
@@ -34,13 +34,13 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactTileLoaderFactory;
import com.android.contacts.common.list.ContactEntry;
import com.android.contacts.common.list.ContactTileView;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.dialer.app.R;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerComponent;
import com.android.dialer.logging.InteractionEvent;
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/java/com/android/dialer/app/res/layout/call_log_activity.xml b/java/com/android/dialer/app/res/layout/call_log_activity.xml
index 4e2b188..a5e5326 100644
--- a/java/com/android/dialer/app/res/layout/call_log_activity.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_activity.xml
@@ -15,26 +15,27 @@
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/calllog_frame"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
+ android:id="@+id/calllog_frame"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/background_dialer_light"
+ android:orientation="vertical">
<com.android.contacts.common.list.ViewPagerTabs
- android:id="@+id/viewpager_header"
- style="@style/DialtactsActionBarTabTextStyle"
- android:layout_width="match_parent"
- android:layout_height="@dimen/tab_height"
- android:layout_gravity="top"
- android:elevation="@dimen/tab_elevation"
- android:orientation="horizontal"
- android:textAllCaps="true"/>
+ android:id="@+id/viewpager_header"
+ style="@style/DialtactsActionBarTabTextStyle"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/tab_height"
+ android:layout_gravity="top"
+ android:elevation="@dimen/tab_elevation"
+ android:orientation="horizontal"
+ android:textAllCaps="true"/>
<android.support.v4.view.ViewPager
- android:id="@+id/call_log_pager"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
+ android:id="@+id/call_log_pager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"/>
<RelativeLayout
- android:id="@+id/floating_action_button_container"
- android:layout_width="0dp"
- android:layout_height="0dp"/>
+ android:id="@+id/floating_action_button_container"
+ android:layout_width="0dp"
+ android:layout_height="0dp"/>
</LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/call_log_fragment.xml b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
index bbfe4e3..efc08fb 100644
--- a/java/com/android/dialer/app/res/layout/call_log_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
@@ -18,7 +18,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/background_dialer_call_log"
android:orientation="vertical">
<LinearLayout
@@ -37,6 +36,7 @@
android:paddingLeft="@dimen/select_all_icon_padding"
android:paddingRight="@dimen/select_all_icon_padding"
android:gravity="center_vertical"
+ android:contentDescription="@string/select_all"
android:src="@drawable/ic_empty_check_mark_white_24dp"/>
<TextView
android:id="@+id/select_all_view_text"
@@ -64,7 +64,6 @@
android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"
android:paddingStart="@dimen/call_log_horizontal_margin"
android:paddingEnd="@dimen/call_log_horizontal_margin"
- android:background="@color/background_dialer_call_log"
android:clipToPadding="false"/>
<com.android.dialer.widget.EmptyContentView
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index 5046383..ec9e5a0 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -35,8 +35,7 @@
<LinearLayout
android:id="@+id/call_action"
- style="@style/CallLogActionStyle"
- android:paddingTop="@dimen/call_log_actions_top_padding">
+ style="@style/CallLogActionStyle">
<ImageView
style="@style/CallLogActionIconStyle"
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 fb00ce4..9d8914c 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -100,7 +100,7 @@
<string name="description_video_call" msgid="3738199365585751727">"Videopoziv."</string>
<string name="description_send_text_message" msgid="8450269896765568596">"Pošalji SMS kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="2258821530650350303">"Nepreslušana govorna pošta"</string>
- <string name="description_start_voice_search" msgid="8380022725973015261">"Pokreni glasovno pretraživanje"</string>
+ <string name="description_start_voice_search" msgid="8380022725973015261">"Pokreni glasovnu pretragu"</string>
<string name="menu_callNumber" msgid="1540773545517152514">"Pozovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
@@ -127,7 +127,7 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Učitavanje sa SIM kartice…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakti sa SIM kartice"</string>
- <string name="voice_search_not_available" msgid="6546240433719732905">"Glasovno pretraživanje nije dostupno"</string>
+ <string name="voice_search_not_available" msgid="6546240433719732905">"Glasovna pretraga nije dostupna"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nije moguće uputiti poziv jer je aplikacija Telefon onemogućena."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Traži kontakte"</string>
<string name="block_number_search_hint" msgid="5377706079015099416">"Dodajte broj ili tražite kontakte"</string>
@@ -157,7 +157,7 @@
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj u favorite"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Dodirnite sliku da vidite sve brojeve ili dodirnite i držite da promijenite raspored."</string>
<string name="remove_contact" msgid="2353580570488923668">"Ukloni"</string>
- <string name="select_all" msgid="408601760696146245">"Odaberi sve"</string>
+ <string name="select_all" msgid="408601760696146245">"Izaberi sve"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videopoziv"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Pošalji poruku"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalji o pozivu"</string>
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 aabe678..81fd5dd 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -88,7 +88,7 @@
<string name="actionIncomingCall" msgid="891346596090030558">"Indgående opkald"</string>
<string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Massehandlingstilstanden startes"</string>
<string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Massehandlingstilstanden blev afsluttet"</string>
- <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Valgt <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Vælg <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Fravalgt <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Afspil telefonsvarerbesked"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Vis kontaktpersonen <xliff:g id="NAME">%1$s</xliff:g>"</string>
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 8f43ba7..ca3d522 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -236,6 +236,6 @@
<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>
<string name="about_phone_label" msgid="582991354677973731">"Rreth"</string>
<string name="view_conversation" msgid="7895904782094119702">"Shiko"</string>
- <string name="ec_data_deleted" msgid="4794880345545827107">"Telefonata u fshi. Shiko dhe fshi bashkëngjitjet e ndara gjatë kësaj telefonate te Messages."</string>
- <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"Telefonatat u fshinë. Shiko dhe fshi bashkëngjitjet e ndara gjatë telefonatave te Messages."</string>
+ <string name="ec_data_deleted" msgid="4794880345545827107">"Telefonata u fshi. Shiko dhe fshi bashkëngjitjet e ndara gjatë kësaj telefonate te \"Mesazhet\"."</string>
+ <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"Telefonatat u fshinë. Shiko dhe fshi bashkëngjitjet e ndara gjatë telefonatave te \"Mesazhet\"."</string>
</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 f713f4c..2b6a3eb 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -236,6 +236,6 @@
<string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> آف لائن ہے اور اس تک پہنچا نہیں جا سکتا"</string>
<string name="about_phone_label" msgid="582991354677973731">"تفصیل"</string>
<string name="view_conversation" msgid="7895904782094119702">"دیکھیں"</string>
- <string name="ec_data_deleted" msgid="4794880345545827107">"کال حذف ہو گئی۔ اس کال کے دوران اشتراک کردہ منسلکہ جات کو \'پیغامات \' میں ملاحظہ کریں اور حذف کریں۔"</string>
- <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"کالیں حذف ہو گئیں۔ کالوں کے دوران اشتراک کردہ منسلکہ جات کو \'پیغامات \' میں ملاحظہ کریں اور حذف کریں۔"</string>
+ <string name="ec_data_deleted" msgid="4794880345545827107">"کال حذف ہو گئی۔ اس کال کے دوران پیغامات کے اندر اشتراک کردہ منسلکہ جات ملاحظہ کریں اور حذف کریں۔"</string>
+ <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"کالیں حذف ہو گئیں۔ کالوں کے دوران پیغامات کے اندر اشتراک کردہ منسلکہ جات ملاحظہ کریں اور حذف کریں۔"</string>
</resources>
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index 2f6d87b..7a08dca 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -54,7 +54,6 @@
<!-- Background color for search results and call details -->
<color name="background_dialer_results">#f9f9f9</color>
- <color name="background_dialer_call_log">@color/background_dialer_light</color>
<!-- Color of the 1dp divider that separates favorites -->
<color name="favorite_contacts_separator_color">#d0d0d0</color>
diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
index 6036c85..6010f92 100644
--- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java
+++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
@@ -31,11 +31,11 @@
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;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.proguard.UsedByReflection;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.VoicemailComponent;
diff --git a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
index 4100521..a81d866 100644
--- a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
+++ b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
@@ -23,15 +23,15 @@
import android.content.Intent;
import android.os.Build;
import android.os.Build.VERSION_CODES;
-import android.preference.PreferenceManager;
+import android.support.annotation.VisibleForTesting;
import android.support.v4.os.BuildCompat;
-import android.support.v4.os.UserManagerCompat;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
import com.android.dialer.app.calllog.LegacyVoicemailNotifier;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.PerAccountSharedPreferences;
+import com.android.dialer.util.DialerUtils;
import com.android.voicemail.VoicemailComponent;
/**
@@ -43,15 +43,14 @@
public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
private static final String LEGACY_VOICEMAIL_COUNT = "legacy_voicemail_count";
+ @VisibleForTesting static final String LEGACY_VOICEMAIL_DISMISSED = "legacy_voicemail_dismissed";
/**
- * Hidden extra for {@link TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION} for whether the
- * notification is just a refresh or for a new voicemail. The phone should not play a ringtone or
- * vibrate during a refresh if the notification is already showing.
- *
- * <p>TODO(b/62202833): make public
+ * Whether the notification is just a refresh or for a new voicemail. The phone should not play a
+ * ringtone or vibrate during a refresh if the notification is already showing. This is Hidden in
+ * O and public in O MR1.
*/
- private static final String EXTRA_IS_REFRESH = "is_refresh";
+ @VisibleForTesting static final String EXTRA_IS_REFRESH = "is_refresh";
@Override
public void onReceive(Context context, Intent intent) {
@@ -72,8 +71,21 @@
PhoneAccountHandle phoneAccountHandle =
Assert.isNotNull(intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE));
int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, -1);
+ boolean isRefresh = intent.getBooleanExtra(EXTRA_IS_REFRESH, false);
+ LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "isRefresh: " + isRefresh);
+ PerAccountSharedPreferences preferences = getSharedPreferences(context, phoneAccountHandle);
+ if (isRefresh) {
+ if (preferences.getBoolean(LEGACY_VOICEMAIL_DISMISSED, false)) {
+ LogUtil.i(
+ "LegacyVoicemailNotificationReceiver.onReceive",
+ "notification dismissed, ignoring refresh");
+ return;
+ }
+ } else {
+ setDismissed(context, phoneAccountHandle, false);
+ }
- if (!hasVoicemailCountChanged(context, phoneAccountHandle, count)) {
+ if (!hasVoicemailCountChanged(preferences, count)) {
LogUtil.i(
"LegacyVoicemailNotificationReceiver.onReceive",
"voicemail count hasn't changed, ignoring");
@@ -116,27 +128,24 @@
voicemailNumber,
callVoicemailIntent,
voicemailSettingIntent,
- intent.getBooleanExtra(EXTRA_IS_REFRESH, false));
+ isRefresh);
+ }
+
+ public static void setDismissed(
+ Context context, PhoneAccountHandle phoneAccountHandle, boolean dismissed) {
+ getSharedPreferences(context, phoneAccountHandle)
+ .edit()
+ .putBoolean(LEGACY_VOICEMAIL_DISMISSED, dismissed)
+ .apply();
}
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;
- }
-
+ PerAccountSharedPreferences preferences, int newCount) {
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;
@@ -144,4 +153,13 @@
preferences.edit().putInt(LEGACY_VOICEMAIL_COUNT, newCount).apply();
return true;
}
+
+ @VisibleForTesting
+ static PerAccountSharedPreferences getSharedPreferences(
+ Context context, PhoneAccountHandle phoneAccountHandle) {
+ return new PerAccountSharedPreferences(
+ context,
+ phoneAccountHandle,
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context));
+ }
}
diff --git a/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java b/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
index 8d70cdb..d3c3820 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
@@ -86,6 +86,7 @@
if (newIsPluggedIn) {
newRoute = CallAudioState.ROUTE_WIRED_HEADSET;
} else {
+ mVoicemailPlaybackPresenter.pausePlayback();
if (mWasSpeakerOn) {
newRoute = CallAudioState.ROUTE_SPEAKER;
} else {
diff --git a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
index a0bae36..bc6ffb5 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
@@ -92,7 +92,7 @@
}
}
alertItem.updateStatus(statuses, this);
- // TODO: b/30668323 support error from multiple sources.
+ // TODO(twyen): b/30668323 support error from multiple sources.
return;
}
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
index f160e02..9c1e446 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
@@ -85,7 +85,7 @@
// When the undo button is pressed, the viewHolder we have is no longer valid because when
// we hide the view it is binded to something else, and the layout is not updated for
// hidden items. copy the adapter position so we can update the view upon undo.
- // TODO: refactor this so the view holder will always be valid.
+ // TODO(twyen): refactor this so the view holder will always be valid.
final int adapterPosition = mViewHolder.getAdapterPosition();
mPresenter.pausePlayback();
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java b/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
index 3a169e4..fa637f3 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
@@ -24,9 +24,9 @@
import android.provider.VoicemailContract.Status;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
index e3dc0b0..865d252 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
@@ -31,9 +31,9 @@
import android.text.style.StyleSpan;
import android.view.View;
import android.view.View.OnClickListener;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
import com.android.dialer.app.voicemail.error.VoicemailErrorMessage.Action;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
@@ -75,7 +75,7 @@
@Nullable
VoicemailErrorMessage maybeCreateTosMessage() {
- // TODO: add filtering based on carrier
+ // TODO(mdooley): add filtering based on carrier
if (hasAcceptedTos()) {
return null;
}
diff --git a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
index e639eff..d3024f4 100644
--- a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
@@ -259,7 +259,7 @@
@NonNull
private static CharSequence getCustomerSupportString(Context context, int id) {
- // TODO: get number based on the country the user is currently in.
+ // TODO(twyen): get number based on the country the user is currently in.
return ContactDisplayUtils.getTtsSpannedPhoneNumber(
context.getResources(),
id,
diff --git a/java/com/android/dialer/backup/AndroidManifest.xml b/java/com/android/dialer/backup/AndroidManifest.xml
index 1cbbe53..84992c0 100644
--- a/java/com/android/dialer/backup/AndroidManifest.xml
+++ b/java/com/android/dialer/backup/AndroidManifest.xml
@@ -1,5 +1,5 @@
<!--
- ~ Copyright (C) 2016 The Android Open Source Project
+ ~ 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.
@@ -13,14 +13,13 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<manifest
- xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.dialer.backup">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dialer.backup">
- <application
- android:backupAgent="com.android.dialer.backup.DialerBackupAgent"
- android:fullBackupOnly="true"
- android:restoreAnyVersion="true"
- />
-</manifest>
+ <!-- Android backup service key -->
+ <!-- https://developer.android.com/google/backup/signup.html -->
+ <meta-data
+ android:name="com.google.android.backup.api_key"
+ android:value="AEdPqrEAAAAIn3-Y3JKit1mrzfvcdbVhUiJn2ICtKfhGYLy0Bg"/>
+</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/backup/DialerBackupAgent.java b/java/com/android/dialer/backup/DialerBackupAgent.java
deleted file mode 100644
index a0baf39..0000000
--- a/java/com/android/dialer/backup/DialerBackupAgent.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.backup;
-
-import android.annotation.TargetApi;
-import android.app.backup.BackupAgent;
-import android.app.backup.BackupDataInput;
-import android.app.backup.BackupDataOutput;
-import android.app.backup.FullBackupDataOutput;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.os.ParcelFileDescriptor;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.telecom.PhoneAccountHandle;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.telecom.TelecomUtil;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * The Dialer backup agent to backup voicemails, and files under files, shared prefs and databases
- */
-public class DialerBackupAgent extends BackupAgent {
- // File names suffix for backup/restore.
- private static final String VOICEMAIL_BACKUP_FILE_SUFFIX = "_voicemail_backup.proto";
- // File name formats for backup. It looks like 000000_voicemail_backup.proto, 0000001...
- private static final String VOICEMAIL_BACKUP_FILE_FORMAT = "%06d" + VOICEMAIL_BACKUP_FILE_SUFFIX;
- // Order by Date entries from database. We start backup from the newest.
- private static final String ORDER_BY_DATE = "date DESC";
- // Voicemail Uri Column
- public static final String VOICEMAIL_URI = "voicemail_uri";
- // Voicemail packages to backup
- public static final String VOICEMAIL_SOURCE_PACKAGE = "com.google.android.dialer";
-
- private long voicemailsBackedupSoFar = 0;
- private long sizeOfVoicemailsBackedupSoFar = 0;
- private boolean maxVoicemailBackupReached = false;
-
- /**
- * onBackup is used for Key/Value backup. Since we are using Dolly/Android Auto backup, we do not
- * need to implement this method and Dolly should not be calling this. Instead Dolly will be
- * calling onFullBackup.
- */
- @Override
- public void onBackup(
- ParcelFileDescriptor parcelFileDescriptor,
- BackupDataOutput backupDataOutput,
- ParcelFileDescriptor parcelFileDescriptor1)
- throws IOException {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_BACKUP);
- Assert.fail("Android Backup should not call DialerBackupAgent.onBackup");
- }
-
- /**
- * onRestore is used for Key/Value restore. Since we are using Dolly/Android Auto backup/restore,
- * we need to implement this method only for backwards compatibility. Dolly should be calling
- * onFileRestore during its restore.
- */
- @Override
- public void onRestore(
- BackupDataInput backupDataInput, int i, ParcelFileDescriptor parcelFileDescriptor)
- throws IOException {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE);
- }
-
- @TargetApi(VERSION_CODES.M)
- @Override
- public void onFullBackup(FullBackupDataOutput data) throws IOException {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_FULL_BACKUP);
- LogUtil.i("DialerBackupAgent.onFullBackup", "performing dialer backup");
-
- List<PhoneAccountHandle> phoneAccountsToArchive =
- DialerBackupUtils.getPhoneAccountsToArchive(this);
-
- if (!maxVoicemailBackupReached && !phoneAccountsToArchive.isEmpty()) {
- voicemailsBackedupSoFar = 0;
- sizeOfVoicemailsBackedupSoFar = 0;
-
- LogUtil.i("DialerBackupAgent.onFullBackup", "autoBackup is enabled");
- ContentResolver contentResolver = getContentResolver();
- int limit = 1000;
-
- Uri uri =
- TelecomUtil.getCallLogUri(this)
- .buildUpon()
- .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(limit))
- .build();
-
- LogUtil.i("DialerBackupAgent.onFullBackup", "backing up from: " + uri);
-
- try (Cursor cursor =
- contentResolver.query(
- uri,
- null,
- String.format(
- "(%s = ? AND deleted = 0 AND %s = ? AND ?)",
- Calls.TYPE, Voicemails.SOURCE_PACKAGE),
- new String[] {
- Integer.toString(CallLog.Calls.VOICEMAIL_TYPE),
- VOICEMAIL_SOURCE_PACKAGE,
- DialerBackupUtils.getPhoneAccountClause(phoneAccountsToArchive)
- },
- ORDER_BY_DATE,
- null)) {
-
- if (cursor == null) {
- LogUtil.i("DialerBackupAgent.onFullBackup", "cursor was null");
- return;
- }
-
- LogUtil.i("DialerBackupAgent.onFullBackup", "cursor count: " + cursor.getCount());
- if (cursor.moveToFirst()) {
- int fileNum = 0;
- do {
- backupRow(
- data, cursor, String.format(Locale.US, VOICEMAIL_BACKUP_FILE_FORMAT, fileNum++));
- } while (cursor.moveToNext() && !maxVoicemailBackupReached);
- } else {
- LogUtil.i("DialerBackupAgent.onFullBackup", "cursor.moveToFirst failed");
- }
- }
- }
- LogUtil.i(
- "DialerBackupAgent.onFullBackup",
- "vm files backed up: %d, vm size backed up:%d, "
- + "max vm backup reached:%b, phone accounts to archive: %d",
- voicemailsBackedupSoFar,
- sizeOfVoicemailsBackedupSoFar,
- maxVoicemailBackupReached,
- phoneAccountsToArchive.size());
- super.onFullBackup(data);
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_FULL_BACKED_UP);
- }
-
- private void backupRow(FullBackupDataOutput data, Cursor cursor, String fileName)
- throws IOException {
-
- VoicemailInfo cursorRowInProto =
- DialerBackupUtils.convertVoicemailCursorRowToProto(cursor, getContentResolver());
-
- File file = new File(getFilesDir(), fileName);
- DialerBackupUtils.writeProtoToFile(file, cursorRowInProto);
-
- if (sizeOfVoicemailsBackedupSoFar + file.length()
- > DialerBackupUtils.maxVoicemailSizeToBackup) {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_MAX_VM_BACKUP_REACHED);
- maxVoicemailBackupReached = true;
- file.delete();
- return;
- }
-
- backupFile(file, data);
- }
-
- // TODO: Write to FullBackupDataOutput directly (b/33849960)
- private void backupFile(File file, FullBackupDataOutput data) throws IOException {
- try {
- super.fullBackupFile(file, data);
- sizeOfVoicemailsBackedupSoFar = sizeOfVoicemailsBackedupSoFar + file.length();
- voicemailsBackedupSoFar++;
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_VOICEMAIL_BACKED_UP);
- LogUtil.i("DialerBackupAgent.backupFile", "file backed up:" + file.getAbsolutePath());
- } finally {
- file.delete();
- }
- }
-
- // Being tracked in b/33839952
- @Override
- public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_QUOTA_EXCEEDED);
- LogUtil.i("DialerBackupAgent.onQuotaExceeded", "does nothing");
- }
-
- @TargetApi(VERSION_CODES.M)
- @Override
- public void onRestoreFile(
- ParcelFileDescriptor data, long size, File destination, int type, long mode, long mtime)
- throws IOException {
- LogUtil.i("DialerBackupAgent.onRestoreFile", "size:" + size + " destination: " + destination);
-
- String fileName = destination.getName();
- LogUtil.i("DialerBackupAgent.onRestoreFile", "file name: " + fileName);
-
- if (fileName.endsWith(VOICEMAIL_BACKUP_FILE_SUFFIX)) {
- if (DialerBackupUtils.canRestoreVoicemails(getContentResolver(), this)) {
- try {
- super.onRestoreFile(data, size, destination, type, mode, mtime);
- restoreVoicemail(destination);
- destination.delete();
- } catch (IOException e) {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_IO_EXCEPTION);
- LogUtil.e(
- "DialerBackupAgent.onRestoreFile", "could not restore voicemail - IOException: ", e);
- }
- } else {
- LogUtil.i("DialerBackupAgent.onRestoreFile", "build does not support restoring voicemails");
- }
-
- } else {
- super.onRestoreFile(data, size, destination, type, mode, mtime);
- LogUtil.i("DialerBackupAgent.onRestoreFile", "restored: " + fileName);
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_RESTORED_FILE);
- }
- }
-
- @Override
- public void onRestoreFinished() {
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_FINISHED);
- LogUtil.i("DialerBackupAgent.onRestoreFinished", "do nothing");
- }
-
- @TargetApi(VERSION_CODES.M)
- private void restoreVoicemail(File file) throws IOException {
- Pair<ContentValues, byte[]> pair =
- DialerBackupUtils.convertVoicemailProtoFileToContentValueAndAudioBytes(
- file, getApplicationContext());
-
- if (pair == null) {
- LogUtil.i("DialerBackupAgent.restoreVoicemail", "not restoring VM due to duplicate");
- Logger.get(this)
- .logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING);
- return;
- }
-
- // TODO: Uniquely identify backup agent as the creator of this voicemail b/34084298
- try (OutputStream restoreStream =
- getContentResolver()
- .openOutputStream(
- getContentResolver()
- .insert(VoicemailContract.Voicemails.CONTENT_URI, pair.first))) {
- DialerBackupUtils.copyAudioBytesToContentUri(pair.second, restoreStream);
- Logger.get(this).logImpression(DialerImpression.Type.BACKUP_RESTORED_VOICEMAIL);
- }
- }
-}
diff --git a/java/com/android/dialer/backup/DialerBackupUtils.java b/java/com/android/dialer/backup/DialerBackupUtils.java
deleted file mode 100644
index fe714f6..0000000
--- a/java/com/android/dialer/backup/DialerBackupUtils.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.backup;
-
-import android.annotation.TargetApi;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderBindings;
-import com.android.voicemail.VoicemailComponent;
-import com.google.common.io.ByteStreams;
-import com.google.common.io.Files;
-import com.google.protobuf.ByteString;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Helper functions for DialerBackupAgent */
-public class DialerBackupUtils {
- // Backup voicemails up to 20MB
- static long maxVoicemailSizeToBackup = 20000000L;
- static final String RESTORED_COLUMN = "restored";
-
- private DialerBackupUtils() {}
-
- public static void copyAudioBytesToContentUri(
- @NonNull byte[] audioBytesArray, @NonNull OutputStream restoreStream) throws IOException {
- LogUtil.i("DialerBackupUtils.copyStream", "audioByteArray length: " + audioBytesArray.length);
-
- ByteArrayInputStream decodedStream = new ByteArrayInputStream(audioBytesArray);
- LogUtil.i(
- "DialerBackupUtils.copyStream", "decodedStream.available: " + decodedStream.available());
-
- ByteStreams.copy(decodedStream, restoreStream);
- }
-
- public static @Nullable ByteString audioStreamToByteString(@NonNull InputStream stream)
- throws IOException {
- if (stream.available() > 0) {
- return ByteString.readFrom(stream);
- } else {
- LogUtil.i("DialerBackupUtils.audioStreamToByteArray", "no audio stream to backup");
- }
- return ByteString.EMPTY;
- }
-
- public static void writeProtoToFile(@NonNull File file, @NonNull VoicemailInfo voicemailInfo)
- throws IOException {
- LogUtil.i(
- "DialerBackupUtils.writeProtoToFile",
- "backup " + voicemailInfo + " to " + file.getAbsolutePath());
-
- byte[] bytes = voicemailInfo.toByteArray();
- Files.write(bytes, file);
- }
-
- /** Only restore voicemails that have the restored column in calllog (NMR2+ builds) */
- @TargetApi(VERSION_CODES.M)
- public static boolean canRestoreVoicemails(ContentResolver contentResolver, Context context) {
- try (Cursor cursor = contentResolver.query(Voicemails.CONTENT_URI, null, null, null, null)) {
- // Restored column only exists in NMR2 and above builds.
- if (cursor.getColumnIndex(RESTORED_COLUMN) != -1) {
- LogUtil.i("DialerBackupUtils.canRestoreVoicemails", "Build supports restore");
- return true;
- } else {
- LogUtil.i("DialerBackupUtils.canRestoreVoicemails", "Build does not support restore");
- return false;
- }
- }
- }
-
- public static VoicemailInfo protoFileToVoicemailInfo(@NonNull File file) throws IOException {
- byte[] byteArray = Files.toByteArray(file);
- return VoicemailInfo.parseFrom(byteArray);
- }
-
- @TargetApi(VERSION_CODES.M)
- public static VoicemailInfo convertVoicemailCursorRowToProto(
- @NonNull Cursor cursor, @NonNull ContentResolver contentResolver) throws IOException {
-
- VoicemailInfo.Builder voicemailInfo = VoicemailInfo.newBuilder();
-
- for (int i = 0; i < cursor.getColumnCount(); ++i) {
- String name = cursor.getColumnName(i);
- String value = cursor.getString(i);
-
- LogUtil.i(
- "DialerBackupUtils.convertVoicemailCursorRowToProto",
- "column index: %d, column name: %s, column value: %s",
- i,
- name,
- value);
-
- switch (name) {
- case Voicemails.DATE:
- voicemailInfo.setDate(value);
- break;
- case Voicemails.DELETED:
- voicemailInfo.setDeleted(value);
- break;
- case Voicemails.DIRTY:
- voicemailInfo.setDirty(value);
- break;
- case Voicemails.DIR_TYPE:
- voicemailInfo.setDirType(value);
- break;
- case Voicemails.DURATION:
- voicemailInfo.setDuration(value);
- break;
- case Voicemails.HAS_CONTENT:
- voicemailInfo.setHasContent(value);
- break;
- case Voicemails.IS_READ:
- voicemailInfo.setIsRead(value);
- break;
- case Voicemails.ITEM_TYPE:
- voicemailInfo.setItemType(value);
- break;
- case Voicemails.LAST_MODIFIED:
- voicemailInfo.setLastModified(value);
- break;
- case Voicemails.MIME_TYPE:
- voicemailInfo.setMimeType(value);
- break;
- case Voicemails.NUMBER:
- voicemailInfo.setNumber(value);
- break;
- case Voicemails.PHONE_ACCOUNT_COMPONENT_NAME:
- voicemailInfo.setPhoneAccountComponentName(value);
- break;
- case Voicemails.PHONE_ACCOUNT_ID:
- voicemailInfo.setPhoneAccountId(value);
- break;
- case Voicemails.SOURCE_DATA:
- voicemailInfo.setSourceData(value);
- break;
- case Voicemails.SOURCE_PACKAGE:
- voicemailInfo.setSourcePackage(value);
- break;
- case Voicemails.TRANSCRIPTION:
- voicemailInfo.setTranscription(value);
- break;
- case DialerBackupAgent.VOICEMAIL_URI:
- try (InputStream audioStream = contentResolver.openInputStream(Uri.parse(value))) {
- voicemailInfo.setEncodedVoicemailKey(audioStreamToByteString(audioStream));
- }
- break;
- default:
- LogUtil.i(
- "DialerBackupUtils.convertVoicemailCursorRowToProto",
- "Not backing up column: %s, with value: %s",
- name,
- value);
- break;
- }
- }
- return voicemailInfo.build();
- }
-
- public static Pair<ContentValues, byte[]> convertVoicemailProtoFileToContentValueAndAudioBytes(
- @NonNull File file, Context context) throws IOException {
-
- VoicemailInfo voicemailInfo = DialerBackupUtils.protoFileToVoicemailInfo(file);
- LogUtil.i(
- "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
- "file name: "
- + file.getName()
- + " voicemailInfo size: "
- + voicemailInfo.getSerializedSize());
-
- if (isDuplicate(context, voicemailInfo)) {
- LogUtil.i(
- "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
- "voicemail already exists");
- return null;
- } else {
- ContentValues contentValues = new ContentValues();
-
- if (voicemailInfo.hasDate()) {
- contentValues.put(Voicemails.DATE, voicemailInfo.getDate());
- }
- if (voicemailInfo.hasDeleted()) {
- contentValues.put(Voicemails.DELETED, voicemailInfo.getDeleted());
- }
- if (!voicemailInfo.hasDirty()) {
- contentValues.put(Voicemails.DIRTY, voicemailInfo.getDirty());
- }
- if (!voicemailInfo.hasDuration()) {
- contentValues.put(Voicemails.DURATION, voicemailInfo.getDuration());
- }
- if (!voicemailInfo.hasIsRead()) {
- contentValues.put(Voicemails.IS_READ, voicemailInfo.getIsRead());
- }
- if (!voicemailInfo.hasLastModified()) {
- contentValues.put(Voicemails.LAST_MODIFIED, voicemailInfo.getLastModified());
- }
- if (!voicemailInfo.hasMimeType()) {
- contentValues.put(Voicemails.MIME_TYPE, voicemailInfo.getMimeType());
- }
- if (!voicemailInfo.hasNumber()) {
- contentValues.put(Voicemails.NUMBER, voicemailInfo.getNumber());
- }
- if (!voicemailInfo.hasPhoneAccountComponentName()) {
- contentValues.put(
- Voicemails.PHONE_ACCOUNT_COMPONENT_NAME, voicemailInfo.getPhoneAccountComponentName());
- }
- if (!voicemailInfo.hasPhoneAccountId()) {
- contentValues.put(Voicemails.PHONE_ACCOUNT_ID, voicemailInfo.getPhoneAccountId());
- }
- if (!voicemailInfo.hasSourceData()) {
- contentValues.put(Voicemails.SOURCE_DATA, voicemailInfo.getSourceData());
- }
- if (!voicemailInfo.hasSourcePackage()) {
- contentValues.put(Voicemails.SOURCE_PACKAGE, voicemailInfo.getSourcePackage());
- }
- if (!voicemailInfo.hasTranscription()) {
- contentValues.put(Voicemails.TRANSCRIPTION, voicemailInfo.getTranscription());
- }
- contentValues.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- contentValues.put(RESTORED_COLUMN, "1");
- contentValues.put(Voicemails.SOURCE_PACKAGE, getSourcePackage(context, voicemailInfo));
-
- LogUtil.i(
- "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
- "cv: " + contentValues);
-
- return Pair.create(contentValues, voicemailInfo.getEncodedVoicemailKey().toByteArray());
- }
- }
-
- /**
- * We should be using the system package name as the source package if there is no endless VM/VM
- * archive present on the device. This is to separate pre-O (no endless VM) and O+ (endless VM)
- * devices. This ensures that the source of truth for VMs is the VM server when endless VM is not
- * enabled, and when endless VM/archived VMs is present, the source of truth for VMs is the device
- * itself.
- */
- private static String getSourcePackage(Context context, VoicemailInfo voicemailInfo) {
- if (ConfigProviderBindings.get(context)
- .getBoolean("voicemail_restore_force_system_source_package", false)) {
- LogUtil.i("DialerBackupUtils.getSourcePackage", "forcing system source package");
- return "com.android.phone";
- }
- if (ConfigProviderBindings.get(context)
- .getBoolean("voicemail_restore_check_archive_for_source_package", true)) {
- if ("1".equals(voicemailInfo.getArchived())) {
- LogUtil.i(
- "DialerBackupUtils.getSourcePackage",
- "voicemail was archived, using app source package");
- // Using our app's source package will prevent the archived voicemail from being deleted by
- // the system when it syncs with the voicemail server. In most cases the user will not see
- // duplicate voicemails because this voicemail was archived and likely deleted from the
- // voicemail server.
- return context.getPackageName();
- } else {
- // Use the system source package. This means that if the voicemail is not present on the
- // voicemail server then the system will delete it when it syncs.
- LogUtil.i(
- "DialerBackupUtils.getSourcePackage",
- "voicemail was not archived, using system source package");
- return "com.android.phone";
- }
- }
- // Use our app's source package. This means that if the system syncs voicemail from the server
- // the user could potentially get duplicate voicemails.
- LogUtil.i("DialerBackupUtils.getSourcePackage", "defaulting to using app source package");
- return context.getPackageName();
- }
-
- @TargetApi(VERSION_CODES.M)
- private static boolean isDuplicate(Context context, VoicemailInfo voicemailInfo) {
- // This checks for VM that might already exist, and doesn't restore them
- try (Cursor cursor =
- context
- .getContentResolver()
- .query(
- VoicemailContract.Voicemails.CONTENT_URI,
- null,
- String.format(
- "(%s = ? AND %s = ? AND %s = ?)",
- Voicemails.NUMBER, Voicemails.DATE, Voicemails.DURATION),
- new String[] {
- voicemailInfo.getNumber(), voicemailInfo.getDate(), voicemailInfo.getDuration()
- },
- null,
- null)) {
- if (cursor.moveToFirst()
- && ConfigProviderBindings.get(context)
- .getBoolean("enable_vm_restore_no_duplicate", true)) {
- return true;
- }
- }
- return false;
- }
-
- public static String getPhoneAccountClause(List<PhoneAccountHandle> phoneAccountsToArchive) {
- Assert.checkArgument(!phoneAccountsToArchive.isEmpty());
- StringBuilder whereQuery = new StringBuilder();
-
- whereQuery.append("(");
-
- for (int i = 0; i < phoneAccountsToArchive.size(); i++) {
- whereQuery.append(
- Voicemails.PHONE_ACCOUNT_ID + " = " + phoneAccountsToArchive.get(i).getId());
-
- if (phoneAccountsToArchive.size() > 1 && i < phoneAccountsToArchive.size() - 1) {
- whereQuery.append(" OR ");
- }
- }
- whereQuery.append(")");
- return whereQuery.toString();
- }
-
- public static List<PhoneAccountHandle> getPhoneAccountsToArchive(Context context) {
- List<PhoneAccountHandle> phoneAccountsToBackUp = new ArrayList<>();
-
- for (PhoneAccountHandle handle :
- context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
-
- if (VoicemailComponent.get(context)
- .getVoicemailClient()
- .isVoicemailArchiveEnabled(context, handle)) {
- phoneAccountsToBackUp.add(handle);
- LogUtil.i(
- "DialerBackupUtils.getPhoneAccountsToArchive", "enabled for: " + handle.toString());
- } else {
- LogUtil.i(
- "DialerBackupUtils.getPhoneAccountsToArchive", "not enabled for: " + handle.toString());
- }
- }
- return phoneAccountsToBackUp;
- }
-}
diff --git a/java/com/android/dialer/backup/DialerPersistentBackupAgent.java b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
new file mode 100644
index 0000000..085c343
--- /dev/null
+++ b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
@@ -0,0 +1,84 @@
+/*
+ * 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.backup;
+
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.os.ParcelFileDescriptor;
+import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
+import android.util.ArrayMap;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+import com.google.android.libraries.backup.BackupKeyPredicate;
+import com.google.android.libraries.backup.BackupKeyPredicates;
+import com.google.android.libraries.backup.PersistentBackupAgentHelper;
+import java.io.IOException;
+import java.util.Map;
+
+/** Implementation of Key/Value Backup that powers Dialer's backup and restore. */
+public class DialerPersistentBackupAgent extends PersistentBackupAgentHelper {
+
+ private static final String DEFAULT_SHARED_PREFS_NAME = "com.google.android.dialer_preferences";
+
+ @NonNull private final String sharedPrefsName;
+
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ DialerPersistentBackupAgent(@NonNull String sharedPreferenceName) {
+ this.sharedPrefsName = Assert.isNotNull(sharedPreferenceName);
+ Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR);
+ }
+
+ public DialerPersistentBackupAgent() {
+ this(DEFAULT_SHARED_PREFS_NAME);
+ }
+
+ @Override
+ public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor stateFile)
+ throws IOException {
+ Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE);
+ LogUtil.i("DialerPersistentBackupAgent.onRestore", "restore from version: " + appVersionCode);
+ super.onRestore(data, appVersionCode, stateFile);
+ }
+
+ @Override
+ public void onBackup(
+ ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
+ throws IOException {
+ Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_BACKUP);
+ LogUtil.i("DialerPersistentBackupAgent.onBackup", "onBackup being performed");
+ super.onBackup(oldState, data, newState);
+ }
+
+ @Override
+ public Map<String, BackupKeyPredicate> getBackupSpecification() {
+ Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION);
+ LogUtil.i(
+ "DialerPersistentBackupAgent.getBackupSpecification",
+ "file being backed up: " + sharedPrefsName);
+ Map<String, BackupKeyPredicate> backupSpecification = new ArrayMap<>();
+ backupSpecification.put(sharedPrefsName, BackupKeyPredicates.alwaysTrue());
+ return backupSpecification;
+ }
+
+ @Override
+ public void onRestoreFinished() {
+ Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE_FINISHED);
+ super.onRestoreFinished();
+ }
+}
diff --git a/java/com/android/dialer/backup/proto/voicemail_info.proto b/java/com/android/dialer/backup/proto/voicemail_info.proto
deleted file mode 100644
index 7497683..0000000
--- a/java/com/android/dialer/backup/proto/voicemail_info.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax = "proto2";
-
-option java_package = "com.android.dialer.backup";
-option java_multiple_files = true;
-option optimize_for = LITE_RUNTIME;
-
-
-package com.android.dialer.backup;
-
-// Next id: 20
-message VoicemailInfo {
- optional string date = 1;
- optional string deleted = 2;
- optional string dirty = 3;
- optional string dir_type = 4;
- optional string duration = 5;
- optional string has_content = 6;
- optional string is_read = 7;
- optional string item_type = 8;
- optional string last_modified = 9;
- optional string mime_type = 10;
- optional string number = 11;
- optional string phone_account_component_name = 12;
- optional string phone_account_id = 13;
- optional string source_data = 14;
- optional string source_package = 15;
- optional string transcription = 16;
- optional string voicemail_uri = 17;
- optional bytes encoded_voicemail_key = 18;
- optional string archived = 19;
-}
diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index 6a7c588..c4adb37 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -24,6 +24,7 @@
import com.android.dialer.inject.ContextModule;
import com.android.dialer.lightbringer.stub.StubLightbringerModule;
import com.android.dialer.simulator.impl.SimulatorModule;
+import com.android.dialer.storage.StorageModule;
import com.android.incallui.calllocation.stub.StubCallLocationModule;
import com.android.incallui.maps.stub.StubMapsModule;
import com.android.voicemail.impl.VoicemailModule;
@@ -39,6 +40,7 @@
DialerExecutorModule.class,
SharedPrefConfigProviderModule.class,
SimulatorModule.class,
+ StorageModule.class,
StubCallLocationModule.class,
StubEnrichedCallModule.class,
StubMapsModule.class,
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index 8ac071f..1349564 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -24,6 +24,7 @@
import com.android.dialer.lightbringer.LightbringerComponent;
import com.android.dialer.main.MainComponent;
import com.android.dialer.simulator.SimulatorComponent;
+import com.android.dialer.storage.StorageComponent;
import com.android.incallui.calllocation.CallLocationComponent;
import com.android.incallui.maps.MapsComponent;
import com.android.voicemail.VoicemailComponent;
@@ -42,5 +43,6 @@
EnrichedCallComponent.HasComponent,
MapsComponent.HasComponent,
SimulatorComponent.HasComponent,
+ StorageComponent.HasComponent,
VoicemailComponent.HasComponent,
LightbringerComponent.HasComponent {}
diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java
index 08666a2..580e0a3 100644
--- a/java/com/android/dialer/binary/common/DialerApplication.java
+++ b/java/com/android/dialer/binary/common/DialerApplication.java
@@ -17,18 +17,17 @@
package com.android.dialer.binary.common;
import android.app.Application;
-import android.os.StrictMode;
import android.os.Trace;
import android.support.annotation.NonNull;
import android.support.v4.os.BuildCompat;
import com.android.dialer.blocking.BlockedNumbersAutoMigrator;
import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.buildtype.BuildType;
import com.android.dialer.calllog.CallLogComponent;
import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
import com.android.dialer.inject.HasRootComponent;
import com.android.dialer.notification.NotificationChannelManager;
import com.android.dialer.persistentlog.PersistentLogger;
+import com.android.dialer.strictmode.DialerStrictMode;
/** A common application subclass for all Dialer build variants. */
public abstract class DialerApplication extends Application implements HasRootComponent {
@@ -38,9 +37,8 @@
@Override
public void onCreate() {
Trace.beginSection("DialerApplication.onCreate");
- if (BuildType.get() == BuildType.BUGFOOD) {
- enableStrictMode();
- }
+ DialerStrictMode.onApplicationCreate(this);
+
super.onCreate();
new BlockedNumbersAutoMigrator(
this.getApplicationContext(),
@@ -56,13 +54,6 @@
Trace.endSection();
}
- private void enableStrictMode() {
- StrictMode.setThreadPolicy(
- new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
- StrictMode.setVmPolicy(
- new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
- }
-
/**
* Returns a new instance of the root component for the application. Sub classes should define a
* root component that extends all the sub components "HasComponent" intefaces. The component
diff --git a/java/com/android/dialer/binary/google/AndroidManifest.xml b/java/com/android/dialer/binary/google/AndroidManifest.xml
new file mode 100644
index 0000000..95c7dda
--- /dev/null
+++ b/java/com/android/dialer/binary/google/AndroidManifest.xml
@@ -0,0 +1,112 @@
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ coreApp="true"
+ package="com.google.android.google_stub_dialer"
+ android:versionCode="160000"
+ android:versionName="12.0">
+
+ <uses-sdk
+ android:minSdkVersion="23"
+ android:targetSdkVersion="26"/>
+
+ <uses-permission android:name="android.permission.CALL_PHONE"/>
+ <uses-permission android:name="android.permission.READ_CONTACTS"/>
+ <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
+ <uses-permission android:name="android.permission.READ_CALL_LOG"/>
+ <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
+ <uses-permission android:name="android.permission.READ_PROFILE"/>
+ <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
+ <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
+ <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+ <uses-permission android:name="android.permission.INTERNET"/>
+ <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
+ <uses-permission android:name="android.permission.NFC"/>
+ <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
+ <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
+ <uses-permission android:name="android.permission.WAKE_LOCK"/>
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
+ <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
+ <uses-permission android:name="android.permission.VIBRATE"/>
+ <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
+ <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
+ <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
+ <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
+ <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
+ <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+ <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+
+ <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
+ <!-- We use this to disable the status bar buttons of home, back and recent
+ during an incoming call. By doing so this allows us to not show the user
+ is viewing the activity in full screen alert, on a fresh system/factory
+ reset state of the app. -->
+ <uses-permission android:name="android.permission.STATUS_BAR"/>
+ <uses-permission android:name="android.permission.CAMERA"/>
+
+ <!-- This tells the activity manager to not delay any of our activity
+ start requests, even if they happen immediately after the user
+ presses home. -->
+ <uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
+
+ <!-- Permissions needed for badger count showing on launch icon. -->
+
+ <!--for Samsung-->
+ <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
+ <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
+
+ <!--for htc-->
+ <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
+ <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>
+
+ <!--for sony-->
+ <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
+ <uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
+
+ <!--for apex-->
+ <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>
+
+ <!--for solid-->
+ <uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
+
+ <!--for huawei-->
+ <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
+ <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
+ <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
+
+ <!--for ZUK-->
+ <uses-permission android:name="android.permission.READ_APP_BADGE"/>
+
+ <!--for OPPO-->
+ <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
+ <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
+
+ <application
+ android:hardwareAccelerated="true"
+ android:icon="@mipmap/ic_launcher_phone"
+ android:label="@string/applicationLabel"
+ android:name="com.android.dialer.binary.google.GoogleStubDialerApplication"
+ android:supportsRtl="true"
+ android:usesCleartextTraffic="false">
+ </application>
+
+</manifest>
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java b/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java
new file mode 100644
index 0000000..e9289af
--- /dev/null
+++ b/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java
@@ -0,0 +1,37 @@
+/*
+ * 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.binary.google;
+
+import android.support.annotation.NonNull;
+import com.android.dialer.binary.common.DialerApplication;
+import com.android.dialer.inject.ContextModule;
+
+/**
+ * The application class for the Google Stub Dialer. This is a version of the Dialer app that
+ * depends on Google Play Services.
+ */
+public class GoogleStubDialerApplication extends DialerApplication {
+
+ /** Returns a new instance of the root component for the Google Stub Dialer. */
+ @Override
+ @NonNull
+ protected Object buildRootComponent() {
+ return DaggerGoogleStubDialerRootComponent.builder()
+ .contextModule(new ContextModule(this))
+ .build();
+ }
+}
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
new file mode 100644
index 0000000..570b569
--- /dev/null
+++ b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
@@ -0,0 +1,54 @@
+/*
+ * 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.binary.google;
+
+import com.android.dialer.binary.basecomponent.BaseDialerRootComponent;
+import com.android.dialer.calllog.CallLogModule;
+import com.android.dialer.common.concurrent.DialerExecutorModule;
+import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
+import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
+import com.android.dialer.inject.ContextModule;
+import com.android.dialer.lightbringer.stub.StubLightbringerModule;
+import com.android.dialer.simulator.impl.SimulatorModule;
+import com.android.dialer.storage.StorageModule;
+import com.android.incallui.calllocation.impl.CallLocationModule;
+import com.android.incallui.maps.impl.MapsModule;
+import com.android.voicemail.impl.VoicemailModule;
+import dagger.Component;
+import javax.inject.Singleton;
+
+/**
+ * Root component for the Google Stub Dialer application. Unlike the AOSP variant, this component
+ * can pull in modules that depend on Google Play Services like the maps module.
+ */
+@Singleton
+@Component(
+ modules = {
+ CallLocationModule.class,
+ CallLogModule.class,
+ ContextModule.class,
+ DialerExecutorModule.class,
+ SharedPrefConfigProviderModule.class,
+ SimulatorModule.class,
+ StorageModule.class,
+ StubEnrichedCallModule.class,
+ MapsModule.class,
+ VoicemailModule.class,
+ StubLightbringerModule.class
+ }
+)
+public interface GoogleStubDialerRootComponent extends BaseDialerRootComponent {}
diff --git a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
index fa74850..d806a83 100644
--- a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
+++ b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
@@ -262,7 +262,7 @@
}
/*
- * TODO: b/27779827, non-e164 numbers can be blocked in the new form of blocking. As a
+ * TODO(maxwelb): b/27779827, non-e164 numbers can be blocked in the new form of blocking. As a
* temporary workaround, determine which column of the database to query based on whether the
* number is e164 or not.
*/
diff --git a/java/com/android/dialer/blocking/FilteredNumberCompat.java b/java/com/android/dialer/blocking/FilteredNumberCompat.java
index 9e01127..548c965 100644
--- a/java/com/android/dialer/blocking/FilteredNumberCompat.java
+++ b/java/com/android/dialer/blocking/FilteredNumberCompat.java
@@ -38,6 +38,7 @@
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
+import com.android.dialer.strictmode.DialerStrictMode;
import com.android.dialer.telecom.TelecomUtil;
import java.util.ArrayList;
import java.util.List;
@@ -124,8 +125,10 @@
* android.provider.BlockedNumberContract} blocking, {@code false} otherwise.
*/
public static boolean hasMigratedToNewBlocking(Context context) {
- return PreferenceManager.getDefaultSharedPreferences(context)
- .getBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false);
+ return DialerStrictMode.bypass(
+ () ->
+ PreferenceManager.getDefaultSharedPreferences(context)
+ .getBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false));
}
/**
@@ -270,7 +273,7 @@
}
// Great Wall blocking, must be primary user and the default or system dialer
- // TODO: check that we're the system Dialer
+ // TODO(maxwelb): check that we're the system Dialer
return TelecomUtil.isDefaultDialer(context)
&& safeBlockedNumbersContractCanCurrentUserBlockNumbers(context);
}
diff --git a/java/com/android/dialer/blocking/res/values-hu/strings.xml b/java/com/android/dialer/blocking/res/values-hu/strings.xml
index 7981d6c..1070454 100644
--- a/java/com/android/dialer/blocking/res/values-hu/strings.xml
+++ b/java/com/android/dialer/blocking/res/values-hu/strings.xml
@@ -33,7 +33,7 @@
<string name="block_number_undo" msgid="5158120911892491697">"VISSZAVONÁS"</string>
<string name="send_to_voicemail_import_failed" msgid="1012752662074208237">"Az importálás nem sikerült"</string>
<string name="call_blocking_disabled_notification_title" msgid="7211352205255347489">"A hívások tiltása funkció kikapcsolva 48 órára"</string>
- <string name="call_blocking_disabled_notification_text" msgid="141384084865180722">"Letiltva segélyhívás miatt."</string>
+ <string name="call_blocking_disabled_notification_text" msgid="141384084865180722">"Letiltva vészhívás miatt."</string>
<string name="block_report_number_alert_title" msgid="2740581989824959611">"Letiltja a következő számot: <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
<string name="block_report_number_alert_details" msgid="2652479394593143562">"A jövőben nem fogad hívásokat erről a számról."</string>
<string name="block_number_alert_details" msgid="715942751312046429">"<xliff:g id="TEXT">%1$s</xliff:g> A hívást spamként jelentjük be."</string>
diff --git a/java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..45d72e0
--- /dev/null
+++ b/java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+ @Override
+ @BuildType.Type
+ public int getBuildType() {
+ return BuildType.BUGFOOD;
+ }
+}
diff --git a/java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..e1f2cdc
--- /dev/null
+++ b/java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+ @Override
+ @BuildType.Type
+ public int getBuildType() {
+ return BuildType.DOGFOOD;
+ }
+}
diff --git a/java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..e5ad901
--- /dev/null
+++ b/java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+ @Override
+ @BuildType.Type
+ public int getBuildType() {
+ return BuildType.FISHFOOD;
+ }
+}
diff --git a/java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..80a1cb7
--- /dev/null
+++ b/java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+ @Override
+ @BuildType.Type
+ public int getBuildType() {
+ return BuildType.TEST;
+ }
+}
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index df5cc29..e6e5513 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -32,6 +32,7 @@
import android.support.annotation.VisibleForTesting;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.FileProvider;
+import android.support.v4.util.Pair;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v4.view.animation.FastOutSlowInInterpolator;
import android.support.v7.app.AppCompatActivity;
@@ -50,17 +51,18 @@
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.dialer.callcomposer.CallComposerFragment.CallComposerListener;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.UiUtil;
+import com.android.dialer.common.concurrent.DialerExecutor;
import com.android.dialer.common.concurrent.DialerExecutors;
import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.constants.Constants;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.enrichedcall.EnrichedCallManager;
@@ -139,6 +141,7 @@
private FrameLayout background;
private LinearLayout windowContainer;
+ private DialerExecutor<Uri> copyAndResizeExecutor;
private FastOutSlowInInterpolator interpolator;
private boolean shouldAnimateEntrance = true;
private boolean inFullscreenMode;
@@ -207,6 +210,29 @@
});
setMediaIconSelected(currentIndex);
+
+ copyAndResizeExecutor =
+ DialerExecutors.createUiTaskBuilder(
+ getFragmentManager(),
+ "copyAndResizeImageToSend",
+ new CopyAndResizeImageWorker(this.getApplicationContext()))
+ .onSuccess(this::onCopyAndResizeImageSuccess)
+ .onFailure(this::onCopyAndResizeImageFailure)
+ .build();
+ }
+
+ private void onCopyAndResizeImageSuccess(Pair<File, String> output) {
+ Uri shareableUri =
+ FileProvider.getUriForFile(
+ CallComposerActivity.this, Constants.get().getFileProviderAuthority(), output.first);
+
+ placeRCSCall(
+ MultimediaData.builder().setImage(grantUriPermission(shareableUri), output.second));
+ }
+
+ private void onCopyAndResizeImageFailure(Throwable throwable) {
+ // TODO(b/34279096) - gracefully handle message failure
+ LogUtil.e("CallComposerActivity.onCopyAndResizeImageFailure", "copy Failed", throwable);
}
@Override
@@ -332,28 +358,8 @@
GalleryComposerFragment galleryComposerFragment = (GalleryComposerFragment) fragment;
// If the current data is not a copy, make one.
if (!galleryComposerFragment.selectedDataIsCopy()) {
- DialerExecutors.createUiTaskBuilder(
- getFragmentManager(),
- "copyAndResizeImageToSend",
- new CopyAndResizeImageWorker(this.getApplicationContext()))
- .onSuccess(
- output -> {
- Uri shareableUri =
- FileProvider.getUriForFile(
- CallComposerActivity.this,
- Constants.get().getFileProviderAuthority(),
- output.first);
-
- builder.setImage(grantUriPermission(shareableUri), output.second);
- placeRCSCall(builder);
- })
- .onFailure(
- throwable -> {
- // TODO(b/34279096) - gracefully handle message failure
- LogUtil.e("CallComposerActivity.onCopyFailed", "copy Failed", throwable);
- })
- .build()
- .executeParallel(galleryComposerFragment.getGalleryData().getFileUri());
+ copyAndResizeExecutor.executeParallel(
+ galleryComposerFragment.getGalleryData().getFileUri());
} else {
Uri shareableUri =
FileProvider.getUriForFile(
@@ -415,7 +421,7 @@
/** Give permission to Messenger to view our image for RCS purposes. */
private Uri grantUriPermission(Uri uri) {
- // TODO: Move this to the enriched call manager.
+ // TODO(sail): Move this to the enriched call manager.
grantUriPermission(
"com.google.android.apps.messaging", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
return uri;
@@ -664,12 +670,20 @@
public void onAnimationStart(Animator animation) {
isSendAndCallHidingOrHidden = shouldHide;
sendAndCall.setVisibility(View.VISIBLE);
+ cameraIcon.setVisibility(View.VISIBLE);
+ galleryIcon.setVisibility(View.VISIBLE);
+ messageIcon.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animation) {
if (isSendAndCallHidingOrHidden) {
sendAndCall.setVisibility(View.INVISIBLE);
+ } else {
+ // hide buttons to prevent overdrawing and talkback discoverability
+ cameraIcon.setVisibility(View.GONE);
+ galleryIcon.setVisibility(View.GONE);
+ messageIcon.setVisibility(View.GONE);
}
}
diff --git a/java/com/android/dialer/callcomposer/CameraComposerFragment.java b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
index 7ec6611..a5c65fd 100644
--- a/java/com/android/dialer/callcomposer/CameraComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
@@ -326,7 +326,11 @@
/** Updates the state of the buttons and overlays based on the current state of the view */
private void updateViewState() {
Assert.isNotNull(cameraView);
- Assert.isNotNull(getContext());
+ if (isDetached() || getContext() == null) {
+ LogUtil.i(
+ "CameraComposerFragment.updateViewState", "Fragment detached, cannot update view state");
+ return;
+ }
boolean isCameraAvailable = CameraManager.get().isCameraAvailable();
boolean uriReadyOrProcessing = cameraUri != null || processingUri;
diff --git a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
index 39d6a4a..d33bfb3 100644
--- a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
+++ b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
@@ -16,7 +16,6 @@
package com.android.dialer.callcomposer;
-import android.annotation.SuppressLint;
import android.content.Context;
import android.net.Uri;
import android.provider.MediaStore.Files;
@@ -44,11 +43,10 @@
SORT_ORDER);
}
- @SuppressLint("DefaultLocale")
private static String createSelection() {
- return String.format(
- "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/webp')"
- + " AND media_type in (%d)",
- FileColumns.MEDIA_TYPE_IMAGE);
+ return "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/webp')"
+ + " AND media_type in ("
+ + FileColumns.MEDIA_TYPE_IMAGE
+ + ")";
}
}
diff --git a/java/com/android/dialer/callcomposer/camera/CameraManager.java b/java/com/android/dialer/callcomposer/camera/CameraManager.java
index 5915ce3..f79f654 100644
--- a/java/com/android/dialer/callcomposer/camera/CameraManager.java
+++ b/java/com/android/dialer/callcomposer/camera/CameraManager.java
@@ -35,6 +35,7 @@
import com.android.dialer.callcomposer.camera.camerafocus.RenderOverlay;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutors;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -118,7 +119,7 @@
/**
* The task for opening the camera, so it doesn't block the UI thread Using AsyncTask rather than
* SafeAsyncTask because the tasks need to be serialized, but don't need to be on the UI thread
- * TODO: If we have other AyncTasks (not SafeAsyncTasks) this may contend and we may need
+ * TODO(blemmon): If we have other AyncTasks (not SafeAsyncTasks) this may contend and we may need
* to create a dedicated thread, or synchronize the threads in the thread pool
*/
private AsyncTask<Integer, Void, Camera> mOpenCameraTask;
@@ -457,9 +458,9 @@
int height;
if (mRotation == 90 || mRotation == 270) {
// Is rotated, so swapping dimensions is desired
- //noinspection SuspiciousNameCombination
+ // noinspection SuspiciousNameCombination
width = size.height;
- //noinspection SuspiciousNameCombination
+ // noinspection SuspiciousNameCombination
height = size.width;
} else {
width = size.width;
@@ -467,9 +468,20 @@
}
LogUtil.i(
"CameraManager.onPictureTaken", "taken picture size: " + bytes.length + " bytes");
- new ImagePersistTask(
- width, height, heightPercent, bytes, mCameraPreview.getContext(), callback)
- .execute();
+ DialerExecutors.createNonUiTaskBuilder(
+ new ImagePersistWorker(
+ width, height, heightPercent, bytes, mCameraPreview.getContext()))
+ .onSuccess(
+ (result) -> {
+ callback.onMediaReady(
+ result.getUri(), "image/jpeg", result.getWidth(), result.getHeight());
+ })
+ .onFailure(
+ (throwable) -> {
+ callback.onMediaFailed(new Exception("Persisting image failed", throwable));
+ })
+ .build()
+ .executeSerial(null);
}
};
diff --git a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
similarity index 77%
rename from java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
rename to java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
index 8620701..26b0bde 100644
--- a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
+++ b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
@@ -22,13 +22,16 @@
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
+import android.support.annotation.NonNull;
import android.support.v4.content.FileProvider;
+import com.android.dialer.callcomposer.camera.ImagePersistWorker.Result;
import com.android.dialer.callcomposer.camera.exif.ExifInterface;
import com.android.dialer.callcomposer.util.BitmapResizer;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.FallibleAsyncTask;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.constants.Constants;
import com.android.dialer.util.DialerUtils;
+import com.google.auto.value.AutoValue;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -36,52 +39,70 @@
/** Persisting image routine. */
@TargetApi(VERSION_CODES.M)
-public class ImagePersistTask extends FallibleAsyncTask<Void, Void, Uri> {
+public class ImagePersistWorker implements Worker<Void, Result> {
private int mWidth;
private int mHeight;
private final float mHeightPercent;
private final byte[] mBytes;
private final Context mContext;
- private final CameraManager.MediaCallback mCallback;
- ImagePersistTask(
+ @AutoValue
+ abstract static class Result {
+
+ public static Builder builder() {
+ return new AutoValue_ImagePersistWorker_Result.Builder();
+ }
+
+ @NonNull
+ abstract Uri getUri();
+
+ abstract int getWidth();
+
+ abstract int getHeight();
+
+ @AutoValue.Builder
+ abstract static class Builder {
+ abstract Builder setUri(@NonNull Uri uri);
+
+ abstract Builder setWidth(int width);
+
+ abstract Builder setHeight(int height);
+
+ abstract Result build();
+ }
+ }
+
+ ImagePersistWorker(
final int width,
final int height,
final float heightPercent,
final byte[] bytes,
- final Context context,
- final CameraManager.MediaCallback callback) {
+ final Context context) {
Assert.checkArgument(heightPercent >= 0 && heightPercent <= 1);
Assert.isNotNull(bytes);
Assert.isNotNull(context);
- Assert.isNotNull(callback);
mWidth = width;
mHeight = height;
mHeightPercent = heightPercent;
mBytes = bytes;
mContext = context;
- mCallback = callback;
}
@Override
- protected Uri doInBackgroundFallible(final Void... params) throws Exception {
+ public Result doInBackground(Void unused) throws Exception {
File outputFile = DialerUtils.createShareableFile(mContext);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
writeClippedBitmap(outputStream);
}
- return FileProvider.getUriForFile(
- mContext, Constants.get().getFileProviderAuthority(), outputFile);
- }
-
- @Override
- protected void onPostExecute(FallibleTaskResult<Uri> result) {
- if (result.isFailure()) {
- mCallback.onMediaFailed(new Exception("Persisting image failed", result.getThrowable()));
- } else {
- mCallback.onMediaReady(result.getResult(), "image/jpeg", mWidth, mHeight);
- }
+ return Result.builder()
+ .setUri(
+ FileProvider.getUriForFile(
+ mContext, Constants.get().getFileProviderAuthority(), outputFile))
+ .setWidth(mWidth)
+ .setHeight(mHeight)
+ .build();
}
private void writeClippedBitmap(OutputStream outputStream) throws IOException {
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java b/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
index 1c5ac38..a5edf33 100644
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
+++ b/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
@@ -389,7 +389,7 @@
focusIndicator.showStart();
} else {
if (Parameters.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusMode)) {
- // TODO: check HAL behavior and decide if this can be removed.
+ // TODO(blemmon): check HAL behavior and decide if this can be removed.
focusIndicator.showSuccess(false);
} else if (mState == STATE_SUCCESS) {
focusIndicator.showSuccess(false);
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java b/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
index 23d748c..c728845 100644
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
+++ b/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
@@ -499,7 +499,7 @@
mTiffStream.skip(4);
return null;
}
- // TODO: handle numOfComp overflow
+ // TODO(blemmon): handle numOfComp overflow
ExifTag tag =
new ExifTag(
tagId,
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java b/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
index a254ae9..9a03c10 100644
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
+++ b/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
@@ -187,7 +187,7 @@
/** Gets the component count of this tag. */
- // TODO: fix integer overflows with this
+ // TODO(blemmon): fix integer overflows with this
int getComponentCount() {
return mComponentCountActual;
}
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
index 1556247..39c2d0d 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
@@ -51,7 +51,6 @@
android:background="@color/call_composer_divider"/>
<RelativeLayout
- android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
diff --git a/java/com/android/dialer/callcomposer/res/values-af/strings.xml b/java/com/android/dialer/callcomposer/res/values-af/strings.xml
index 62a7457..ef35865 100644
--- a/java/com/android/dialer/callcomposer/res/values-af/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-af/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Neem \'n foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Kies \'n foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Stuur \'n boodskap"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto is via Boodskappe gestuur"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Boodskap is via Boodskappe gestuur"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-am/strings.xml b/java/com/android/dialer/callcomposer/res/values-am/strings.xml
index fe1c1e5..8224b1e 100644
--- a/java/com/android/dialer/callcomposer/res/values-am/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-am/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ፎቶ ያንሱ"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ፎቶ ይምረጡ"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"መልዕክት ይላኩ"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"ፎቶ በመልዕክቶች በኩል ተልኳል"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"መልዕክት በመልዕክቶች በኩል ተልኳል"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ar/strings.xml b/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
index b70f3ff..4e27f21 100644
--- a/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"التقاط صورة"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"اختيار صورة"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"إرسال رسالة"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"صورة مرسلة عبر Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"رسالة مرسلة عبر Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-az/strings.xml b/java/com/android/dialer/callcomposer/res/values-az/strings.xml
index 7495555..d861e66 100644
--- a/java/com/android/dialer/callcomposer/res/values-az/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-az/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Şəkil çəkin"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Foto seçin"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Mesaj göndərin"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto Mesajlaşma tətbiqi vasitəsilə göndərildi"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mesaj Mesajlaşma tətbiqi vasitəsilə göndərildi"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
index 88b8011..0a93b22 100644
--- a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Slikajte"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Izaberite sliku"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Pošaljite poruku"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Slika je poslata preko Messages-a"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Poruka je poslata preko Messages-a"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-be/strings.xml b/java/com/android/dialer/callcomposer/res/values-be/strings.xml
index a741ccd..ba55fc7 100644
--- a/java/com/android/dialer/callcomposer/res/values-be/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-be/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Зрабіць фота"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Выбраць фота"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Адправіць паведамленне"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Фота адпраўлена праз праграму \"Паведамленні\""</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Паведамленне адпраўлена праз праграму \"Паведамленні\""</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bg/strings.xml b/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
index 4348bc6..7dad394 100644
--- a/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Правене на снимка"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Избиране на снимка"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Изпращане на съобщение"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Снимката е изпратена чрез Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Съобщението е изпратено чрез Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bn/strings.xml b/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
index f2f3f11..607f195 100644
--- a/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"একটি ছবি তুলুন"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"একটি ফটো বেছে নিন"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"একটি বার্তা পাঠান"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Messages এর সাহায্যে ফটো পাঠানো হয়েছে"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Messages-এর সাহায্যে বার্তা পাঠানো হয়েছে"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bs/strings.xml b/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
index 8ba9e72..99ca5db 100644
--- a/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
@@ -31,8 +31,10 @@
<string name="camera_permission_text" msgid="7863231776480341614">"Da snimite fotografiju, dajte pristup Kameri"</string>
<string name="gallery_permission_text" msgid="4102566850658919346">"Da podijelite sliku, dozvolite pristup Medijima"</string>
<string name="description_call_composer_camera" msgid="388088245837924914">"Uslikaj"</string>
- <string name="description_call_composer_photo" msgid="6449208314952246454">"Odaberi fotografiju"</string>
+ <string name="description_call_composer_photo" msgid="6449208314952246454">"Izaberi fotografiju"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Pošalji poruku"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotografija je poslana putem aplikacije Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Poruka je poslana putem aplikacije Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
index 1f3007d..7b55346 100644
--- a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Fes una foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Tria una foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Envia un missatge"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada mitjançant Missatges"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Missatge enviat mitjançant Missatges"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-cs/strings.xml b/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
index 590ab1c..f30bb3c 100644
--- a/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Vyfotit"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Vybrat fotku"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Poslat zprávu"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotka poslaná v aplikaci Zprávy"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Zpráva poslaná v aplikaci Zprávy"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-da/strings.xml b/java/com/android/dialer/callcomposer/res/values-da/strings.xml
index 179e0d0..bae4495 100644
--- a/java/com/android/dialer/callcomposer/res/values-da/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-da/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Tag et billede"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Vælg et billede"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Send en sms"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotoet blev sendt via Beskeder"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Beskeden blev sendt via Beskeder"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-de/strings.xml b/java/com/android/dialer/callcomposer/res/values-de/strings.xml
index d0c88a9..ac7ce4e 100644
--- a/java/com/android/dialer/callcomposer/res/values-de/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-de/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Bild aufnehmen"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Foto auswählen"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Nachricht senden"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto über Messages gesendet"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Nachricht über Messages gesendet."</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-el/strings.xml b/java/com/android/dialer/callcomposer/res/values-el/strings.xml
index bfa626b..1e7659b 100644
--- a/java/com/android/dialer/callcomposer/res/values-el/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-el/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Λήψη φωτογραφίας"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Επιλογή φωτογραφίας"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Αποστολή μηνύματος"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Η φωτογραφία στάλθηκε μέσω του Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Το μήνυμα στάλθηκε μέσω του Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
index 5e2807b..2b3f7a3 100644
--- a/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Take a picture"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Choose a photo"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Sending a message"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Photo sent via Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Message sent via Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
index 5e2807b..2b3f7a3 100644
--- a/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Take a picture"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Choose a photo"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Sending a message"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Photo sent via Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Message sent via Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
index 5e2807b..2b3f7a3 100644
--- a/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Take a picture"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Choose a photo"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Sending a message"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Photo sent via Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Message sent via Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml b/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
index f1d4705..67bac97 100644
--- a/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Tomar una foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Elegir una foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Enviar un mensaje"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada por Mensajes"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensaje de texto enviado por Mensajes"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-es/strings.xml b/java/com/android/dialer/callcomposer/res/values-es/strings.xml
index cba427b..4b87268 100644
--- a/java/com/android/dialer/callcomposer/res/values-es/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-es/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Hacer una foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Elegir una foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Enviar un mensaje"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada a través de Mensajes"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensaje enviado a través de Mensajes"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-et/strings.xml b/java/com/android/dialer/callcomposer/res/values-et/strings.xml
index d79ca90..896525d 100644
--- a/java/com/android/dialer/callcomposer/res/values-et/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-et/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Pildistamine"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Foto valimine"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Sõnumi saatmine"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto saadeti rakenduse Messages kaudu"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Sõnum saadeti rakenduse Messages kaudu"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-eu/strings.xml b/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
index 32413f9..ce7e296 100644
--- a/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Atera argazki bat"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Aukeratu argazki bat"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Bidali mezu bat"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Mezuak aplikazioaren bidez bidali da argazkia"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mezuak aplikazioaren bidez bidali da mezua"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fa/strings.xml b/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
index a2604a9..6f0c2e5 100644
--- a/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"عکس گرفتن"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"انتخاب عکس"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ارسال پیام"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"عکس ارسالشده ازطریق «پیامها»"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"پیام ارسالشده ازطریق «پیامها»"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fi/strings.xml b/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
index 482a36a..ce0786c 100644
--- a/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Ota kuva"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Valitse kuva"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Lähetä viesti"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Kuva lähetettiin Messages-sovelluksen kautta"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Viesti lähetettiin Messages-sovelluksen kautta"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml b/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
index be06baa..0451dcf 100644
--- a/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Prendre une photo"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Choisir une photo"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Envoyer un message"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Photo envoyée au moyen de l\'application Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Message envoyé au moyen de l\'application Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fr/strings.xml b/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
index f56ad7a..50e6194 100644
--- a/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Prendre une photo"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Choisir une photo"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Envoyer un message"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Photo envoyée via l\'application Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Message envoyé via l\'application Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-gl/strings.xml b/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
index f2a0f15..2ad2c9a 100644
--- a/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Tira unha foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Escolle unha foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Envía unha mensaxe"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada a través de Mensaxes"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensaxe enviada a través de Mensaxes"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-gu/strings.xml b/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
index 771d148..8c9a521 100644
--- a/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"એક ચિત્ર લો"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ફોટો પસંદ કરો"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"એક સંદેશ મોકલો"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Messages મારફતે ફોટો મોકલ્યો"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Messages મારફતે સંદેશ મોકલ્યો"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hi/strings.xml b/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
index 4de9a6d..8d4f91e 100644
--- a/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"चित्र लें"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"एक फ़ोटो चुनें"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"संदेश भेजें"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"संदेश ऐप्लिकेशन के ज़रिए फ़ोटो भेजा गया"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"संदेश ऐप्लिकेशन के ज़रिए संदेश भेजा गया"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hr/strings.xml b/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
index 4bea73c..cc3219d 100644
--- a/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Snimi fotografiju"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Odaberi fotografiju"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Pošalji poruku"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotografija poslana putem Poruka"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Poruka poslana putem Poruka"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hu/strings.xml b/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
index 2a590e0..b222c53 100644
--- a/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Kép készítése"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Fotó kiválasztása"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Üzenet küldése"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotó elküldve a Messages alkalmazásban"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Üzenet elküldve a Messages alkalmazásban"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hy/strings.xml b/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
index 1b55234..01635f6 100644
--- a/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Լուսանկարել"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Ընտրել լուսանկար"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Ուղարկել հաղորդագրություն"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Լուսանկարն ուղարկվել է Messages-ի միջոցով"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Հաղորդագրությունն ուղարկվել է Messages-ի միջոցով"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-in/strings.xml b/java/com/android/dialer/callcomposer/res/values-in/strings.xml
index 7983c4d..4c6d844 100644
--- a/java/com/android/dialer/callcomposer/res/values-in/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-in/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Jepret"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Pilih foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Mengirim pesan"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto dikirim lewat Message"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Pesan dikirim lewat Message"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-is/strings.xml b/java/com/android/dialer/callcomposer/res/values-is/strings.xml
index 3bf4a6b..d951edd 100644
--- a/java/com/android/dialer/callcomposer/res/values-is/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-is/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Taka mynd"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Velja mynd"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Senda skilaboð"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Mynd send með Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Skilaboð send með Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-it/strings.xml b/java/com/android/dialer/callcomposer/res/values-it/strings.xml
index 343dd84..9d26b2c 100644
--- a/java/com/android/dialer/callcomposer/res/values-it/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-it/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Scatta una foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Scegli una foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Invia un messaggio"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto inviata tramite Messaggi"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Messaggio inviato tramite Messaggi"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-iw/strings.xml b/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
index 24c6203..26e7daf 100644
--- a/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"צילום תמונה"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"בחירת תמונה"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"שליחת הודעה"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"התמונה נשלחה דרך אפליקציית Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"ההודעה נשלחה דרך אפליקציית Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ja/strings.xml b/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
index 33f48c9..96eaea5 100644
--- a/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"画像を撮影します"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"写真を選択します"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"メッセージを送信します"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Android メッセージで写真が送信されました"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Android メッセージでメッセージが送信されました"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ka/strings.xml b/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
index 65084f3..0cef94d 100644
--- a/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"სურათის გადაღება"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ფოტოს არჩევა"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"შეტყობინების გაგზავნა"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"ფოტო გაიგზავნა Messages აპიდან"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"შეტყობინება გაიგზავნა Messages აპიდან"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-kk/strings.xml b/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
index bf41736..c95fb7b 100644
--- a/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Суретке түсіру"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Суретті таңдау"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Хабар жіберу"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Сурет Messages арқылы жіберілді"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Хабар Messages арқылы жіберілді"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-km/strings.xml b/java/com/android/dialer/callcomposer/res/values-km/strings.xml
index 10c8d52..66f82c5 100644
--- a/java/com/android/dialer/callcomposer/res/values-km/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-km/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ថតរូប"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ជ្រើសរើសរូបថត"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ផ្ញើសារ"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"រូបថតដែលបានផ្ញើតាមរយៈ Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"សារដែលបានផ្ញើតាមរយៈ Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-kn/strings.xml b/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
index 3776d9d..7bb1e48 100644
--- a/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ಚಿತ್ರ ತೆಗೆದುಕೊಳ್ಳಿ"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ಒಂದು ಫೋಟೋ ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ಸಂದೇಶ ಕಳುಹಿಸಿ"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"ಸಂದೇಶಗಳ ಮೂಲಕ ಕಳುಹಿಸಲಾದ ಫೋಟೋ"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"ಸಂದೇಶಗಳ ಮೂಲಕ ಕಳುಹಿಸಲಾದ ಸಂದೇಶ"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ko/strings.xml b/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
index 0e6820e..1052d55 100644
--- a/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"사진 촬영"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"사진 선택"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"메시지 보내기"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"메시지를 통해 전송된 사진"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"메시지를 통해 전송된 메시지"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ky/strings.xml b/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
index f96ce4d..6e5889d 100644
--- a/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Сүрөткө тартуу"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Сүрөттү тандоо"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Билдирүү жөнөтүү"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Сүрөт Android жазышуулары колдонмосу аркылуу жөнөтүлдү"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Билдирүү Android жазышуулары колдонмосу аркылуу жөнөтүлдү"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lo/strings.xml b/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
index d14f03d..87d72db 100644
--- a/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ຖ່າຍຮູບ"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ເລືອກຮູບພາບ..."</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ສົ່ງຂໍ້ຄວາມ"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"ສົ່ງຮູບຜ່ານ Messages ແລ້ວ"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"ສົ່ງຮູບຜ່ານ Messages ແລ້ວ"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lt/strings.xml b/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
index 4453bcd..07fe444 100644
--- a/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Fotografuoti"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Pasirinkti nuotrauką"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Siųsti pranešimą"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Nuotrauka išsiųsta naudojant „Messages“"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Pranešimas išsiųstas naudojant „Messages“"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lv/strings.xml b/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
index 80e5214..9a3efc7 100644
--- a/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Uzņemt attēlu"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Izvēlēties fotoattēlu"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Sūtīt ziņojumu"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotoattēls nosūtīts, izmantojot lietotni Ziņojumi"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Ziņojums nosūtīts, izmantojot lietotni Ziņojumi"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mk/strings.xml b/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
index bd8f0c8..218c23d 100644
--- a/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Фотографирајте"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Изберете фотографија"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Испратете порака"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Фотографијата е испратена преку Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Пораката е испратена преку Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ml/strings.xml b/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
index e4931cb..0e58cbb 100644
--- a/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ഒരു ചിത്രമെടുക്കുക"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ഒരു ഫോട്ടോ തിരഞ്ഞെടുക്കുക"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ഒരു സന്ദേശം അയയ്ക്കുക"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"മെസേജ് വഴി ഫോട്ടോ അയച്ചു"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"മെസേജ് വഴി സന്ദേശം അയച്ചു"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mn/strings.xml b/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
index 62a7750..8728740 100644
--- a/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Зураг авах"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Зураг сонгоно уу"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Зурвас илгээх"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Зургийг Зурвасаар дамжуулан илгээсэн"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Зурвасыг Зурвасаар дамжуулан илгээсэн"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mr/strings.xml b/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
index e7a7190..3ca51a2 100644
--- a/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"एक फोटो घ्या"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"फोटो निवडा"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"एक संदेश पाठवा"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Messages द्वारे फोटो पाठविला"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Messages द्वारे संदेश पाठविला"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ms/strings.xml b/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
index 39ed6fa..e722b88 100644
--- a/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Ambil gambar"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Pilih foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Hantar mesej"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Photo dihantar melalui Mesej"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mesej dihantar melalui Mesej"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-my/strings.xml b/java/com/android/dialer/callcomposer/res/values-my/strings.xml
index a20dabc..b49b1ea 100644
--- a/java/com/android/dialer/callcomposer/res/values-my/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-my/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ဓာတ်ပုံတစ်ပုံ ရိုက်ရန်"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ဓာတ်ပုံတစ်ပုံ ရွေးရန်"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"မက်ဆေ့ဂျ်ပို့ရန်"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"မက်ဆေ့ဂျ်များမှတစ်ဆင့် ဓာတ်ပုံပို့ပြီးပါပြီ"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"မက်ဆေ့ဂျ်များမှတစ်ဆင့် မက်ဆေ့ဂျ်ပို့ပြီးပါပြီ"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-nb/strings.xml b/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
index cbb1acc..07caf6e 100644
--- a/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Ta et bilde"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Velg et bilde"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Send en melding"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Bildet er sendt via Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Meldingen er sendt via Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ne/strings.xml b/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
index f084dc9..03eac6c 100644
--- a/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"तस्बिर खिच्नुहोस्"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"तस्बिर छनौट गर्नुहोस्"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"सन्देश पठाउनुहोस्"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Messages मार्फत पठाइएको तस्बिर"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Messages मार्फत पठाइएको सन्देश"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-nl/strings.xml b/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
index 5511427..7a73d93 100644
--- a/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Een foto nemen"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Een foto kiezen"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Een bericht verzenden"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto verzonden via Berichten"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Bericht verzonden via Berichten"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-no/strings.xml b/java/com/android/dialer/callcomposer/res/values-no/strings.xml
index cbb1acc..07caf6e 100644
--- a/java/com/android/dialer/callcomposer/res/values-no/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-no/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Ta et bilde"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Velg et bilde"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Send en melding"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Bildet er sendt via Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Meldingen er sendt via Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pa/strings.xml b/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
index 5c20adc..25de393 100644
--- a/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ਇੱਕ ਤਸਵੀਰ ਖਿੱਚੋ"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ਇੱਕ ਫ਼ੋਟੋ ਚੁਣੋ"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"ਫ਼ੋਟੋ &quot;ਸੁਨੇਹੇ&quot; ਐਪ ਰਾਹੀਂ ਭੇਜੀ ਗਈ"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"ਸੁਨੇਹਾ &quot;ਸੁਨੇਹੇ&quot; ਐਪ ਰਾਹੀਂ ਭੇਜਿਆ ਗਿਆ"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pl/strings.xml b/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
index eea7496..b65ba23 100644
--- a/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Zrób zdjęcie"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Wybierz zdjęcie"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Wyślij wiadomość"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Zdjęcie zostało wysłane przez Wiadomości"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Tekst został wysłany przez Wiadomości"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
index 026cfac..669e850 100644
--- a/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Tirar uma foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Escolher uma foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Enviar uma mensagem"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada pelo Mensagens"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensagem enviada pelo Mensagens"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
index 1a35ce2..45411d3 100644
--- a/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Tirar uma foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Selecionar foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Enviar uma mensagem"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada através da aplicação Mensagens"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensagem enviada através da aplicação Mensagens"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
index 026cfac..669e850 100644
--- a/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Tirar uma foto"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Escolher uma foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Enviar uma mensagem"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada pelo Mensagens"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensagem enviada pelo Mensagens"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ro/strings.xml b/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
index ac55b80..cd8359f 100644
--- a/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Fotografiați"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Alegeți o fotografie"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Trimiteți un mesaj"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotografie trimisă prin Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mesaj trimis prin Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ru/strings.xml b/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
index 79d8136..1119a0e 100644
--- a/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Сделать фото"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Выбрать фото"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Отправить сообщение"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Фото отправлено через Android Сообщения"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Сообщение отправлено через Android Сообщения"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-si/strings.xml b/java/com/android/dialer/callcomposer/res/values-si/strings.xml
index 8c2b953..dfae242 100644
--- a/java/com/android/dialer/callcomposer/res/values-si/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-si/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"පින්තුරයක් ගැනීම"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ඡායාරූපයක් තේරීම"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"පණිවිඩයක් යැවීම"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Messages හරහා ඡායාරූපය යවන ලදී"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Messages හරහා පණිවිඩය යවන ලදී"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sk/strings.xml b/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
index ee062c4..f54c73e 100644
--- a/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Odfotiť"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Vybrať fotku"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Odoslať správu"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotka bola odoslaná prostredníctvom Správ"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Správa bola odoslaná prostredníctvom Správ"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sl/strings.xml b/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
index 9d57cfd..010ad07 100644
--- a/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Posnemi fotografijo"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Izberi fotografijo"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Pošlji sporočilo"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotografija je bila poslana prek aplikacije Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Sporočilo je bila poslano prek aplikacije Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sq/strings.xml b/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
index 7209942..b106d5a 100644
--- a/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Bëj një fotografi"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Zgjidh një fotografi"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Dërgo një mesazh"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotografia u dërgua nëpërmjet \"Mesazheve\""</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mesazhi u dërgua nëpërmjet \"Mesazheve\""</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sr/strings.xml b/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
index 1eafcb7..2b85628 100644
--- a/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Сликајте"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Изаберите слику"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Пошаљите поруку"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Слика је послата преко Messages-а"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Порука је послата преко Messages-а"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sv/strings.xml b/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
index 787d865..e60bbe9 100644
--- a/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Ta en bild"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Välj ett foto"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Skicka ett meddelande"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotot har skickats via Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Meddelandet har skickats via Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sw/strings.xml b/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
index d33ff31..f67c899 100644
--- a/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Piga picha"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Chagua picha"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Tuma ujumbe"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Picha imetumwa kupitia Programu ya Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Ujumbe umetumwa kupitia Programu ya Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ta/strings.xml b/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
index 37c0193..ae59b3d 100644
--- a/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"படமெடுக்கவும்"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"புகைப்படத்தைத் தேர்வு செய்யும்"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"செய்தியை அனுப்பும்"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"மெசேஜஸ் மூலம் படம் அனுப்பப்பட்டது"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"மெசேஜஸ் மூலம் செய்தி அனுப்பப்பட்டது"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-te/strings.xml b/java/com/android/dialer/callcomposer/res/values-te/strings.xml
index 5480370..01d0910 100644
--- a/java/com/android/dialer/callcomposer/res/values-te/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-te/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"చిత్రాన్ని తీస్తుంది"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ఫోటోను ఎంచుకోండి"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"సందేశాన్ని పంపుతుంది"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"సందేశాల అనువర్తనం ద్వారా ఫోటోను పంపాము"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"సందేశాల అనువర్తనం ద్వారా సందేశాన్ని పంపాము"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-th/strings.xml b/java/com/android/dialer/callcomposer/res/values-th/strings.xml
index 9d98d56..53dbaea 100644
--- a/java/com/android/dialer/callcomposer/res/values-th/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-th/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"ถ่ายภาพ"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"เลือกรูปภาพ"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"ส่งข้อความ"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"ส่งรูปภาพผ่าน Messages แล้ว"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"ส่งข้อความผ่าน Messages แล้ว"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-tl/strings.xml b/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
index 5bba942..910d907 100644
--- a/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Kumuha ng larawan"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Pumili ng larawan"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Magpadala ng mensahe"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Larawang ipinadala sa pamamagitan ng Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mensaheng ipinadala sa pamamagitan ng Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-tr/strings.xml b/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
index cfb8bfb..51069ea 100644
--- a/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Resim çeker"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Fotoğraf seçilmesini sağlar"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Mesaj gönderir"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Fotoğraf, Mesajlar uygulaması üzerinden gönderildi"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Mesaj, Mesajlar uygulaması üzerinden gönderildi"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-uk/strings.xml b/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
index 4cb1a2d..57ee722 100644
--- a/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Зробити знімок"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Вибрати фотографію"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Надіслати повідомлення"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Фотографію надіслано через додаток Повідомлення"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Текст надіслано через додаток Повідомлення"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ur/strings.xml b/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
index c665cfb..28d79b8 100644
--- a/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"تصویر لیں"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"ایک تصویر چنیں"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"پیغام بھیجیں"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"تصویر پیغامات کے ذریعے بھیجی گئی"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"پیغام پیغامات کے ذریعے بھیجا گیا"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-uz/strings.xml b/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
index 0237ab9..a3c7346 100644
--- a/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Rasmga olish"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Rasm tanlash"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Xabar yuborish"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Rasm Android Xabarlar orqali yuborildi"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Xabar Android Xabarlar orqali yuborildi"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-vi/strings.xml b/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
index d617cfb..7be47a0 100644
--- a/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Chụp ảnh"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Chọn ảnh"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Gửi tin nhắn"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Đã gửi ảnh qua Messages"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Đã gửi tin nhắn qua Messages"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
index 97017d6..39ace9d 100644
--- a/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"拍照"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"选择一张照片"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"发送信息"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"已通过“信息”应用发送照片"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"已通过“信息”应用发送短信"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
index b191949..87052ff 100644
--- a/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"拍照"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"選擇相片"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"傳送訊息"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"已透過「訊息」傳送相片"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"已透過「訊息」傳送訊息"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
index ef2cd9d..51cc8f6 100644
--- a/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"拍攝相片"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"選擇相片"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"傳送訊息"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"透過訊息應用程式傳送的相片"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"透過訊息應用程式傳送的訊息"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zu/strings.xml b/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
index 09845f6..3e2db44 100644
--- a/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
@@ -33,6 +33,8 @@
<string name="description_call_composer_camera" msgid="388088245837924914">"Thatha isithombe"</string>
<string name="description_call_composer_photo" msgid="6449208314952246454">"Khetha isithombe"</string>
<string name="description_call_composer_message" msgid="9132362446000908550">"Thumela umlayezo"</string>
- <string name="image_sent_messages" msgid="6520870555040566229">"Isithombe sithunyelwe ngemilayezo"</string>
- <string name="message_sent_messages" msgid="6286576951151541098">"Umlayezo uthunyelwe ngemilayezo"</string>
+ <!-- no translation found for image_sent_messages (6520870555040566229) -->
+ <skip />
+ <!-- no translation found for message_sent_messages (6286576951151541098) -->
+ <skip />
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values/dimens.xml b/java/com/android/dialer/callcomposer/res/values/dimens.xml
index 083bd0a..798c46f 100644
--- a/java/com/android/dialer/callcomposer/res/values/dimens.xml
+++ b/java/com/android/dialer/callcomposer/res/values/dimens.xml
@@ -15,15 +15,15 @@
~ limitations under the License
-->
<resources>
- <dimen name="call_composer_view_pager_height">306dp</dimen>
+ <dimen name="call_composer_view_pager_height">292dp</dimen>
<!-- Contact bar -->
<dimen name="call_composer_contact_photo_border_thickness">2dp</dimen>
- <dimen name="call_composer_contact_photo_size">116dp</dimen>
- <dimen name="call_composer_contact_container_margin_top">58dp</dimen>
- <dimen name="call_composer_contact_container_padding_top">58dp</dimen>
- <dimen name="call_composer_contact_container_padding_bottom">18dp</dimen>
- <dimen name="call_composer_name_text_size">32sp</dimen>
+ <dimen name="call_composer_contact_photo_size">112dp</dimen>
+ <dimen name="call_composer_contact_container_margin_top">56dp</dimen>
+ <dimen name="call_composer_contact_container_padding_top">56dp</dimen>
+ <dimen name="call_composer_contact_container_padding_bottom">16dp</dimen>
+ <dimen name="call_composer_name_text_size">28sp</dimen>
<dimen name="call_composer_number_text_size">16sp</dimen>
<dimen name="call_composer_contact_container_elevation">2dp</dimen>
diff --git a/java/com/android/dialer/callcomposer/res/values/styles.xml b/java/com/android/dialer/callcomposer/res/values/styles.xml
index 16e7fb6..a03ee48 100644
--- a/java/com/android/dialer/callcomposer/res/values/styles.xml
+++ b/java/com/android/dialer/callcomposer/res/values/styles.xml
@@ -34,7 +34,8 @@
<style name="message_composer_textview">
<item name="android:textSize">@dimen/message_compose_item_text_size</item>
<item name="android:textColor">@color/dialer_primary_text_color</item>
- <item name="android:padding">@dimen/message_composer_item_padding</item>
+ <item name="android:paddingStart">@dimen/message_composer_item_padding</item>
+ <item name="android:paddingEnd">@dimen/message_composer_item_padding</item>
<item name="android:background">@drawable/item_background_material_light</item>
<item name="android:gravity">center_vertical</item>
</style>
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
index 48e9b69..66a736c 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
@@ -26,6 +26,7 @@
import com.android.dialer.calllogutils.CallTypeHelper;
import com.android.dialer.common.Assert;
import com.android.dialer.dialercontact.DialerContact;
+import com.android.dialer.lightbringer.LightbringerComponent;
import java.util.List;
/** Adapter for RecyclerView in {@link CallDetailsActivity}. */
@@ -48,7 +49,9 @@
this.contact = Assert.isNotNull(contact);
this.callDetailsEntries = callDetailsEntries;
this.listener = listener;
- callTypeHelper = new CallTypeHelper(context.getResources());
+ callTypeHelper =
+ new CallTypeHelper(
+ context.getResources(), LightbringerComponent.get(context).getLightbringer());
}
@Override
diff --git a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
index 204e407..9c592fc 100644
--- a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
@@ -56,7 +56,7 @@
private final ImageView multimediaImage;
- // TODO: Display this when location is stored - b/36160042
+ // TODO(maxwelb): Display this when location is stored - b/36160042
@SuppressWarnings("unused")
private final TextView multimediaAttachmentsNumber;
@@ -91,6 +91,7 @@
boolean isPulledCall =
(entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY)
== Calls.FEATURES_PULLED_EXTERNALLY;
+ boolean isLightbringerCall = entry.getIsLightbringerCall();
callTime.setTextColor(getColorForCallType(context, callType));
callTypeIcon.clear();
@@ -100,7 +101,8 @@
callTypeIcon.setShowWifi(
MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.getFeatures()));
- callTypeText.setText(callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall));
+ callTypeText.setText(
+ callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall, isLightbringerCall));
callTime.setText(CallEntryFormatter.formatDate(context, entry.getDate()));
if (CallTypeHelper.isMissedCallType(callType)) {
callDuration.setVisibility(View.GONE);
diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
index ea12c4f..410a3a0 100644
--- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
@@ -25,10 +25,10 @@
import android.view.View.OnClickListener;
import android.widget.QuickContactBadge;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.InteractionEvent;
diff --git a/java/com/android/dialer/calldetails/proto/call_details_entries.proto b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
index 18bc931..587fd35 100644
--- a/java/com/android/dialer/calldetails/proto/call_details_entries.proto
+++ b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
@@ -18,6 +18,7 @@
optional int64 duration = 5;
optional int64 data_usage = 6;
repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7;
+ optional bool is_lightbringer_call = 8;
}
repeated CallDetailsEntry entries = 1;
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 0911291..b01a6cc 100644
--- a/java/com/android/dialer/calldetails/res/layout/contact_container.xml
+++ b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
@@ -31,8 +31,7 @@
android:layout_height="@dimen/call_details_contact_photo_size"
android:layout_centerVertical="true"
android:padding="@dimen/call_details_contact_photo_padding"
- android:focusable="true"
- android:contentDescription="@string/description_quick_contact_for"/>
+ android:focusable="true"/>
<LinearLayout
android:orientation="vertical"
diff --git a/java/com/android/dialer/calldetails/res/values-uz/strings.xml b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
index 57f0526..4f38cab 100644
--- a/java/com/android/dialer/calldetails/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
@@ -20,7 +20,7 @@
<string name="call_details" msgid="5063658079729839605">"Chaqiruv tafsilotlari"</string>
<string name="delete" msgid="2141020674108406737">"O‘chirib tashlash"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Raqamni nusxalash"</string>
- <string name="call_details_edit_number" msgid="8718476514903513624">"Chaqiruvdan oldin raqamni tahrirlash"</string>
+ <string name="call_details_edit_number" msgid="8718476514903513624">"Qo‘ng‘iroq qilishdan oldin raqamni tahrirlash"</string>
<string name="call_details_report_call_id" msgid="8857541295264421217">"Raqamdagi xatolik haqida xabar berish"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Rasm yuborildi"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Rasm qabul qilindi"</string>
diff --git a/java/com/android/dialer/callintent/call_initiation_type.proto b/java/com/android/dialer/callintent/call_initiation_type.proto
index 318da9c..32e4e49 100644
--- a/java/com/android/dialer/callintent/call_initiation_type.proto
+++ b/java/com/android/dialer/callintent/call_initiation_type.proto
@@ -8,6 +8,7 @@
package com.android.dialer.callintent;
+
// Different ways a call can be initiated.
message CallInitiationType {
enum Type {
diff --git a/java/com/android/dialer/callintent/speed_dial_contact_type.proto b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
index 588eadf..ecb1c3f 100644
--- a/java/com/android/dialer/callintent/speed_dial_contact_type.proto
+++ b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
@@ -8,6 +8,7 @@
package com.android.dialer.callintent;
+
// The type of speed call contact (favorites). Applies to initiation type
// SPEED_DIAL only.
message SpeedDialContactType {
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index 887dfcb..5f48d7b 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -68,7 +68,7 @@
long startTime = System.currentTimeMillis();
db.execSQL(CREATE_TABLE_SQL);
db.execSQL(String.format(Locale.US, CREATE_TRIGGER_SQL, maxRows, maxRows));
- // TODO: Consider logging impression.
+ // TODO(zachh): Consider logging impression.
LogUtil.i(
"AnnotatedCallLogDatabaseHelper.onCreate",
"took: %dms",
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
index 5683687..23ddc9c 100644
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ b/java/com/android/dialer/calllog/database/Coalescer.java
@@ -129,7 +129,7 @@
*/
private static boolean rowsShouldBeCombined(
DialerPhoneNumberUtil dialerPhoneNumberUtil, ContentValues row1, ContentValues row2) {
- // TODO: Real implementation.
+ // TODO(zachh): Real implementation.
DialerPhoneNumber number1;
DialerPhoneNumber number2;
try {
diff --git a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
index 82a8523..db74215 100644
--- a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
@@ -39,7 +39,7 @@
public boolean isDirty(Context appContext) {
Assert.isWorkerThread();
- // TODO: Implementation.
+ // TODO(zachh): Implementation.
return false;
}
@@ -49,7 +49,7 @@
Context appContext,
CallLogMutations mutations) {
Assert.isWorkerThread();
- // TODO: Implementation.
+ // TODO(zachh): Implementation.
for (ContentValues contentValues : mutations.getInserts().values()) {
contentValues.put(AnnotatedCallLog.CONTACT_NAME, "Placeholder name");
}
@@ -57,12 +57,12 @@
@Override
public void onSuccessfulFill(Context appContext) {
- // TODO: Implementation.
+ // TODO(zachh): Implementation.
}
@Override
public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
- // TODO: Implementation.
+ // TODO(zachh): Implementation.
return new RowCombiner(individualRowsSortedByTimestampDesc)
.useSingleValueString(AnnotatedCallLog.CONTACT_NAME)
.combine();
@@ -72,6 +72,6 @@
@Override
public void registerContentObservers(
Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
- // TODO: Guard against missing permissions during callback registration.
+ // TODO(zachh): 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 f206328..86145a9 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -143,7 +143,7 @@
@Override
public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
- // TODO: Complete implementation.
+ // TODO(zachh): Complete implementation.
ContentValues coalescedValues =
new RowCombiner(individualRowsSortedByTimestampDesc)
.useMostRecentLong(AnnotatedCallLog.TIMESTAMP)
@@ -182,7 +182,7 @@
DialerPhoneNumberUtil dialerPhoneNumberUtil =
new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance());
- // TODO: Really should be getting last 1000 by timestamp, not by last modified.
+ // TODO(zachh): Really should be getting last 1000 by timestamp, not by last modified.
try (Cursor cursor =
appContext
.getContentResolver()
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
index 712f7cf..17fcf19 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -92,7 +92,7 @@
CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
callLogFramework.attachUi(this);
- // TODO: Consider doing this when fragment becomes visible.
+ // TODO(zachh): Consider doing this when fragment becomes visible.
checkAnnotatedCallLogDirtyAndRefreshIfNecessary();
}
@@ -142,7 +142,7 @@
public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
LogUtil.enterBlock("NewCallLogFragment.onLoadFinished");
- // TODO: Handle empty cursor by showing empty view.
+ // TODO(zachh): Handle empty cursor by showing empty view.
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(new NewCallLogAdapter(newCursor));
}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 4c459e1..9521a03 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -24,7 +24,7 @@
/** {@link RecyclerView.ViewHolder} for the new call log. */
final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
- // TODO: Format correctly using current locale.
+ // TODO(zachh): Format correctly using current locale.
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
private final TextView contactNameView;
diff --git a/java/com/android/dialer/calllogutils/CallTypeHelper.java b/java/com/android/dialer/calllogutils/CallTypeHelper.java
index d3b5b67..783f799 100644
--- a/java/com/android/dialer/calllogutils/CallTypeHelper.java
+++ b/java/com/android/dialer/calllogutils/CallTypeHelper.java
@@ -18,6 +18,7 @@
import android.content.res.Resources;
import com.android.dialer.compat.AppCompatConstants;
+import com.android.dialer.lightbringer.Lightbringer;
/** Helper class to perform operations related to call types. */
public class CallTypeHelper {
@@ -50,8 +51,12 @@
private final CharSequence mBlockedName;
/** Name used to identify calls which were answered on another device. */
private final CharSequence mAnsweredElsewhereName;
+ /** Name used to identify incoming lightbringer calls. */
+ private final CharSequence mIncomingLightbringerCall;
+ /** Name used to identify outgoing lightbringer calls. */
+ private final CharSequence mOutgoingLightbringerCall;
- public CallTypeHelper(Resources resources) {
+ public CallTypeHelper(Resources resources, Lightbringer lightbringer) {
// Cache these values so that we do not need to look them up each time.
mIncomingName = resources.getString(R.string.type_incoming);
mIncomingPulledName = resources.getString(R.string.type_incoming_pulled);
@@ -67,6 +72,18 @@
mRejectedName = resources.getString(R.string.type_rejected);
mBlockedName = resources.getString(R.string.type_blocked);
mAnsweredElsewhereName = resources.getString(R.string.type_answered_elsewhere);
+
+ if (lightbringer.getIncomingCallTypeText() != -1) {
+ mIncomingLightbringerCall = resources.getString(lightbringer.getIncomingCallTypeText());
+ } else {
+ mIncomingLightbringerCall = mIncomingVideoName;
+ }
+
+ if (lightbringer.getOutgoingCallTypeText() != -1) {
+ mOutgoingLightbringerCall = resources.getString(lightbringer.getOutgoingCallTypeText());
+ } else {
+ mOutgoingLightbringerCall = mOutgoingVideoName;
+ }
}
public static boolean isMissedCallType(int callType) {
@@ -77,13 +94,17 @@
}
/** Returns the text used to represent the given call type. */
- public CharSequence getCallTypeText(int callType, boolean isVideoCall, boolean isPulledCall) {
+ public CharSequence getCallTypeText(
+ int callType, boolean isVideoCall, boolean isPulledCall, boolean isLightbringerCall) {
switch (callType) {
case AppCompatConstants.CALLS_INCOMING_TYPE:
if (isVideoCall) {
if (isPulledCall) {
return mIncomingVideoPulledName;
} else {
+ if (isLightbringerCall) {
+ return mIncomingLightbringerCall;
+ }
return mIncomingVideoName;
}
} else {
@@ -99,6 +120,9 @@
if (isPulledCall) {
return mOutgoingVideoPulledName;
} else {
+ if (isLightbringerCall) {
+ return mOutgoingLightbringerCall;
+ }
return mOutgoingVideoName;
}
} else {
diff --git a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
index 39afb6d..617d6d8 100644
--- a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"ث"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="zero">ثوان</item>
<item quantity="two">ثانيتان</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-az/strings.xml b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
index 0efe1e8..c280c8e 100644
--- a/java/com/android/dialer/calllogutils/res/values-az/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"san"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">saniyə</item>
<item quantity="one">saniyə</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-da/strings.xml b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
index 21c6e0e..123002a 100644
--- a/java/com/android/dialer/calllogutils/res/values-da/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek."</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\' <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\' <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\' <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="one">sekund</item>
<item quantity="other">sekunder</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-de/strings.xml b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
index 4d6f416..5867b73 100644
--- a/java/com/android/dialer/calllogutils/res/values-de/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other"> Sekunden</item>
<item quantity="one"> Sekunde</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
index 7ab37c5..a097ec8 100644
--- a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
@@ -34,7 +34,7 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> eta <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' \'eta\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' eta <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">segundo</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
index b9a6241..d20e88e 100644
--- a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"से."</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="one">सेकंड</item>
<item quantity="other">सेकंड</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
index 1ab041a..2f29855 100644
--- a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
@@ -34,7 +34,7 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"שנ\'"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> ו-<xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' ו-<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="two">שניות</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
index 76d389e..f758dab 100644
--- a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
@@ -35,7 +35,7 @@
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">секундалар</item>
<item quantity="one">секунда</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
index 9a7513b..c01f7c1 100644
--- a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"से"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="one">सेकंद</item>
<item quantity="other">सेकंद</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
index 4ec963d..2f74403 100644
--- a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek."</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">sekunder</item>
<item quantity="one">sekund</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
index 5239928..d156109 100644
--- a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">seconden</item>
<item quantity="one">seconde</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-no/strings.xml b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
index 4ec963d..2f74403 100644
--- a/java/com/android/dialer/calllogutils/res/values-no/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek."</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">sekunder</item>
<item quantity="one">sekund</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
index ba526a8..8c13e81 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="one"> segundo</item>
<item quantity="other"> segundos</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
index adb5dac..e24d245 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"seg"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>, <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\', <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\", <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="one">seconds</item>
<item quantity="other">segundos</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
index ba526a8..8c13e81 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="one"> segundo</item>
<item quantity="other"> segundos</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
index 46217e7..5a5a690 100644
--- a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek"</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\'<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">Sekunde</item>
<item quantity="one">Sekunde</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
index 93cf690..78e0b5b 100644
--- a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
@@ -34,8 +34,8 @@
<string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sn."</string>
<string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
<string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
- <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
- <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+ <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+ <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
<plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
<item quantity="other">saniye</item>
<item quantity="one">saniye</item>
diff --git a/java/com/android/dialer/common/AndroidManifest.xml b/java/com/android/dialer/common/AndroidManifest.xml
index ae43d66..8892b58 100644
--- a/java/com/android/dialer/common/AndroidManifest.xml
+++ b/java/com/android/dialer/common/AndroidManifest.xml
@@ -1,3 +1,18 @@
+<!--
+ ~ 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.dialer.common">
</manifest>
diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
index 82e517d..a87bbce 100644
--- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
@@ -166,17 +166,7 @@
});
private static final Executor defaultParallelExecutor =
- Executors.newFixedThreadPool(
- 5,
- new ThreadFactory() {
- @Override
- public Thread newThread(Runnable runnable) {
- LogUtil.i("NonUiTaskBuilder.newThread", "creating parallel thread");
- Thread thread = new Thread(runnable, "NonUiTaskBuilder-Parallel");
- thread.setPriority(4); // Corresponds to Process.THREAD_PRIORITY_BACKGROUND
- return thread;
- }
- });
+ DialerExecutors.getLowPriorityThreadPool();
NonUiTaskBuilder(Worker<InputT, OutputT> worker) {
this(worker, defaultSerialExecutorService, defaultParallelExecutor);
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java
index 148d866..81b3c5c 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutors.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java
@@ -19,7 +19,11 @@
import android.app.FragmentManager;
import android.support.annotation.NonNull;
import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
/**
* Factory methods for creating {@link DialerExecutor} objects for doing background work.
@@ -131,4 +135,27 @@
@NonNull Worker<InputT, OutputT> worker) {
return new DefaultDialerExecutorFactory().createNonUiTaskBuilder(Assert.isNotNull(worker));
}
+
+ private static final Executor lowPriorityThreadPool =
+ Executors.newFixedThreadPool(
+ 5,
+ new ThreadFactory() {
+ @Override
+ public Thread newThread(Runnable runnable) {
+ LogUtil.i("DialerExecutors.newThread", "creating low priority thread");
+ Thread thread = new Thread(runnable, "DialerExecutors-LowPriority");
+ thread.setPriority(4); // Corresponds to Process.THREAD_PRIORITY_BACKGROUND
+ return thread;
+ }
+ });
+
+ /**
+ * An application-wide thread pool used for low priority (non-UI) tasks.
+ *
+ * <p>This exists to prevent each individual dialer component from having to create its own
+ * threads/pools, which would result in the application having more threads than really necessary.
+ */
+ public static Executor getLowPriorityThreadPool() {
+ return lowPriorityThreadPool;
+ }
}
diff --git a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java b/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
index 6d02fe6..c7a7f36 100644
--- a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
+++ b/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
@@ -30,7 +30,9 @@
* @param <ParamsT> the type of the parameters sent to the task upon execution
* @param <ProgressT> the type of the progress units published during the background computation
* @param <ResultT> the type of the result of the background computation
+ * @deprecated Please use {@link DialerExecutors}.
*/
+@Deprecated
public abstract class FallibleAsyncTask<ParamsT, ProgressT, ResultT>
extends AsyncTask<ParamsT, ProgressT, FallibleTaskResult<ResultT>> {
diff --git a/java/com/android/dialer/common/database/Selection.java b/java/com/android/dialer/common/database/Selection.java
new file mode 100644
index 0000000..b61472d
--- /dev/null
+++ b/java/com/android/dialer/common/database/Selection.java
@@ -0,0 +1,260 @@
+/*
+ * 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.common.database;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import com.android.dialer.common.Assert;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Utility to build SQL selections. Handles string concatenation, nested statements, empty
+ * statements, and tracks the selection arguments.
+ *
+ * <p>A selection can be build from a string, factory methods like {@link #column(String)}, or use
+ * {@link Builder} to build complex nested selection with multiple operators. The Selection manages
+ * the {@code selection} and {@code selectionArgs} passed into {@link
+ * android.content.ContentResolver#query(android.net.Uri, String[], String, String[], String)}.
+ *
+ * <p>Example:
+ *
+ * <pre><code>
+ * fromString("foo = 1")
+ * </code></pre>
+ *
+ * expands into "(foo = 1)", {}
+ *
+ * <p>
+ *
+ * <pre><code>
+ * column("foo").is("LIKE", "bar")
+ * </code></pre>
+ *
+ * expands into "(foo LIKE ?)", {"bar"}
+ *
+ * <p>
+ *
+ * <pre><code>
+ * builder()
+ * .and(
+ * fromString("foo = ?", "1").buildUpon()
+ * .or(column("bar").is("<", 2))
+ * .build())
+ * .and(not(column("baz").is("!= 3")))
+ * .build();
+ * </code></pre>
+ *
+ * expands into "(((foo = ?) OR (bar < ?)) AND (NOT (baz != 3)))", {"1", "2"}
+ */
+public final class Selection {
+
+ private final String selection;
+ private final String[] selectionArgs;
+
+ private Selection(@NonNull String selection, @NonNull String[] selectionArgs) {
+ this.selection = selection;
+ this.selectionArgs = selectionArgs;
+ }
+
+ @NonNull
+ public String getSelection() {
+ return selection;
+ }
+
+ @NonNull
+ public String[] getSelectionArgs() {
+ return selectionArgs;
+ }
+
+ public boolean isEmpty() {
+ return selection.isEmpty();
+ }
+
+ /**
+ * @return a mutable builder that appends to the selection. The selection will be parenthesized
+ * before anything is appended to it.
+ */
+ @NonNull
+ public Builder buildUpon() {
+ return new Builder(this);
+ }
+
+ /** @return a builder that is empty. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * @return a Selection built from regular selection string/args pair. The result selection will be
+ * enclosed in a parenthesis.
+ */
+ @NonNull
+ public static Selection fromString(@Nullable String selection, @Nullable String... args) {
+ return new Builder(selection, args).build();
+ }
+
+ /** @return a selection that is negated */
+ @NonNull
+ public static Selection not(@NonNull Selection selection) {
+ Assert.checkArgument(!selection.isEmpty());
+ return fromString("NOT " + selection.getSelection(), selection.getSelectionArgs());
+ }
+
+ /**
+ * Build a selection based on condition upon a column. is() should be called to complete the
+ * selection.
+ */
+ @NonNull
+ public static Column column(@NonNull String column) {
+ return new Column(column);
+ }
+
+ /** Helper class to build a selection based on condition upon a column. */
+ public static class Column {
+
+ @NonNull private final String column;
+
+ private Column(@NonNull String column) {
+ this.column = Assert.isNotNull(column);
+ }
+
+ /** Expands to "<column> <operator> ?" and add {@code value} to the arguments. */
+ @NonNull
+ public Selection is(@NonNull String operator, @NonNull Object value) {
+ return fromString(column + " " + Assert.isNotNull(operator) + " ?", value.toString());
+ }
+
+ /**
+ * Expands to "<column> <operator>". {@link #is(String, Object)} should be used if the condition
+ * is comparing to a string or a user input value, which must be sanitized.
+ */
+ @NonNull
+ public Selection is(@NonNull String condition) {
+ return fromString(column + " " + Assert.isNotNull(condition));
+ }
+ }
+
+ /** Builder for {@link Selection} */
+ public static final class Builder {
+
+ private final StringBuilder selection = new StringBuilder();
+ private final List<String> selectionArgs = new ArrayList<>();
+
+ private Builder() {}
+
+ private Builder(@Nullable String selection, @Nullable String... args) {
+ if (selection == null) {
+ return;
+ }
+ checkArgsCount(selection, args);
+ this.selection.append(parenthesized(selection));
+ if (args != null) {
+ Collections.addAll(selectionArgs, args);
+ }
+ }
+
+ private Builder(@NonNull Selection selection) {
+ this.selection.append(selection.getSelection());
+ Collections.addAll(selectionArgs, selection.selectionArgs);
+ }
+
+ @NonNull
+ public Selection build() {
+ if (selection.length() == 0) {
+ return new Selection("", new String[] {});
+ }
+ return new Selection(
+ parenthesized(selection.toString()),
+ selectionArgs.toArray(new String[selectionArgs.size()]));
+ }
+
+ @NonNull
+ public Builder and(@NonNull Selection selection) {
+ if (selection.isEmpty()) {
+ return this;
+ }
+
+ if (this.selection.length() > 0) {
+ this.selection.append(" AND ");
+ }
+ this.selection.append(selection.getSelection());
+ Collections.addAll(selectionArgs, selection.getSelectionArgs());
+ return this;
+ }
+
+ @NonNull
+ public Builder or(@NonNull Selection selection) {
+ if (selection.isEmpty()) {
+ return this;
+ }
+
+ if (this.selection.length() > 0) {
+ this.selection.append(" OR ");
+ }
+ this.selection.append(selection.getSelection());
+ Collections.addAll(selectionArgs, selection.getSelectionArgs());
+ return this;
+ }
+
+ private static void checkArgsCount(@NonNull String selection, @Nullable String... args) {
+ int argsInSelection = 0;
+ for (int i = 0; i < selection.length(); i++) {
+ if (selection.charAt(i) == '?') {
+ argsInSelection++;
+ }
+ }
+ Assert.checkArgument(argsInSelection == (args == null ? 0 : args.length));
+ }
+ }
+
+ /**
+ * Parenthesized the {@code string}. Will not parenthesized if {@code string} is empty or is
+ * already parenthesized (top level parenthesis encloses the whole string).
+ */
+ @NonNull
+ private static String parenthesized(@NonNull String string) {
+ if (string.isEmpty()) {
+ return "";
+ }
+ if (!string.startsWith("(")) {
+ return "(" + string + ")";
+ }
+ int depth = 1;
+ for (int i = 1; i < string.length() - 1; i++) {
+ switch (string.charAt(i)) {
+ case '(':
+ depth++;
+ break;
+ case ')':
+ depth--;
+ if (depth == 0) {
+ // First '(' closed before the string has ended,need an additional level of nesting.
+ // For example "(A) AND (B)" should become "((A) AND (B))"
+ return "(" + string + ")";
+ }
+ break;
+ default:
+ continue;
+ }
+ }
+ Assert.checkArgument(depth == 1);
+ return string;
+ }
+}
diff --git a/java/com/android/dialer/common/res/values/strings.xml b/java/com/android/dialer/common/res/values/strings.xml
index 8e96161..770f42f 100644
--- a/java/com/android/dialer/common/res/values/strings.xml
+++ b/java/com/android/dialer/common/res/values/strings.xml
@@ -1,4 +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>
<string name="network_name_wifi">Wifi</string>
<string name="network_name_mobile">Mobile</string>
diff --git a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
similarity index 87%
rename from java/com/android/contacts/common/compat/TelephonyManagerCompat.java
rename to java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
index 02113ca..22ec70c 100644
--- a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java
+++ b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.contacts.common.compat;
+package com.android.dialer.compat.telephony;
import android.content.Context;
import android.content.Intent;
@@ -32,7 +32,7 @@
public class TelephonyManagerCompat {
- // TODO: Use public API for these constants when available
+ // TODO(maxwelb): Use public API for these constants when available
public static final String EVENT_HANDOVER_VIDEO_FROM_WIFI_TO_LTE =
"android.telephony.event.EVENT_HANDOVER_VIDEO_FROM_WIFI_TO_LTE";
public static final String EVENT_HANDOVER_TO_WIFI_FAILED =
@@ -50,6 +50,23 @@
private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
+ // TODO(erfanian): b/63995261 Replace with the platform/telecom constant when available.
+ /**
+ * Indicates that the call being placed originated from a known contact.
+ *
+ * <p>This signals to the telephony platform that an outgoing call qualifies for assisted dialing.
+ */
+ public static final String ALLOW_ASSISTED_DIAL = "android.telecom.extra.ALLOW_ASSISTED_DIAL";
+
+ // TODO(erfanian): b/63995261 Replace with the platform/telecom constant when available.
+ /**
+ * Indicates that an outgoing call has undergone assisted dialing.
+ *
+ * <p>Unlike {@link ALLOW_ASSISTED_DIAL}, the presence of this key further indicates that a call
+ * has undergone Assisted Dialing -- not just that it qualified for Assisted Dialing.
+ */
+ public static final String IS_ASSISTED_DIALED = "android.telecom.extra.IS_ASSISTED_DIALED";
+
/**
* Returns the number of phones available. Returns 1 for Single standby mode (Single SIM
* functionality) Returns 2 for Dual standby mode.(Dual SIM functionality)
@@ -120,7 +137,7 @@
}
/**
- * This method uses a new system API to enable or disable visual voicemail. TODO: restrict
+ * This method uses a new system API to enable or disable visual voicemail. TODO(twyen): restrict
* to N MR1, not needed in future SDK.
*/
public static void setVisualVoicemailEnabled(
@@ -138,7 +155,7 @@
}
/**
- * This method uses a new system API to check if visual voicemail is enabled TODO: restrict
+ * This method uses a new system API to check if visual voicemail is enabled TODO(twyen): restrict
* to N MR1, not needed in future SDK.
*/
public static boolean isVisualVoicemailEnabled(
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
index fad25a4..6ee4695 100644
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
+++ b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
@@ -20,11 +20,11 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
-import android.os.StrictMode;
import android.support.annotation.Nullable;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.inject.ApplicationContext;
+import com.android.dialer.strictmode.DialerStrictMode;
import com.android.dialer.util.DialerUtils;
import javax.inject.Inject;
@@ -95,37 +95,26 @@
@Override
public String getString(String key, String defaultValue) {
- return bypassStrictMode(
+ // Reading shared prefs on the main thread is generally safe since a single instance is cached.
+ return DialerStrictMode.bypass(
() -> getSharedPrefs(appContext).getString(PREF_PREFIX + key, defaultValue));
}
@Override
public long getLong(String key, long defaultValue) {
- return bypassStrictMode(
+ // Reading shared prefs on the main thread is generally safe since a single instance is cached.
+ return DialerStrictMode.bypass(
() -> getSharedPrefs(appContext).getLong(PREF_PREFIX + key, defaultValue));
}
@Override
public boolean getBoolean(String key, boolean defaultValue) {
- return bypassStrictMode(
+ // Reading shared prefs on the main thread is generally safe since a single instance is cached.
+ return DialerStrictMode.bypass(
() -> getSharedPrefs(appContext).getBoolean(PREF_PREFIX + key, defaultValue));
}
private static SharedPreferences getSharedPrefs(Context appContext) {
return DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(appContext);
}
-
- private interface Provider<T> {
- T get();
- }
-
- // Reading shared prefs on the main thread is generally safe since a single instance is cached.
- private static <T> T bypassStrictMode(Provider<T> provider) {
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
- try {
- return provider.get();
- } finally {
- StrictMode.setThreadPolicy(oldPolicy);
- }
- }
}
diff --git a/java/com/android/dialer/constants/Constants.java b/java/com/android/dialer/constants/Constants.java
index 076393e..f9d07e3 100644
--- a/java/com/android/dialer/constants/Constants.java
+++ b/java/com/android/dialer/constants/Constants.java
@@ -16,6 +16,7 @@
package com.android.dialer.constants;
+import android.content.Context;
import android.support.annotation.NonNull;
import com.android.dialer.common.Assert;
import com.android.dialer.proguard.UsedByReflection;
@@ -56,5 +57,7 @@
@NonNull
public abstract String getAnnotatedCallLogProviderAuthority();
+ public abstract String getUserAgent(Context context);
+
protected Constants() {}
}
diff --git a/java/com/android/dialer/constants/TrafficStatsTags.java b/java/com/android/dialer/constants/TrafficStatsTags.java
index 13c3e2c..1eca784 100644
--- a/java/com/android/dialer/constants/TrafficStatsTags.java
+++ b/java/com/android/dialer/constants/TrafficStatsTags.java
@@ -18,12 +18,16 @@
/** Registry of tags for {@link android.net.TrafficStats#setThreadStatsTag(int)} */
public class TrafficStatsTags {
- public static final int CONTACT_PHOTO_DOWNLOAD_TAG = 0x0001;
- public static final int NEARBY_PLACES_TAG = 0xaaaa;
- public static final int REVERSE_LOOKUP_CONTACT_TAG = 0xbaaa;
- public static final int REVERSE_LOOKUP_IMAGE_TAG = 0xbaab;
- public static final int DOWNLOAD_LOCATION_MAP_TAG = 0xd000;
- public static final int REVERSE_GEOCODE_TAG = 0xd001;
- public static final int VISUAL_VOICEMAIL_TAG = 0xd002;
- public static final int DIALER_VOIP_TAG = 0xd003;
+ public static final int CONTACT_PHOTO_DOWNLOAD_TAG = 0x00000001;
+ public static final int NEARBY_PLACES_TAG = 0x00000002;
+ public static final int REVERSE_LOOKUP_CONTACT_TAG = 0x00000003;
+ public static final int REVERSE_LOOKUP_IMAGE_TAG = 0x00000004;
+ public static final int DOWNLOAD_LOCATION_MAP_TAG = 0x00000005;
+ public static final int REVERSE_GEOCODE_TAG = 0x00000006;
+ public static final int VISUAL_VOICEMAIL_TAG = 0x00000007;
+
+ // 0xfffffe00 to 0xffffff00 reserved for proprietary extensions to the dialer app.
+
+ // 0xffffff00 to 0xffffffff reserved by the system (see TrafficStats#getAndSetThreadStatsTag)
+
}
diff --git a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
index 1111732..38fd24b 100644
--- a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
+++ b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
@@ -16,6 +16,7 @@
package com.android.dialer.constants;
+import android.content.Context;
import android.support.annotation.NonNull;
import com.android.dialer.proguard.UsedByReflection;
@@ -40,4 +41,9 @@
public String getAnnotatedCallLogProviderAuthority() {
return "com.android.dialer.annotatedcalllog";
}
+
+ @Override
+ public String getUserAgent(Context context) {
+ return null;
+ }
}
diff --git a/java/com/android/dialer/constants/googledialer/ConstantsImpl.java b/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
new file mode 100644
index 0000000..e151344
--- /dev/null
+++ b/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
@@ -0,0 +1,61 @@
+/*
+ * 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.constants;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Provider config values for Google Dialer. */
+@UsedByReflection(value = "Constants.java")
+public class ConstantsImpl extends Constants {
+
+ @Override
+ @NonNull
+ public String getFilteredNumberProviderAuthority() {
+ return "com.google.android.dialer.blocking.filterednumberprovider";
+ }
+
+ @Override
+ @NonNull
+ public String getFileProviderAuthority() {
+ return "com.google.android.dialer.files";
+ }
+
+ @NonNull
+ @Override
+ public String getAnnotatedCallLogProviderAuthority() {
+ return "com.google.android.dialer.annotatedcalllog";
+ }
+
+ @Override
+ public String getUserAgent(Context context) {
+ StringBuilder userAgent = new StringBuilder("GoogleDialer ");
+ try {
+ String versionName =
+ context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
+ userAgent.append(versionName).append(" ");
+ } catch (PackageManager.NameNotFoundException e) {
+ // ignore
+ }
+ userAgent.append(Build.FINGERPRINT);
+
+ return userAgent.toString();
+ }
+}
diff --git a/java/com/android/dialer/contactactions/ContactActionBottomSheet.java b/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
index 4718ff0..9bf7ca0 100644
--- a/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
+++ b/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
@@ -28,8 +28,8 @@
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.dialercontact.DialerContact;
import java.util.List;
@@ -75,7 +75,7 @@
}
}
- // TODO: add on click action to contact.
+ // TODO(calderwoodra): add on click action to contact.
private View getContactView(ViewGroup container) {
LayoutInflater inflater = LayoutInflater.from(getContext());
View contactView = inflater.inflate(R.layout.contact_layout, container, false);
diff --git a/java/com/android/dialer/contactphoto/AndroidManifest.xml b/java/com/android/dialer/contactphoto/AndroidManifest.xml
new file mode 100644
index 0000000..d852d40
--- /dev/null
+++ b/java/com/android/dialer/contactphoto/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<!--
+ ~ 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.dialer.contactphoto">
+</manifest>
\ No newline at end of file
diff --git a/java/com/android/contacts/common/util/BitmapUtil.java b/java/com/android/dialer/contactphoto/BitmapUtil.java
similarity index 98%
rename from java/com/android/contacts/common/util/BitmapUtil.java
rename to java/com/android/dialer/contactphoto/BitmapUtil.java
index 51f65f2..36055e2 100644
--- a/java/com/android/contacts/common/util/BitmapUtil.java
+++ b/java/com/android/dialer/contactphoto/BitmapUtil.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.contacts.common.util;
+package com.android.dialer.contactphoto;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
diff --git a/java/com/android/contacts/common/ContactPhotoManager.java b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
similarity index 98%
rename from java/com/android/contacts/common/ContactPhotoManager.java
rename to java/com/android/dialer/contactphoto/ContactPhotoManager.java
index fbf51cc..4598379 100644
--- a/java/com/android/contacts/common/ContactPhotoManager.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.contacts.common;
+package com.android.dialer.contactphoto;
import android.content.ComponentCallbacks2;
import android.content.Context;
@@ -28,10 +28,10 @@
import android.view.View;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.util.UriUtils;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
/** Asynchronously loads contact photos and maintains a cache of photos. */
public abstract class ContactPhotoManager implements ComponentCallbacks2 {
diff --git a/java/com/android/contacts/common/ContactPhotoManagerImpl.java b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
similarity index 97%
rename from java/com/android/contacts/common/ContactPhotoManagerImpl.java
rename to java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
index 28ecf34..5dbdf5e 100644
--- a/java/com/android/contacts/common/ContactPhotoManagerImpl.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.contacts.common;
+package com.android.dialer.contactphoto;
import android.app.ActivityManager;
import android.content.ComponentCallbacks2;
@@ -52,11 +52,11 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
-import com.android.contacts.common.util.BitmapUtil;
-import com.android.contacts.common.util.UriUtils;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.constants.Constants;
import com.android.dialer.constants.TrafficStatsTags;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -197,7 +197,7 @@
context.getResources().getDimensionPixelSize(R.dimen.contact_browser_list_item_photo_size);
// Get a user agent string to use for URI photo requests.
- mUserAgent = Bindings.get(context).getUserAgent();
+ mUserAgent = Constants.get().getUserAgent(context);
if (mUserAgent == null) {
mUserAgent = "";
}
@@ -566,7 +566,7 @@
if (request.mIsCircular) {
final RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(resources, bitmap);
drawable.setAntiAlias(true);
- drawable.setCornerRadius(bitmap.getHeight() / 2);
+ drawable.setCornerRadius(drawable.getIntrinsicHeight() / 2);
return drawable;
} else {
return new BitmapDrawable(resources, bitmap);
@@ -1220,20 +1220,23 @@
InputStream is = null;
if (scheme.equals("http") || scheme.equals("https")) {
TrafficStats.setThreadStatsTag(TrafficStatsTags.CONTACT_PHOTO_DOWNLOAD_TAG);
- final HttpURLConnection connection =
- (HttpURLConnection) new URL(uri.toString()).openConnection();
-
- // Include the user agent if it is specified.
- if (!TextUtils.isEmpty(mUserAgent)) {
- connection.setRequestProperty("User-Agent", mUserAgent);
- }
try {
- is = connection.getInputStream();
- } catch (IOException e) {
- connection.disconnect();
- is = null;
+ final HttpURLConnection connection =
+ (HttpURLConnection) new URL(uri.toString()).openConnection();
+
+ // Include the user agent if it is specified.
+ if (!TextUtils.isEmpty(mUserAgent)) {
+ connection.setRequestProperty("User-Agent", mUserAgent);
+ }
+ try {
+ is = connection.getInputStream();
+ } catch (IOException e) {
+ connection.disconnect();
+ is = null;
+ }
+ } finally {
+ TrafficStats.clearThreadStatsTag();
}
- TrafficStats.clearThreadStatsTag();
} else {
is = mResolver.openInputStream(uri);
}
diff --git a/java/com/android/dialer/contactphoto/res/values/dimens.xml b/java/com/android/dialer/contactphoto/res/values/dimens.xml
new file mode 100644
index 0000000..7c3361a
--- /dev/null
+++ b/java/com/android/dialer/contactphoto/res/values/dimens.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>
+ <dimen name="contact_browser_list_item_photo_size">40dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactphoto/res/values/strings.xml b/java/com/android/dialer/contactphoto/res/values/strings.xml
new file mode 100644
index 0000000..5b050d8
--- /dev/null
+++ b/java/com/android/dialer/contactphoto/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2012 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- String describing the text for photo of a contact in a contacts list.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_quick_contact_for">Quick contact for <xliff:g id="name">%1$s</xliff:g></string>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/ContactsAdapter.java b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
index d8ee3d1..1bd8e34 100644
--- a/java/com/android/dialer/contactsfragment/ContactsAdapter.java
+++ b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
@@ -26,9 +26,9 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -137,7 +137,7 @@
@Override
public int getItemCount() {
- return (cursor == null ? 0 : cursor.getCount()) + 1; // add contact
+ return (cursor == null || cursor.isClosed() ? 0 : cursor.getCount()) + 1; // add contact
}
private static String getDisplayName(Cursor cursor) {
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index 41fa8f9..50c9fe8 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -122,8 +122,10 @@
emptyContentView.setDescription(R.string.all_contacts_empty);
emptyContentView.setActionLabel(R.string.all_contacts_empty_add_contact_action);
emptyContentView.setVisibility(View.VISIBLE);
+ recyclerView.setVisibility(View.GONE);
} else {
emptyContentView.setVisibility(View.GONE);
+ recyclerView.setVisibility(View.VISIBLE);
adapter = new ContactsAdapter(getContext(), cursor);
manager =
new LinearLayoutManager(getContext()) {
diff --git a/java/com/android/dialer/contactsfragment/FastScroller.java b/java/com/android/dialer/contactsfragment/FastScroller.java
index 0223c5f..2a86a3b 100644
--- a/java/com/android/dialer/contactsfragment/FastScroller.java
+++ b/java/com/android/dialer/contactsfragment/FastScroller.java
@@ -91,6 +91,7 @@
int targetPos = getValueInRange(0, itemCount - 1, (int) scrolledPosition);
layoutManager.scrollToPositionWithOffset(targetPos, 0);
container.setText(adapter.getHeaderString(targetPos));
+ adapter.refreshHeaders();
}
// Returns a float in range [0, 1] which represents the position of the scroller.
diff --git a/java/com/android/dialer/database/VoicemailStatusQuery.java b/java/com/android/dialer/database/VoicemailStatusQuery.java
index d9e1b72..dbd88be 100644
--- a/java/com/android/dialer/database/VoicemailStatusQuery.java
+++ b/java/com/android/dialer/database/VoicemailStatusQuery.java
@@ -27,7 +27,7 @@
/** The query for the call voicemail status table. */
public class VoicemailStatusQuery {
- // TODO: Column indices should be removed in favor of Cursor#getColumnIndex
+ // TODO(maxwelb): Column indices should be removed in favor of Cursor#getColumnIndex
public static final int SOURCE_PACKAGE_INDEX = 0;
public static final int SETTINGS_URI_INDEX = 1;
public static final int VOICEMAIL_ACCESS_URI_INDEX = 2;
diff --git a/java/com/android/dialer/databasepopulator/AndroidManifest.xml b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
new file mode 100644
index 0000000..0a37285
--- /dev/null
+++ b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<?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
+ -->
+<manifest package="com.android.dialer.databasepopulator">
+</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/simulator/impl/SimulatorCallLog.java b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
similarity index 88%
rename from java/com/android/dialer/simulator/impl/SimulatorCallLog.java
rename to java/com/android/dialer/databasepopulator/CallLogPopulator.java
index f127d56..79b3fd6 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorCallLog.java
+++ b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
import android.content.ContentProviderOperation;
import android.content.ContentValues;
@@ -28,10 +28,11 @@
import com.android.dialer.common.Assert;
import com.google.auto.value.AutoValue;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.concurrent.TimeUnit;
/** Populates the device database with call log entries. */
-final class SimulatorCallLog {
+public final class CallLogPopulator {
// Phone numbers from https://www.google.com/about/company/facts/locations/
private static final CallEntry.Builder[] SIMPLE_CALL_LOG = {
CallEntry.builder().setType(Calls.MISSED_TYPE).setNumber("+1-302-6365454"),
@@ -96,6 +97,21 @@
}
}
+ @WorkerThread
+ public static void deleteAllCallLog(@NonNull Context context) {
+ Assert.isWorkerThread();
+ try {
+ context
+ .getContentResolver()
+ .applyBatch(
+ CallLog.AUTHORITY,
+ new ArrayList<>(
+ Arrays.asList(ContentProviderOperation.newDelete(Calls.CONTENT_URI).build())));
+ } catch (RemoteException | OperationApplicationException e) {
+ Assert.fail("failed to delete call log: " + e);
+ }
+ }
+
@AutoValue
abstract static class CallEntry {
@NonNull
@@ -108,7 +124,7 @@
abstract long getTimeMillis();
static Builder builder() {
- return new AutoValue_SimulatorCallLog_CallEntry.Builder()
+ return new AutoValue_CallLogPopulator_CallEntry.Builder()
.setPresentation(Calls.PRESENTATION_ALLOWED);
}
@@ -135,5 +151,5 @@
}
}
- private SimulatorCallLog() {}
+ private CallLogPopulator() {}
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorContacts.java b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
similarity index 89%
rename from java/com/android/dialer/simulator/impl/SimulatorContacts.java
rename to java/com/android/dialer/databasepopulator/ContactsPopulator.java
index 5bd2898..e93c569 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorContacts.java
+++ b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
import android.content.ContentProviderOperation;
import android.content.Context;
@@ -26,6 +26,7 @@
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.RawContacts;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
@@ -34,10 +35,11 @@
import com.google.auto.value.AutoValue;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/** Populates the device database with contacts. */
-public final class SimulatorContacts {
+public final class ContactsPopulator {
// Phone numbers from https://www.google.com/about/company/facts/locations/
private static final Contact[] SIMPLE_CONTACTS = {
// US, contact with e164 number.
@@ -46,6 +48,7 @@
.addPhoneNumber(new PhoneNumber("+1-302-6365454", Phone.TYPE_MOBILE))
.addEmail(new Email("m@example.com"))
.setIsStarred(true)
+ .setPinned(1)
.setOrangePhoto()
.build(),
// US, contact with a non-e164 number.
@@ -54,6 +57,7 @@
.addPhoneNumber(new PhoneNumber("(425) 739-5600", Phone.TYPE_MOBILE))
.addEmail(new Email("l@example.com"))
.setIsStarred(true)
+ .setPinned(2)
.setBluePhoto()
.build(),
// UK, number where the (0) should be dropped.
@@ -62,6 +66,7 @@
.addPhoneNumber(new PhoneNumber("+44 (0) 20 7031 3000", Phone.TYPE_MOBILE))
.addEmail(new Email("r@example.com"))
.setIsStarred(true)
+ .setPinned(3)
.setRedPhoto()
.build(),
// US and Australia, contact with a long name and multiple phone numbers.
@@ -71,6 +76,7 @@
.addPhoneNumber(new PhoneNumber("+1 404-487-9000", Phone.TYPE_WORK))
.addPhoneNumber(new PhoneNumber("+61 2 9374 4001", Phone.TYPE_FAX_HOME))
.setIsStarred(true)
+ .setPinned(4)
.setPurplePhoto()
.build(),
// US, phone number shared with another contact and 2nd phone number with wait and pause.
@@ -78,25 +84,30 @@
.setName("Splinter")
.addPhoneNumber(new PhoneNumber("+1-650-2530000", Phone.TYPE_HOME))
.addPhoneNumber(new PhoneNumber("+1 303-245-0086;123,456", Phone.TYPE_WORK))
+ .setBluePhoto()
.build(),
// France, number with Japanese name.
Contact.builder()
.setName("スパイク・スピーゲル")
.addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// Israel, RTL name and non-e164 number.
Contact.builder()
.setName("עקב אריה טברסק")
.addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// UAE, RTL name.
Contact.builder()
.setName("سلام دنیا")
.addPhoneNumber(new PhoneNumber("+971 4 4509500", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// Brazil, contact with no name.
Contact.builder()
.addPhoneNumber(new PhoneNumber("+55-31-2128-6800", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// Short number, contact with no name.
Contact.builder().addPhoneNumber(new PhoneNumber("611", Phone.TYPE_MOBILE)).build(),
@@ -104,12 +115,14 @@
Contact.builder()
.setName("Anonymous")
.addPhoneNumber(new PhoneNumber("*86 512-343-5283", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// None, contact with no phone number.
Contact.builder()
.setName("No Phone Number")
.addEmail(new Email("no@example.com"))
.setIsStarred(true)
+ .setBluePhoto()
.build(),
};
@@ -127,6 +140,22 @@
}
}
+ @WorkerThread
+ public static void deleteAllContacts(@NonNull Context context) {
+ Assert.isWorkerThread();
+ try {
+ context
+ .getContentResolver()
+ .applyBatch(
+ ContactsContract.AUTHORITY,
+ new ArrayList<>(
+ Arrays.asList(
+ ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).build())));
+ } catch (RemoteException | OperationApplicationException e) {
+ Assert.fail("failed to delete contacts: " + e);
+ }
+ }
+
private static void addContact(Contact contact, List<ContentProviderOperation> operations) {
int index = operations.size();
@@ -135,6 +164,9 @@
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, contact.getAccountType())
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.getAccountName())
.withValue(ContactsContract.RawContacts.STARRED, contact.getIsStarred() ? 1 : 0)
+ .withValue(
+ ContactsContract.RawContacts.PINNED,
+ contact.getIsStarred() ? contact.getPinned() : 0)
.withYieldAllowed(true)
.build());
@@ -203,6 +235,8 @@
abstract boolean getIsStarred();
+ abstract int getPinned();
+
@Nullable
abstract ByteArrayOutputStream getPhotoStream();
@@ -213,9 +247,10 @@
abstract List<Email> getEmails();
static Builder builder() {
- return new AutoValue_SimulatorContacts_Contact.Builder()
+ return new AutoValue_ContactsPopulator_Contact.Builder()
.setAccountType("com.google")
.setAccountName("foo@example")
+ .setPinned(0)
.setIsStarred(false)
.setPhoneNumbers(new ArrayList<>())
.setEmails(new ArrayList<>());
@@ -234,6 +269,8 @@
abstract Builder setIsStarred(boolean isStarred);
+ abstract Builder setPinned(int position);
+
abstract Builder setPhotoStream(ByteArrayOutputStream photoStream);
abstract Builder setPhoneNumbers(@NonNull List<PhoneNumber> phoneNumbers);
@@ -315,5 +352,5 @@
}
}
- private SimulatorContacts() {}
+ private ContactsPopulator() {}
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVoicemail.java b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
similarity index 90%
rename from java/com/android/dialer/simulator/impl/SimulatorVoicemail.java
rename to java/com/android/dialer/databasepopulator/VoicemailPopulator.java
index 04de201..581100f 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVoicemail.java
+++ b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
import android.content.ComponentName;
import android.content.ContentValues;
@@ -30,7 +30,7 @@
import java.util.concurrent.TimeUnit;
/** Populates the device database with voicemail entries. */
-final class SimulatorVoicemail {
+public final class VoicemailPopulator {
private static final String ACCOUNT_ID = "ACCOUNT_ID";
private static final Voicemail.Builder[] SIMPLE_VOICEMAILS = {
@@ -90,9 +90,17 @@
}
}
+ @WorkerThread
+ public static void deleteAllVoicemail(@NonNull Context context) {
+ Assert.isWorkerThread();
+ context
+ .getContentResolver()
+ .delete(Voicemails.buildSourceUri(context.getPackageName()), "", new String[] {});
+ }
+
private static void enableVoicemail(@NonNull Context context) {
PhoneAccountHandle handle =
- new PhoneAccountHandle(new ComponentName(context, SimulatorVoicemail.class), ACCOUNT_ID);
+ new PhoneAccountHandle(new ComponentName(context, VoicemailPopulator.class), ACCOUNT_ID);
ContentValues values = new ContentValues();
values.put(Status.SOURCE_PACKAGE, handle.getComponentName().getPackageName());
@@ -120,7 +128,7 @@
abstract boolean getIsRead();
static Builder builder() {
- return new AutoValue_SimulatorVoicemail_Voicemail.Builder();
+ return new AutoValue_VoicemailPopulator_Voicemail.Builder();
}
ContentValues getAsContentValues(Context context) {
@@ -150,5 +158,5 @@
}
}
- private SimulatorVoicemail() {}
+ private VoicemailPopulator() {}
}
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
index 6f178f0..1356246 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
@@ -35,7 +35,7 @@
<ImageView
android:id="@+id/dialpad_key_voicemail"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="@dimen/dialpad_voicemail_icon_size"
android:scaleType="fitCenter"
android:src="@drawable/quantum_ic_voicemail_white_24"
android:tint="@color/dialpad_voicemail_tint"/>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
index 8859440..4401c5b 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
@@ -18,7 +18,8 @@
android:id="@+id/one"
style="@style/DialpadKeyButtonStyle">
<LinearLayout
- style="@style/DialpadKeyInternalLayoutStyle">
+ android:layout_marginTop="1dp"
+ style="@style/DialpadKeyInternalLayoutStyle">
<com.android.dialer.dialpadview.DialpadTextView
android:id="@+id/dialpad_key_number"
style="@style/DialpadKeyNumberStyle"/>
@@ -28,9 +29,8 @@
<ImageView
android:id="@+id/dialpad_key_voicemail"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="@dimen/dialpad_voicemail_icon_size"
android:layout_centerInParent="true"
- android:paddingTop="@dimen/dialpad_voicemail_icon_padding_top"
android:scaleType="fitCenter"
android:src="@drawable/quantum_ic_voicemail_white_24"
android:tint="?attr/dialpad_voicemail_tint"/>
diff --git a/java/com/android/dialer/dialpadview/res/values/dimens.xml b/java/com/android/dialer/dialpadview/res/values/dimens.xml
index 7277364..187ec9a 100644
--- a/java/com/android/dialer/dialpadview/res/values/dimens.xml
+++ b/java/com/android/dialer/dialpadview/res/values/dimens.xml
@@ -35,7 +35,7 @@
<dimen name="dialpad_digits_menu_right_padding">10dp</dimen>
<dimen name="dialpad_center_margin">3dp</dimen>
<dimen name="dialpad_button_margin">2dp</dimen>
- <dimen name="dialpad_voicemail_icon_padding_top">2dp</dimen>
+ <dimen name="dialpad_voicemail_icon_size">18dp</dimen>
<dimen name="dialpad_key_button_translate_y">100dp</dimen>
<dimen name="dialpad_overflow_margin">8dp</dimen>
<dimen name="dialpad_space_above_keys">14dp</dimen>
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java b/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
index c3c78c9..32054e8 100644
--- a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
+++ b/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
@@ -22,18 +22,53 @@
@AutoValue
public abstract class EnrichedCallCapabilities {
- public static final EnrichedCallCapabilities NO_CAPABILITIES =
- EnrichedCallCapabilities.create(false, false, false);
+ public static final EnrichedCallCapabilities NO_CAPABILITIES = builder().build();
- public static EnrichedCallCapabilities create(
- boolean supportsCallComposer, boolean supportsPostCall, boolean supportsVideoCall) {
- return new AutoValue_EnrichedCallCapabilities(
- supportsCallComposer, supportsPostCall, supportsVideoCall);
+ public static final EnrichedCallCapabilities ALL_CAPABILITIES =
+ builder()
+ .setCallComposerCapable(true)
+ .setPostCallCapable(true)
+ .setVideoShareCapable(true)
+ .build();
+
+ public abstract boolean isCallComposerCapable();
+
+ public abstract boolean isPostCallCapable();
+
+ public abstract boolean isVideoShareCapable();
+
+ public abstract Builder toBuilder();
+
+ /**
+ * Returns {@code true} if these capabilities represent those of a user that is temporarily
+ * unavailable. This is an indication that capabilities should be refreshed.
+ */
+ public abstract boolean isTemporarilyUnavailable();
+
+ /**
+ * Creates an instance of {@link Builder}.
+ *
+ * <p>Unless otherwise set, all fields will default to false.
+ */
+ public static Builder builder() {
+ return new AutoValue_EnrichedCallCapabilities.Builder()
+ .setCallComposerCapable(false)
+ .setPostCallCapable(false)
+ .setVideoShareCapable(false)
+ .setTemporarilyUnavailable(false);
}
- public abstract boolean supportsCallComposer();
+ /** Creates instances of {@link EnrichedCallCapabilities}. */
+ @AutoValue.Builder
+ public abstract static class Builder {
+ public abstract Builder setCallComposerCapable(boolean isCapable);
- public abstract boolean supportsPostCall();
+ public abstract Builder setPostCallCapable(boolean isCapable);
- public abstract boolean supportsVideoShare();
+ public abstract Builder setVideoShareCapable(boolean isCapable);
+
+ public abstract Builder setTemporarilyUnavailable(boolean temporarilyUnavailable);
+
+ public abstract EnrichedCallCapabilities build();
+ }
}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
index f1057be..4d00854 100644
--- a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
+++ b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
@@ -23,6 +23,7 @@
import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
+import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
import com.android.dialer.multimedia.MultimediaData;
import java.util.List;
import java.util.Map;
@@ -299,6 +300,14 @@
long getVideoShareInviteSessionId(@NonNull String number);
/**
+ * Returns the {@link VideoShareSession} for the given sessionId, or {@code null} if no session
+ * exists.
+ */
+ @MainThread
+ @Nullable
+ VideoShareSession getVideoShareSession(long sessionId);
+
+ /**
* Ends the given video share session.
*
* @param sessionId the id of the session to end
diff --git a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java b/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
index 27dc0e9..6f4d975 100644
--- a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
+++ b/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
@@ -29,25 +29,34 @@
* too slow, so character by character matching is used instead.
*/
public static boolean matches(@NonNull String lhs, @NonNull String rhs) {
- int aIndex = lhs.length() - 1;
- int bIndex = rhs.length() - 1;
+ return lastSevenDigitsCharacterByCharacterMatches(lhs, rhs);
+ }
+
+ /**
+ * This strategy examines the numbers character by character starting from the end. If the last
+ * {@link #REQUIRED_MATCHED_DIGITS} match, it returns {@code true}.
+ */
+ private static boolean lastSevenDigitsCharacterByCharacterMatches(
+ @NonNull String lhs, @NonNull String rhs) {
+ int lhsIndex = lhs.length() - 1;
+ int rhsIndex = rhs.length() - 1;
int matchedDigits = 0;
- while (aIndex >= 0 && bIndex >= 0) {
- if (!Character.isDigit(lhs.charAt(aIndex))) {
- --aIndex;
+ while (lhsIndex >= 0 && rhsIndex >= 0) {
+ if (!Character.isDigit(lhs.charAt(lhsIndex))) {
+ --lhsIndex;
continue;
}
- if (!Character.isDigit(rhs.charAt(bIndex))) {
- --bIndex;
+ if (!Character.isDigit(rhs.charAt(rhsIndex))) {
+ --rhsIndex;
continue;
}
- if (lhs.charAt(aIndex) != rhs.charAt(bIndex)) {
- return false;
+ if (lhs.charAt(lhsIndex) != rhs.charAt(rhsIndex)) {
+ break;
}
- --aIndex;
- --bIndex;
+ --lhsIndex;
+ --rhsIndex;
++matchedDigits;
}
diff --git a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
index 1f2b005..de95e07 100644
--- a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
+++ b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
@@ -27,6 +27,7 @@
import com.android.dialer.enrichedcall.Session;
import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
+import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
import com.android.dialer.multimedia.MultimediaData;
import java.util.Collections;
import java.util.List;
@@ -169,6 +170,14 @@
return Session.NO_SESSION_ID;
}
+ @MainThread
+ @Nullable
+ @Override
+ public VideoShareSession getVideoShareSession(long sessionId) {
+ Assert.isMainThread();
+ return null;
+ }
+
@Override
public void endVideoShareSession(long sessionId) {}
}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
index f24724a..0e5f79f 100644
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
+++ b/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.dialer.enrichedcall.videoshare;
import android.support.annotation.MainThread;
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
new file mode 100644
index 0000000..b0f24ff
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
@@ -0,0 +1,39 @@
+/*
+ * 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.enrichedcall.videoshare;
+
+import android.support.annotation.NonNull;
+import android.view.SurfaceView;
+
+/** Holds state information and data about video share sessions. */
+public interface VideoShareSession {
+ void setSessionId(long sessionId);
+
+ long getSessionId();
+
+ int getState();
+
+ void pause();
+
+ void unpause();
+
+ void dispose();
+
+ void setSurfaceView(@NonNull SurfaceView surfaceView);
+
+ void setCamera(String cameraId);
+}
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index ef468a9..39781cf 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -15,7 +15,6 @@
*/
package com.android.dialer.interactions;
-import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
@@ -28,7 +27,6 @@
import android.content.Intent;
import android.content.Loader;
import android.content.Loader.OnLoadCompleteListener;
-import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
@@ -42,7 +40,6 @@
import android.support.annotation.IntDef;
import android.support.annotation.VisibleForTesting;
import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -63,10 +60,12 @@
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.TransactionSafeActivity;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -221,20 +220,27 @@
// It's possible for a shortcut to have been created, and then permissions revoked. To avoid a
// crash when the user tries to use such a shortcut, check for this condition and ask the user
// for the permission.
- if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE)
- != PackageManager.PERMISSION_GRANTED) {
- LogUtil.i("PhoneNumberInteraction.startInteraction", "No phone permissions");
+ String[] deniedPhonePermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ mContext, PermissionsUtil.allPhoneGroupPermissionsUsedInDialer);
+ if (deniedPhonePermissions.length > 0) {
+ LogUtil.i(
+ "PhoneNumberInteraction.startInteraction",
+ "Need phone permissions: " + Arrays.toString(deniedPhonePermissions));
ActivityCompat.requestPermissions(
- (Activity) mContext, new String[] {Manifest.permission.CALL_PHONE}, REQUEST_CALL_PHONE);
+ (Activity) mContext, deniedPhonePermissions, REQUEST_CALL_PHONE);
return;
}
- if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_CONTACTS)
- != PackageManager.PERMISSION_GRANTED) {
- LogUtil.i("PhoneNumberInteraction.startInteraction", "No contact permissions");
+
+ String[] deniedContactsPermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ mContext, PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
+ if (deniedContactsPermissions.length > 0) {
+ LogUtil.i(
+ "PhoneNumberInteraction.startInteraction",
+ "Need contact permissions: " + Arrays.toString(deniedContactsPermissions));
ActivityCompat.requestPermissions(
- (Activity) mContext,
- new String[] {Manifest.permission.READ_CONTACTS},
- REQUEST_READ_CONTACTS);
+ (Activity) mContext, deniedContactsPermissions, REQUEST_READ_CONTACTS);
return;
}
diff --git a/java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml b/java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml
old mode 100644
new mode 100755
diff --git a/java/com/android/dialer/interactions/res/values-bs/strings.xml b/java/com/android/dialer/interactions/res/values-bs/strings.xml
index 24601b5..d7434f8 100644
--- a/java/com/android/dialer/interactions/res/values-bs/strings.xml
+++ b/java/com/android/dialer/interactions/res/values-bs/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sms_disambig_title" msgid="369677069797534410">"Odaberite broj"</string>
- <string name="call_disambig_title" msgid="2395382326030227603">"Odaberite broj"</string>
+ <string name="sms_disambig_title" msgid="369677069797534410">"Izaberite broj"</string>
+ <string name="call_disambig_title" msgid="2395382326030227603">"Izaberite broj"</string>
<string name="make_primary" msgid="9069345357862475091">"Zapamti ovaj izbor"</string>
</resources>
diff --git a/java/com/android/dialer/lettertile/AndroidManifest.xml b/java/com/android/dialer/lettertile/AndroidManifest.xml
new file mode 100644
index 0000000..dce6806
--- /dev/null
+++ b/java/com/android/dialer/lettertile/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<!--
+ ~ 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.dialer.lettertile">
+</manifest>
diff --git a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java b/java/com/android/dialer/lettertile/LetterTileDrawable.java
similarity index 98%
rename from java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
rename to java/com/android/dialer/lettertile/LetterTileDrawable.java
index 73809c4..c8b75c5 100644
--- a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
+++ b/java/com/android/dialer/lettertile/LetterTileDrawable.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.contacts.common.lettertiles;
+package com.android.dialer.lettertile;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -33,7 +33,6 @@
import android.support.annotation.Nullable;
import android.telecom.TelecomManager;
import android.text.TextUtils;
-import com.android.contacts.common.R;
import com.android.dialer.common.Assert;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -55,6 +54,7 @@
/** Contact type constants */
public static final int TYPE_PERSON = 1;
+
public static final int TYPE_BUSINESS = 2;
public static final int TYPE_VOICEMAIL = 3;
/**
@@ -62,6 +62,7 @@
* situations where a contact is anonymous.
*/
public static final int TYPE_GENERIC_AVATAR = 4;
+
public static final int TYPE_SPAM = 5;
public static final int TYPE_CONFERENCE = 6;
@ContactType public static final int TYPE_DEFAULT = TYPE_PERSON;
@@ -128,8 +129,7 @@
mDefaultSpamAvatar = res.getDrawable(R.drawable.quantum_ic_report_vd_theme_24, null);
mDefaultConferenceAvatar = res.getDrawable(R.drawable.quantum_ic_group_vd_theme_24, null);
- mPaint.setTypeface(
- Typeface.create(res.getString(R.string.letter_tile_letter_font_family), Typeface.NORMAL));
+ mPaint.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
mPaint.setTextAlign(Align.CENTER);
mPaint.setAntiAlias(true);
mPaint.setFilterBitmap(true);
diff --git a/java/com/android/dialer/lettertile/res/values/colors.xml b/java/com/android/dialer/lettertile/res/values/colors.xml
new file mode 100644
index 0000000..406b490
--- /dev/null
+++ b/java/com/android/dialer/lettertile/res/values/colors.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
+ -->
+<resources>
+ <array name="letter_tile_colors">
+ <item>#DB4437</item>
+ <item>#E91E63</item>
+ <item>#9C27B0</item>
+ <item>#673AB7</item>
+ <item>#3F51B5</item>
+ <item>#4285F4</item>
+ <item>#039BE5</item>
+ <item>#0097A7</item>
+ <item>#009688</item>
+ <item>#0F9D58</item>
+ <item>#689F38</item>
+ <item>#EF6C00</item>
+ <item>#FF5722</item>
+ <item>#757575</item>
+ </array>
+
+ <color name="spam_contact_background">#A52714</color>
+
+ <color name="letter_tile_default_color">#cccccc</color>
+
+ <color name="letter_tile_font_color">#ffffff</color>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/lettertile/res/values/dimens.xml b/java/com/android/dialer/lettertile/res/values/dimens.xml
new file mode 100644
index 0000000..c804431
--- /dev/null
+++ b/java/com/android/dialer/lettertile/res/values/dimens.xml
@@ -0,0 +1,20 @@
+<?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>
+ <!-- Dimensions for contact letter tiles -->
+ <item name="letter_to_tile_ratio" type="dimen">67%</item>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/lightbringer/Lightbringer.java b/java/com/android/dialer/lightbringer/Lightbringer.java
index 8bfa773..9120b24 100644
--- a/java/com/android/dialer/lightbringer/Lightbringer.java
+++ b/java/com/android/dialer/lightbringer/Lightbringer.java
@@ -22,6 +22,7 @@
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.telecom.Call;
import android.telecom.PhoneAccountHandle;
@@ -58,4 +59,12 @@
@Nullable
@MainThread
String getPackageName();
+
+ @StringRes
+ @MainThread
+ int getOutgoingCallTypeText();
+
+ @StringRes
+ @MainThread
+ int getIncomingCallTypeText();
}
diff --git a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
index e691b96..c98ae09 100644
--- a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
+++ b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
@@ -22,6 +22,7 @@
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.telecom.Call;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.common.Assert;
@@ -102,4 +103,16 @@
public String getPackageName() {
return null;
}
+
+ @StringRes
+ @Override
+ public int getOutgoingCallTypeText() {
+ return -1;
+ }
+
+ @StringRes
+ @Override
+ public int getIncomingCallTypeText() {
+ return -1;
+ }
}
diff --git a/java/com/android/dialer/location/GeoUtil.java b/java/com/android/dialer/location/GeoUtil.java
index 1be4054..b39256d 100644
--- a/java/com/android/dialer/location/GeoUtil.java
+++ b/java/com/android/dialer/location/GeoUtil.java
@@ -17,11 +17,6 @@
package com.android.dialer.location;
import android.content.Context;
-import com.google.i18n.phonenumbers.NumberParseException;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
-import com.google.i18n.phonenumbers.Phonenumber;
-import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
-import java.util.Locale;
/** Static methods related to Geo. */
public class GeoUtil {
@@ -31,17 +26,4 @@
// The {@link CountryDetector} should never return null so this is safe to return as-is.
return CountryDetector.getInstance(context).getCurrentCountryIso();
}
-
- public static String getGeocodedLocationFor(Context context, String phoneNumber) {
- final PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
- final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
- try {
- final Phonenumber.PhoneNumber structuredPhoneNumber =
- phoneNumberUtil.parse(phoneNumber, getCurrentCountryIso(context));
- final Locale locale = context.getResources().getConfiguration().locale;
- return geocoder.getDescriptionForNumber(structuredPhoneNumber, locale);
- } catch (NumberParseException e) {
- return null;
- }
- }
}
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
index 85ccfdf..ca9a053 100644
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ b/java/com/android/dialer/logging/LoggingBindings.java
@@ -80,4 +80,11 @@
QuickContactBadge quickContact,
InteractionEvent.Type interactionEvent,
boolean shouldPerformClick);
+
+ /** Logs People Api lookup result with error */
+ void logPeopleApiLookupReportWithError(
+ long latency, int httpResponseCode, PeopleApiLookupError.Type errorType);
+
+ /** Logs successful People Api lookup result */
+ void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode);
}
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
index 3892996..2dbcc3f 100644
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ b/java/com/android/dialer/logging/LoggingBindingsStub.java
@@ -54,4 +54,11 @@
QuickContactBadge quickContact,
InteractionEvent.Type interactionEvent,
boolean shouldPerformClick) {}
+
+ @Override
+ public void logPeopleApiLookupReportWithError(
+ long latency, int httpResponseCode, PeopleApiLookupError.Type errorType) {}
+
+ @Override
+ public void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode) {}
}
diff --git a/java/com/android/dialer/logging/contact_lookup_result.proto b/java/com/android/dialer/logging/contact_lookup_result.proto
index 13ea3c8..6c83908 100644
--- a/java/com/android/dialer/logging/contact_lookup_result.proto
+++ b/java/com/android/dialer/logging/contact_lookup_result.proto
@@ -6,6 +6,8 @@
option optimize_for = LITE_RUNTIME;
+
+
message ContactLookupResult {
// The different results of a contact lookup done using a phone number.
enum Type {
diff --git a/java/com/android/dialer/logging/contact_source.proto b/java/com/android/dialer/logging/contact_source.proto
index ffd32de..3a24da1 100644
--- a/java/com/android/dialer/logging/contact_source.proto
+++ b/java/com/android/dialer/logging/contact_source.proto
@@ -6,6 +6,8 @@
option optimize_for = LITE_RUNTIME;
+
+
message ContactSource {
// Applies only to reports made from call history. If we have contact
// information for the phone number, this field indicates its source.
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index 2f89a3a..4422b9c 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -7,6 +7,7 @@
+
message DialerImpression {
// Event enums to be used for Impression Logging in Dialer.
// It's perfectly acceptable for this enum to be large
@@ -48,6 +49,7 @@
// This happens when the user had initially blocked a number and also claimed the number was
// spam and had now proceeded to undo that.
REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER = 1009
+
;
// A number that was identified as spam and the user proceeded to block it. However this
@@ -63,10 +65,12 @@
// the number via call log. This is for case where the user wants to block a number and also
// report it as spam
REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG = 1011
+
;
// User made it to the last step and actually blocked the number
USER_ACTION_BLOCKED_NUMBER = 1012
+
;
// User made it to the last step and actually unblocked the number
@@ -89,16 +93,19 @@
// User added the number to contacts from the after call notification
SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS = 1019
+
;
// User marked the number as spam on the after call notification flow
SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM = 1020
+
;
SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_NOT_SPAM_AND_BLOCKED = 1021;
// User reported the number as not spam
SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM = 1022
+
;
// User dismissed the spam notification
@@ -120,6 +127,7 @@
// able to stitch different types of events if they make sense e.g user pressed a speaker button
// and we want to associate that to a call event
USER_PARTICIPATED_IN_A_CALL = 1028
+
;
// Incoming call is a spam call
@@ -152,44 +160,54 @@
// User deleted a call log entry
USER_DELETED_CALL_LOG_ITEM = 1048
+
;
// User tapped on "Send a message"
CALL_LOG_SEND_MESSAGE = 1049
+
;
// User tapped on "Add to contact"
CALL_LOG_ADD_TO_CONTACT = 1050
+
;
// User tapped on "Create new contact"
CALL_LOG_CREATE_NEW_CONTACT = 1051
+
;
// User deleted an entry from the voicemail tab
VOICEMAIL_DELETE_ENTRY = 1052
+
;
// Voicemail call log entry was expanded. Could be either if the user tapped the voicemail
// call log entry or pressed the play button when the voicemail call log entry was not expanded
VOICEMAIL_EXPAND_ENTRY = 1053
+
;
// The play button for voicemail call log entry was tapped directly (i.e when the voicemail
// call log entry was not expanded and the playbutton was tapped)
VOICEMAIL_PLAY_AUDIO_DIRECTLY= 1054
+
;
// The play button after expanding the voicemail call log entry was tapped
VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY= 1055
+
;
// Incoming call was rejected from the notifications
REJECT_INCOMING_CALL_FROM_NOTIFICATION= 1056
+
;
// Incoming call was rejected from the answer screen including rejecting via sms and talkback
REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN= 1057
+
;
// User tapped block and spam buttons in context menu, same as buttons in
@@ -249,24 +267,24 @@
VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION = 1080;
// Android Auto Backup and Restore (Dolly)
- BACKUP_ON_BACKUP = 1081;
- BACKUP_ON_FULL_BACKUP = 1082;
- BACKUP_ON_BACKUP_DISABLED = 1083;
- BACKUP_VOICEMAIL_BACKED_UP = 1084;
- BACKUP_FULL_BACKED_UP = 1085;
- BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086;
+ BACKUP_ON_BACKUP = 1081 [deprecated = true];
+ BACKUP_ON_FULL_BACKUP = 1082 [deprecated = true];
+ BACKUP_ON_BACKUP_DISABLED = 1083 [deprecated = true];
+ BACKUP_VOICEMAIL_BACKED_UP = 1084 [deprecated = true];
+ BACKUP_FULL_BACKED_UP = 1085 [deprecated = true];
+ BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086 [deprecated = true];
- BACKUP_ON_QUOTA_EXCEEDED = 1087;
+ BACKUP_ON_QUOTA_EXCEEDED = 1087 [deprecated = true];
- BACKUP_ON_RESTORE = 1088;
- BACKUP_RESTORED_FILE = 1089;
- BACKUP_RESTORED_VOICEMAIL = 1090;
- BACKUP_ON_RESTORE_FINISHED = 1091;
- BACKUP_ON_RESTORE_DISABLED = 1092;
- BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093;
- BACKUP_ON_RESTORE_IO_EXCEPTION = 1094;
+ BACKUP_ON_RESTORE = 1088 [deprecated = true];
+ BACKUP_RESTORED_FILE = 1089 [deprecated = true];
+ BACKUP_RESTORED_VOICEMAIL = 1090 [deprecated = true];
+ BACKUP_ON_RESTORE_FINISHED = 1091 [deprecated = true];
+ BACKUP_ON_RESTORE_DISABLED = 1092 [deprecated = true];
+ BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093 [deprecated = true];
+ BACKUP_ON_RESTORE_IO_EXCEPTION = 1094 [deprecated = true];
- BACKUP_MAX_VM_BACKUP_REACHED = 1095;
+ BACKUP_MAX_VM_BACKUP_REACHED = 1095 [deprecated = true];
EVENT_ANSWER_HINT_ACTIVATED = 1096;
EVENT_ANSWER_HINT_DEACTIVATED = 1097;
@@ -280,7 +298,7 @@
INCOMING_VIDEO_CALL = 1102;
USER_PARTICIPATED_IN_A_VIDEO_CALL = 1103;
- BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104;
+ BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104 [deprecated = true];
// User tapped the 'Share and call' button to start the call composer
CALL_LOG_SHARE_AND_CALL = 1105;
@@ -362,14 +380,19 @@
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
+
;
RCS_VIDEO_SHARE_UPGRADE_REQUESTED = 1179;
@@ -455,5 +478,26 @@
// In in call UI
UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN = 1236;
+
+ // Bubble primary button first click to expand bubble
+ BUBBLE_PRIMARY_BUTTON_EXPAND = 1237;
+ // Bubble prinary button second click to return to call
+ BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL = 1238;
+
+ // Dialer Key/Value Backup and Restore
+ BACKUP_KEY_VALUE_ON_BACKUP = 1239;
+ BACKUP_KEY_VALUE_ON_RESTORE = 1240;
+ BACKUP_KEY_VALUE_ON_RESTORE_FINISHED = 1241;
+ BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION = 1242;
+ BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR = 1243;
+
+ // In the in call UI
+ UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER = 1244;
+ UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS = 1245;
+ UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_RCS = 1246;
+ LIGHTBRINGER_UPGRADE_REQUESTED = 1247;
+
+ // Found Lightbringer reachable contact when launching Dialer
+ HAS_LIGHTBRINGER_REACHABLE_CONTACTS = 1248;
}
}
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
index 89cf46f..47ea534 100644
--- a/java/com/android/dialer/logging/interaction_event.proto
+++ b/java/com/android/dialer/logging/interaction_event.proto
@@ -6,6 +6,8 @@
option optimize_for = LITE_RUNTIME;
+
+
message InteractionEvent {
// Next Tag: 38
enum Type {
diff --git a/java/com/android/dialer/logging/people_api_lookup_error.proto b/java/com/android/dialer/logging/people_api_lookup_error.proto
new file mode 100644
index 0000000..e37d10a
--- /dev/null
+++ b/java/com/android/dialer/logging/people_api_lookup_error.proto
@@ -0,0 +1,19 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+
+
+message PeopleApiLookupError {
+ enum Type {
+ UNKNOWN = 0;
+ HTTP_RESPONSE_ERROR = 1;
+ WRONG_KIND_VALUE = 2;
+ NO_ITEM_FOUND = 3;
+ JSON_PARSING_ERROR = 4;
+ }
+}
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
index d436564..3c1baf0 100644
--- a/java/com/android/dialer/logging/reporting_location.proto
+++ b/java/com/android/dialer/logging/reporting_location.proto
@@ -6,6 +6,8 @@
option optimize_for = LITE_RUNTIME;
+
+
message ReportingLocation {
// Spam reporting location
enum Type {
diff --git a/java/com/android/dialer/logging/screen_event.proto b/java/com/android/dialer/logging/screen_event.proto
index ca62477..603f710 100644
--- a/java/com/android/dialer/logging/screen_event.proto
+++ b/java/com/android/dialer/logging/screen_event.proto
@@ -6,6 +6,8 @@
option optimize_for = LITE_RUNTIME;
+
+
message ScreenEvent {
enum Type {
diff --git a/java/com/android/dialer/logging/ui_action.proto b/java/com/android/dialer/logging/ui_action.proto
index 784dbed..886fe04 100644
--- a/java/com/android/dialer/logging/ui_action.proto
+++ b/java/com/android/dialer/logging/ui_action.proto
@@ -6,6 +6,8 @@
option optimize_for = LITE_RUNTIME;
+
+
message UiAction {
enum Type {
UNKNOWN = 0;
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 4b2bd2e..6dced3d 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -77,7 +77,7 @@
// open contacts
return true;
} else {
- // TODO handle other menu items
+ // TODO(calderwoodra) handle other menu items
return super.onOptionsItemSelected(item);
}
}
diff --git a/java/com/android/dialer/main/impl/MainPagerAdapter.java b/java/com/android/dialer/main/impl/MainPagerAdapter.java
index 19cf4e7..c669a62 100644
--- a/java/com/android/dialer/main/impl/MainPagerAdapter.java
+++ b/java/com/android/dialer/main/impl/MainPagerAdapter.java
@@ -49,13 +49,13 @@
@Override
public int getCount() {
- // TODO: add logic to hide/show voicemail tab
+ // TODO(calderwoodra): add logic to hide/show voicemail tab
return 3;
}
@Override
public Fragment getItem(int position) {
- // TODO: implement tabs
+ // TODO(calderwoodra): implement tabs
return new StubFragment();
}
diff --git a/java/com/android/dialer/notification/VoicemailChannelUtils.java b/java/com/android/dialer/notification/VoicemailChannelUtils.java
index dc74799..e2d0f3a 100644
--- a/java/com/android/dialer/notification/VoicemailChannelUtils.java
+++ b/java/com/android/dialer/notification/VoicemailChannelUtils.java
@@ -193,7 +193,7 @@
private static NotificationChannel newChannel(
@NonNull Context context, @NonNull String channelId, @Nullable CharSequence nameSuffix) {
CharSequence name = context.getText(R.string.notification_channel_voicemail);
- // TODO: Use a string resource template after v10.
+ // TODO(sail): Use a string resource template after v10.
if (!TextUtils.isEmpty(nameSuffix)) {
name = TextUtils.concat(name, ": ", nameSuffix);
}
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index 86097c4..7b6ddbc 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -74,7 +74,7 @@
private static boolean hasAlreadyCheckedCequintCallerIdPackage;
private static boolean isCequintCallerIdEnabled;
- // TODO: Revisit it and maybe remove it if it's not necessary.
+ // TODO(wangqi): Revisit it and maybe remove it if it's not necessary.
private final ConcurrentHashMap<String, CequintCallerIdContact> callLogCache;
/** Cequint caller id contact information. */
diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
index 5c7a28c..8bd8335 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
@@ -27,6 +27,7 @@
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
import android.support.v4.os.UserManagerCompat;
+import com.android.dialer.common.LogUtil;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -58,6 +59,16 @@
private static final String LOG_DIRECTORY = "persistent_log";
private static final String NEXT_FILE_INDEX_PREFIX = "persistent_long_next_file_index_";
+ private static final byte[] ENTRY_PREFIX = {'P'};
+ private static final byte[] ENTRY_POSTFIX = {'L'};
+
+ private static class LogCorruptionException extends Exception {
+
+ public LogCorruptionException(String message) {
+ super(message);
+ }
+ };
+
private File logDirectory;
private final String subfolder;
private final int fileSizeLimit;
@@ -106,8 +117,10 @@
try (DataOutputStream outputStream =
new DataOutputStream(new FileOutputStream(outputFile, true))) {
for (byte[] log : logs) {
+ outputStream.write(ENTRY_PREFIX);
outputStream.writeInt(log.length);
outputStream.write(log);
+ outputStream.write(ENTRY_POSTFIX);
}
outputStream.close();
if (outputFile.length() > fileSizeLimit) {
@@ -116,6 +129,21 @@
}
}
+ void writeRawLogsForTest(byte[] data) throws IOException {
+ if (outputFile == null) {
+ selectNextFileToWrite();
+ }
+ outputFile.createNewFile();
+ try (DataOutputStream outputStream =
+ new DataOutputStream(new FileOutputStream(outputFile, true))) {
+ outputStream.write(data);
+ outputStream.close();
+ if (outputFile.length() > fileSizeLimit) {
+ selectNextFileToWrite();
+ }
+ }
+ }
+
/** Concatenate all log files in chronicle order and return a byte array. */
@WorkerThread
@NonNull
@@ -149,10 +177,21 @@
logs.add(log);
log = readLog(input);
}
+ } catch (LogCorruptionException e) {
+ LogUtil.e("PersistentLogFileHandler.getLogs", "logs corrupted, deleting", e);
+ deleteLogs();
+ return new ArrayList<>();
}
return logs;
}
+ private void deleteLogs() throws IOException {
+ for (File file : getLogFiles()) {
+ file.delete();
+ }
+ selectNextFileToWrite();
+ }
+
@WorkerThread
private void selectNextFileToWrite() throws IOException {
File[] files = getLogFiles();
@@ -186,10 +225,28 @@
@Nullable
@WorkerThread
- private static byte[] readLog(DataInputStream inputStream) throws IOException {
+ private byte[] readLog(DataInputStream inputStream) throws IOException, LogCorruptionException {
try {
- byte[] data = new byte[inputStream.readInt()];
+ byte[] prefix = new byte[ENTRY_PREFIX.length];
+ if (inputStream.read(prefix) == -1) {
+ // EOF
+ return null;
+ }
+ if (!Arrays.equals(prefix, ENTRY_PREFIX)) {
+ throw new LogCorruptionException("entry prefix mismatch");
+ }
+ int dataLength = inputStream.readInt();
+ if (dataLength > fileSizeLimit) {
+ throw new LogCorruptionException("data length over max size");
+ }
+ byte[] data = new byte[dataLength];
inputStream.read(data);
+
+ byte[] postfix = new byte[ENTRY_POSTFIX.length];
+ inputStream.read(postfix);
+ if (!Arrays.equals(postfix, ENTRY_POSTFIX)) {
+ throw new LogCorruptionException("entry postfix mismatch");
+ }
return data;
} catch (EOFException e) {
return null;
diff --git a/java/com/android/dialer/persistentlog/PersistentLogger.java b/java/com/android/dialer/persistentlog/PersistentLogger.java
index cf43b8c..847625e 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogger.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogger.java
@@ -43,7 +43,7 @@
* com.google.android.apps.dialer.crashreporter.SilentCrashReporter} is expected to handle such
* cases.
*
- * <p>{@link #logText(String, String)} should be used to log ad-hoc text logs. TODO: switch
+ * <p>{@link #logText(String, String)} should be used to log ad-hoc text logs. TODO(twyen): switch
* to structured logging
*/
public final class PersistentLogger {
@@ -110,6 +110,16 @@
loggerThreadHandler.sendEmptyMessageDelayed(MESSAGE_FLUSH, FLUSH_DELAY_MILLIS);
}
+ @VisibleForTesting
+ /** write raw bytes directly to the log file, likely corrupting it. */
+ static void rawLogForTest(byte[] data) {
+ try {
+ fileHandler.writeRawLogsForTest(data);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
/** Dump the log as human readable string. Blocks until the dump is finished. */
@NonNull
@WorkerThread
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfo.java b/java/com/android/dialer/phonenumbercache/ContactInfo.java
index aef7374..a620a23 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfo.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfo.java
@@ -20,8 +20,8 @@
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.android.contacts.common.ContactsUtils.UserType;
-import com.android.contacts.common.util.UriUtils;
import com.android.dialer.logging.ContactSource;
+import com.android.dialer.util.UriUtils;
/** Information for a contact as needed by the Call Log. */
public class ContactInfo {
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index 4fa3147..b680bd5 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -38,7 +38,6 @@
import com.android.contacts.common.ContactsUtils.UserType;
import com.android.contacts.common.compat.DirectoryCompat;
import com.android.contacts.common.util.Constants;
-import com.android.contacts.common.util.UriUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.logging.ContactSource;
@@ -48,6 +47,7 @@
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONException;
diff --git a/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java b/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
index ea4396f..cc4ec2d 100644
--- a/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
+++ b/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
@@ -214,7 +214,7 @@
private static boolean isVerizon(Context context) {
// Verizon MCC/MNC codes copied from com/android/voicemailomtp/res/xml/vvm_config.xml.
- // TODO: Need a better way to do per carrier and per OEM configurations.
+ // TODO(sail): Need a better way to do per carrier and per OEM configurations.
switch (context.getSystemService(TelephonyManager.class).getSimOperator()) {
case "310004":
case "310010":
diff --git a/java/com/android/dialer/postcall/AndroidManifest.xml b/java/com/android/dialer/postcall/AndroidManifest.xml
index 22c77dd..7e69d33 100644
--- a/java/com/android/dialer/postcall/AndroidManifest.xml
+++ b/java/com/android/dialer/postcall/AndroidManifest.xml
@@ -22,7 +22,6 @@
android:name="com.android.dialer.postcall.PostCallActivity"
android:exported="false"
android:theme="@style/DialerThemeBase.NoActionBar"
- android:windowSoftInputMode="adjustResize"
- android:screenOrientation="portrait"/>
+ android:windowSoftInputMode="adjustResize"/>
</application>
</manifest>
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index 6d9ad01..011fbc9 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -46,6 +46,7 @@
private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time";
private static final String KEY_POST_CALL_CALL_NUMBER = "post_call_call_number";
private static final String KEY_POST_CALL_MESSAGE_SENT = "post_call_message_sent";
+ private static final String KEY_POST_CALL_DISCONNECT_PRESSED = "post_call_disconnect_pressed";
private static Snackbar activeSnackbar;
@@ -79,7 +80,7 @@
LogUtil.sanitizePhoneNumber(getPhoneNumber(activity)),
capabilities);
- boolean isRcsPostCall = capabilities != null && capabilities.supportsPostCall();
+ boolean isRcsPostCall = capabilities != null && capabilities.isPostCallCapable();
String actionText =
isRcsPostCall
? activity.getString(R.string.post_call_add_message)
@@ -146,6 +147,13 @@
.apply();
}
+ public static void onDisconnectPressed(Context context) {
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
+ .edit()
+ .putBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, true)
+ .apply();
+ }
+
public static void onCallDisconnected(Context context, String number, long callConnectedMillis) {
DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
.edit()
@@ -185,6 +193,7 @@
.remove(KEY_POST_CALL_CALL_NUMBER)
.remove(KEY_POST_CALL_MESSAGE_SENT)
.remove(KEY_POST_CALL_CALL_CONNECT_TIME)
+ .remove(KEY_POST_CALL_DISCONNECT_PRESSED)
.apply();
}
@@ -197,6 +206,8 @@
long timeSinceDisconnect = System.currentTimeMillis() - disconnectTimeMillis;
long callDurationMillis = disconnectTimeMillis - connectTimeMillis;
+ boolean callDisconnectedByUser = manager.getBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, false);
+
ConfigProvider binding = ConfigProviderBindings.get(context);
return disconnectTimeMillis != -1
&& connectTimeMillis != -1
@@ -204,7 +215,8 @@
&& binding.getLong("postcall_last_call_threshold", 30_000) > timeSinceDisconnect
&& (connectTimeMillis == 0
|| binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis)
- && getPhoneNumber(context) != null;
+ && getPhoneNumber(context) != null
+ && callDisconnectedByUser;
}
private static boolean shouldPromptUserToViewSentMessage(Context context) {
diff --git a/java/com/android/dialer/postcall/res/layout/post_call_activity.xml b/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
index 256c110..c42764e 100644
--- a/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
+++ b/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
@@ -14,20 +14,21 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:background="@color/background_dialer_white"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <FrameLayout
- android:id="@+id/message_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:background="@color/background_dialer_white"/>
+ android:layout_height="match_parent"
+ android:background="@color/background_dialer_white">
<com.android.dialer.widget.DialerToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
-</RelativeLayout>
\ No newline at end of file
+
+ <FrameLayout
+ android:id="@+id/message_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/background_dialer_white"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
index b23315b..0d22a82 100644
--- a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
+++ b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
@@ -42,7 +42,7 @@
}
// Check matches initials
- // TODO investigate faster implementation
+ // TODO(calderwoodra) investigate faster implementation
query = digitsOnly(query);
int queryIndex = 0;
@@ -60,6 +60,23 @@
return queryIndex == query.length();
}
+ /**
+ * Returns true if the subparts of the name (split by white space) begin with the query.
+ *
+ * <p>Examples:
+ *
+ * <ul>
+ * <li>#nameContainsQuery("b", "Brandon") returns true
+ * <li>#nameContainsQuery("o", "Bob") returns false
+ * <li>#nameContainsQuery("o", "Bob Olive") returns true
+ * </ul>
+ */
+ public static boolean nameContainsQuery(String query, String name) {
+ return Pattern.compile("(^|\\s)" + Pattern.quote(query.toLowerCase()))
+ .matcher(name.toLowerCase())
+ .find();
+ }
+
/** @return true if the number belongs to the query. */
public static boolean numberMatchesNumberQuery(String query, String number) {
return PhoneNumberUtils.isGlobalPhoneNumber(query)
diff --git a/java/com/android/dialer/searchfragment/common/SearchCursor.java b/java/com/android/dialer/searchfragment/common/SearchCursor.java
new file mode 100644
index 0000000..368ee09
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/common/SearchCursor.java
@@ -0,0 +1,38 @@
+/*
+ * 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.searchfragment.common;
+
+import android.database.Cursor;
+import android.support.annotation.NonNull;
+
+/** Base cursor interface needed for all cursors used in search. */
+public interface SearchCursor extends Cursor {
+
+ String[] HEADER_PROJECTION = {"header_text"};
+
+ int HEADER_TEXT_POSITION = 0;
+
+ /** Returns true if the current cursor position is a header */
+ boolean isHeader();
+
+ /**
+ * Notifies the cursor that the query has updated.
+ *
+ * @return true if the data set has changed.
+ */
+ boolean updateQuery(@NonNull String query);
+}
diff --git a/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml b/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml
new file mode 100644
index 0000000..8d2efca
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ 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.dialer.searchfragment.cp2"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
similarity index 96%
rename from java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
rename to java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
index a2ef58c..d5fcfba 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
+++ b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
@@ -34,12 +34,12 @@
import java.util.List;
/**
- * Wrapper for a cursor returned by {@link SearchContactsCursorLoader}.
+ * Wrapper for a cursor containing all on device contacts.
*
* <p>This cursor removes duplicate phone numbers associated with the same contact and can filter
* contacts based on a query by calling {@link #filter(String)}.
*/
-public final class SearchContactCursor implements Cursor {
+final class ContactFilterCursor implements Cursor {
private final Cursor cursor;
// List of cursor ids that are valid for displaying after filtering.
@@ -66,8 +66,8 @@
* @param cursor with projection {@link Projections#PHONE_PROJECTION}.
* @param query to filter cursor results.
*/
- public SearchContactCursor(Cursor cursor, @Nullable String query) {
- // TODO investigate copying this into a MatrixCursor and holding in memory
+ ContactFilterCursor(Cursor cursor, @Nullable String query) {
+ // TODO(calderwoodra) investigate copying this into a MatrixCursor and holding in memory
this.cursor = cursor;
filter(query);
}
@@ -142,7 +142,7 @@
if (TextUtils.isEmpty(query)
|| QueryFilteringUtil.nameMatchesT9Query(query, previousName)
|| QueryFilteringUtil.numberMatchesNumberQuery(query, previousMostQualifiedNumber)
- || previousName.contains(query)) {
+ || QueryFilteringUtil.nameContainsQuery(query, previousName)) {
queryFilteredPositions.add(previousMostQualifiedPosition);
}
}
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
index 5f06b59..1e8224d 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
@@ -30,14 +30,15 @@
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.callintent.CallInitiationType.Type;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.searchfragment.common.Projections;
import com.android.dialer.searchfragment.common.QueryBoldingUtil;
import com.android.dialer.searchfragment.common.R;
+import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.telecom.TelecomUtil;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -77,7 +78,7 @@
* Binds the ViewHolder with a cursor from {@link SearchContactsCursorLoader} with the data found
* at the cursors set position.
*/
- public void bind(Cursor cursor, String query) {
+ public void bind(SearchCursor cursor, String query) {
number = cursor.getString(Projections.PHONE_NUMBER);
String name = cursor.getString(Projections.PHONE_DISPLAY_NAME);
String label = getLabel(context.getResources(), cursor);
@@ -91,7 +92,7 @@
numberView.setText(QueryBoldingUtil.getNumberWithQueryBolded(query, secondaryInfo));
setCallToAction(cursor);
- if (shouldShowPhoto(cursor, name)) {
+ if (shouldShowPhoto(cursor)) {
nameOrNumberView.setVisibility(View.VISIBLE);
photo.setVisibility(View.VISIBLE);
String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI);
@@ -109,16 +110,19 @@
}
}
- private boolean shouldShowPhoto(Cursor cursor, String currentName) {
+ // Show the contact photo next to only the first number if a contact has multiple numbers
+ private boolean shouldShowPhoto(SearchCursor cursor) {
int currentPosition = cursor.getPosition();
- if (currentPosition == 0) {
- return true;
- } else {
- cursor.moveToPosition(currentPosition - 1);
- String previousName = cursor.getString(Projections.PHONE_DISPLAY_NAME);
+ String currentLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+ cursor.moveToPosition(currentPosition - 1);
+
+ if (!cursor.isHeader() && !cursor.isBeforeFirst()) {
+ String previousLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
cursor.moveToPosition(currentPosition);
- return !currentName.equals(previousName);
+ return !currentLookupKey.equals(previousLookupKey);
}
+ cursor.moveToPosition(currentPosition);
+ return true;
}
private static Uri getContactUri(Cursor cursor) {
@@ -127,8 +131,8 @@
return Contacts.getLookupUri(contactId, lookupKey);
}
- // TODO: handle CNAP and cequint types.
- // TODO: unify this into a utility method with CallLogAdapter#getNumberType
+ // TODO(calderwoodra): handle CNAP and cequint types.
+ // TODO(calderwoodra): unify this into a utility method with CallLogAdapter#getNumberType
private static String getLabel(Resources resources, Cursor cursor) {
int numberType = cursor.getInt(Projections.PHONE_TYPE);
String numberLabel = cursor.getString(Projections.PHONE_LABEL);
@@ -171,7 +175,7 @@
return CallToAction.VIDEO_CALL;
}
- // TODO: enriched calling
+ // TODO(calderwoodra): enriched calling
return CallToAction.NONE;
}
@@ -183,13 +187,13 @@
callToActionView.setVisibility(View.VISIBLE);
callToActionView.setImageDrawable(
context.getDrawable(com.android.contacts.common.R.drawable.ic_phone_attach));
- // TODO: open call composer.
+ // TODO(calderwoodra): open call composer.
break;
case CallToAction.VIDEO_CALL:
callToActionView.setVisibility(View.VISIBLE);
callToActionView.setImageDrawable(
context.getDrawable(R.drawable.quantum_ic_videocam_white_24));
- // TODO: place a video call
+ // TODO(calderwoodra): place a video call
break;
case CallToAction.NONE:
default:
@@ -197,7 +201,7 @@
"Invalid Call to action type: " + currentAction);
}
} else {
- // TODO: set the correct call initiation type.
+ // TODO(calderwoodra): set the correct call initiation type.
TelecomUtil.placeCall(context, new CallIntentBuilder(number, Type.REGULAR_SEARCH).build());
}
}
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java
new file mode 100644
index 0000000..18c9ecd
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.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.searchfragment.cp2;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import com.android.dialer.searchfragment.common.SearchCursor;
+
+/**
+ * {@link SearchCursor} implementation for displaying on device contacts.
+ *
+ * <p>Inserts header "All Contacts" at position 0.
+ */
+final class SearchContactsCursor extends MergeCursor implements SearchCursor {
+
+ private final ContactFilterCursor contactFilterCursor;
+
+ public static SearchContactsCursor newInstnace(
+ Context context, ContactFilterCursor contactFilterCursor) {
+ MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION);
+ headerCursor.addRow(new String[] {context.getString(R.string.all_contacts)});
+ return new SearchContactsCursor(new Cursor[] {headerCursor, contactFilterCursor});
+ }
+
+ private SearchContactsCursor(Cursor[] cursors) {
+ super(cursors);
+ contactFilterCursor = (ContactFilterCursor) cursors[1];
+ }
+
+ @Override
+ public boolean isHeader() {
+ return isFirst();
+ }
+
+ @Override
+ public boolean updateQuery(@Nullable String query) {
+ contactFilterCursor.filter(query);
+ return true;
+ }
+
+ @Override
+ public int getCount() {
+ // If we don't have any contents, we don't want to show the header
+ int count = contactFilterCursor.getCount();
+ return count == 0 ? 0 : count + 1;
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index c72f28b..d75a661 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -37,6 +37,11 @@
@Override
public Cursor loadInBackground() {
- return new SearchContactCursor(super.loadInBackground(), null);
+ // All contacts
+ Cursor cursor = super.loadInBackground();
+ // Filtering logic
+ ContactFilterCursor contactFilterCursor = new ContactFilterCursor(cursor, null);
+ // Header logic
+ return SearchContactsCursor.newInstnace(getContext(), contactFilterCursor);
}
}
diff --git a/java/com/android/dialer/searchfragment/cp2/res/values/strings.xml b/java/com/android/dialer/searchfragment/cp2/res/values/strings.xml
new file mode 100644
index 0000000..5462dc9
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?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 for a list of all contacts on device. [CHAR LIMIT=30]-->
+ <string name="all_contacts">All contacts</string>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index fcc87c3..2c02815 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -19,59 +19,111 @@
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Loader;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Bundle;
+import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import android.support.v13.app.FragmentCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.animation.Interpolator;
import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
+import com.android.dialer.animation.AnimUtils;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader;
import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader;
+import com.android.dialer.searchfragment.remote.RemoteContactsCursorLoader;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.ViewUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/** Fragment used for searching contacts. */
-public final class NewSearchFragment extends Fragment implements LoaderCallbacks<Cursor> {
+public final class NewSearchFragment extends Fragment
+ implements LoaderCallbacks<Cursor>, OnEmptyViewActionButtonClickedListener {
// Since some of our queries can generate network requests, we should delay them until the user
// stops typing to prevent generating too much network traffic.
private static final int NETWORK_SEARCH_DELAY_MILLIS = 300;
- private static final int CONTACTS_LOADER_ID = 0;
- private static final int NEARBY_PLACES_ID = 1;
+ @VisibleForTesting public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
+ private static final int CONTACTS_LOADER_ID = 0;
+ private static final int NEARBY_PLACES_LOADER_ID = 1;
+ private static final int REMOTE_DIRECTORIES_LOADER_ID = 2;
+ private static final int REMOTE_CONTACTS_LOADER_ID = 3;
+
+ private EmptyContentView emptyContentView;
private RecyclerView recyclerView;
private SearchAdapter adapter;
private String query;
+ private boolean remoteDirectoriesDisabledForTesting;
+ private final List<Directory> directories = new ArrayList<>();
private final Runnable loadNearbyPlacesRunnable =
- () -> getLoaderManager().restartLoader(NEARBY_PLACES_ID, null, this);
+ () -> getLoaderManager().restartLoader(NEARBY_PLACES_LOADER_ID, null, this);
+ private final Runnable loadRemoteContactsRunnable =
+ () -> getLoaderManager().restartLoader(REMOTE_CONTACTS_LOADER_ID, null, this);
+
+ private Runnable updatePositionRunnable;
@Nullable
@Override
public View onCreateView(
LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
- getLoaderManager().initLoader(0, null, this);
View view = inflater.inflate(R.layout.fragment_search, parent, false);
- adapter = new SearchAdapter(getContext());
+ adapter = new SearchAdapter(getContext(), new SearchCursorManager());
+ emptyContentView = view.findViewById(R.id.empty_view);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(adapter);
+ if (!PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ emptyContentView.setDescription(R.string.new_permission_no_search);
+ emptyContentView.setActionLabel(R.string.permission_single_turn_on);
+ emptyContentView.setActionClickedListener(this);
+ emptyContentView.setImage(R.drawable.empty_contacts);
+ emptyContentView.setVisibility(View.VISIBLE);
+ } else {
+ initLoaders();
+ }
+
+ if (updatePositionRunnable != null) {
+ ViewUtil.doOnPreDraw(view, false, updatePositionRunnable);
+ }
+ return view;
+ }
+
+ private void initLoaders() {
getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this);
loadNearbyPlacesCursor();
- return view;
+ loadRemoteDirectoriesCursor();
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
- // TODO add enterprise loader
+ // TODO(calderwoodra) add enterprise loader
if (id == CONTACTS_LOADER_ID) {
return new SearchContactsCursorLoader(getContext());
- } else if (id == NEARBY_PLACES_ID) {
+ } else if (id == NEARBY_PLACES_LOADER_ID) {
return new NearbyPlacesCursorLoader(getContext(), query);
+ } else if (id == REMOTE_DIRECTORIES_LOADER_ID) {
+ return new RemoteDirectoriesCursorLoader(getContext());
+ } else if (id == REMOTE_CONTACTS_LOADER_ID) {
+ return new RemoteContactsCursorLoader(getContext(), query, directories);
} else {
throw new IllegalStateException("Invalid loader id: " + id);
}
@@ -79,10 +131,29 @@
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
+ if (cursor != null
+ && !(loader instanceof RemoteDirectoriesCursorLoader)
+ && !(cursor instanceof SearchCursor)) {
+ throw Assert.createIllegalStateFailException("Cursors must implement SearchCursor");
+ }
+
if (loader instanceof SearchContactsCursorLoader) {
- adapter.setContactsCursor(cursor);
+ adapter.setContactsCursor((SearchCursor) cursor);
+
} else if (loader instanceof NearbyPlacesCursorLoader) {
- adapter.setNearbyPlacesCursor(cursor);
+ adapter.setNearbyPlacesCursor((SearchCursor) cursor);
+
+ } else if (loader instanceof RemoteContactsCursorLoader) {
+ adapter.setRemoteContactsCursor((SearchCursor) cursor);
+
+ } else if (loader instanceof RemoteDirectoriesCursorLoader) {
+ directories.clear();
+ cursor.moveToPosition(-1);
+ while (cursor.moveToNext()) {
+ directories.add(RemoteDirectoriesCursorLoader.readDirectory(cursor));
+ }
+ loadRemoteContactsCursors();
+
} else {
throw new IllegalStateException("Invalid loader: " + loader);
}
@@ -99,16 +170,28 @@
if (adapter != null) {
adapter.setQuery(query);
loadNearbyPlacesCursor();
+ loadRemoteContactsCursors();
}
}
+ public void animatePosition(int start, int end, int duration) {
+ // Called before the view is ready, prepare a runnable to run in onCreateView
+ if (getView() == null) {
+ updatePositionRunnable = () -> animatePosition(start, end, 0);
+ return;
+ }
+ boolean slideUp = start > end;
+ Interpolator interpolator = slideUp ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT;
+ getView().setTranslationY(start);
+ getView().animate().translationY(end).setInterpolator(interpolator).setDuration(duration);
+ updatePositionRunnable = null;
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
- // close adapters
- adapter.setNearbyPlacesCursor(null);
- adapter.setContactsCursor(null);
ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable);
+ ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
}
private void loadNearbyPlacesCursor() {
@@ -122,4 +205,55 @@
ThreadUtil.getUiThreadHandler()
.postDelayed(loadNearbyPlacesRunnable, NETWORK_SEARCH_DELAY_MILLIS);
}
+
+ @Override
+ public void onRequestPermissionsResult(
+ int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
+ if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+ // Force a refresh of the data since we were missing the permission before this.
+ emptyContentView.setVisibility(View.GONE);
+ initLoaders();
+ }
+ }
+ }
+
+ @Override
+ public void onEmptyViewActionButtonClicked() {
+ String[] deniedPermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
+ if (deniedPermissions.length > 0) {
+ LogUtil.i(
+ "NewSearchFragment.onEmptyViewActionButtonClicked",
+ "Requesting permissions: " + Arrays.toString(deniedPermissions));
+ FragmentCompat.requestPermissions(
+ this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+ }
+ }
+
+ private void loadRemoteDirectoriesCursor() {
+ if (!remoteDirectoriesDisabledForTesting) {
+ getLoaderManager().initLoader(REMOTE_DIRECTORIES_LOADER_ID, null, this);
+ }
+ }
+
+ private void loadRemoteContactsCursors() {
+ if (remoteDirectoriesDisabledForTesting) {
+ return;
+ }
+
+ // Cancel existing load if one exists.
+ ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
+ ThreadUtil.getUiThreadHandler()
+ .postDelayed(loadRemoteContactsRunnable, NETWORK_SEARCH_DELAY_MILLIS);
+ }
+
+ // Currently, setting up multiple FakeContentProviders doesn't work and results in this fragment
+ // being untestable while it can query multiple datasources. This is a temporary fix.
+ // TODO(b/64099602): Remove this method and test this fragment with multiple data sources
+ @VisibleForTesting
+ public void setRemoteDirectoriesDisabled(boolean disabled) {
+ remoteDirectoriesDisabledForTesting = disabled;
+ }
}
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 023513e..81e8e38 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -17,15 +17,16 @@
package com.android.dialer.searchfragment.list;
import android.content.Context;
-import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.cp2.SearchContactViewHolder;
import com.android.dialer.searchfragment.list.SearchCursorManager.RowType;
import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder;
+import com.android.dialer.searchfragment.remote.RemoteContactViewHolder;
/** RecyclerView adapter for {@link NewSearchFragment}. */
class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
@@ -35,9 +36,9 @@
private String query;
- SearchAdapter(Context context) {
- searchCursorManager = new SearchCursorManager();
+ SearchAdapter(Context context, SearchCursorManager searchCursorManager) {
this.context = context;
+ this.searchCursorManager = searchCursorManager;
}
@Override
@@ -49,11 +50,14 @@
case RowType.NEARBY_PLACES_ROW:
return new NearbyPlaceViewHolder(
LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
+ case RowType.CONTACT_HEADER:
case RowType.DIRECTORY_HEADER:
case RowType.NEARBY_PLACES_HEADER:
return new HeaderViewHolder(
LayoutInflater.from(context).inflate(R.layout.header_layout, root, false));
- case RowType.DIRECTORY_ROW: // TODO: add directory rows to search
+ case RowType.DIRECTORY_ROW:
+ return new RemoteContactViewHolder(
+ LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
case RowType.INVALID:
default:
throw Assert.createIllegalStateFailException("Invalid RowType: " + rowType);
@@ -68,20 +72,21 @@
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (holder instanceof SearchContactViewHolder) {
- Cursor cursor = searchCursorManager.getCursor(position);
- ((SearchContactViewHolder) holder).bind(cursor, query);
+ ((SearchContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
} else if (holder instanceof NearbyPlaceViewHolder) {
- Cursor cursor = searchCursorManager.getCursor(position);
- ((NearbyPlaceViewHolder) holder).bind(cursor, query);
+ ((NearbyPlaceViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
+ } else if (holder instanceof RemoteContactViewHolder) {
+ ((RemoteContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
} else if (holder instanceof HeaderViewHolder) {
- String header = context.getString(searchCursorManager.getHeaderText(position));
+ String header =
+ searchCursorManager.getCursor(position).getString(SearchCursor.HEADER_TEXT_POSITION);
((HeaderViewHolder) holder).setHeader(header);
} else {
throw Assert.createIllegalStateFailException("Invalid ViewHolder: " + holder);
}
}
- void setContactsCursor(Cursor cursor) {
+ void setContactsCursor(SearchCursor cursor) {
searchCursorManager.setContactsCursor(cursor);
notifyDataSetChanged();
}
@@ -97,12 +102,20 @@
public void setQuery(String query) {
this.query = query;
- searchCursorManager.setQuery(query);
- notifyDataSetChanged();
+ if (searchCursorManager.setQuery(query)) {
+ notifyDataSetChanged();
+ }
}
- public void setNearbyPlacesCursor(Cursor nearbyPlacesCursor) {
- searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor);
- notifyDataSetChanged();
+ public void setNearbyPlacesCursor(SearchCursor nearbyPlacesCursor) {
+ if (searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor)) {
+ notifyDataSetChanged();
+ }
+ }
+
+ public void setRemoteContactsCursor(SearchCursor remoteContactsCursor) {
+ if (searchCursorManager.setCorpDirectoryCursor(remoteContactsCursor)) {
+ notifyDataSetChanged();
+ }
}
}
diff --git a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
index 216a9ad..b385aa3 100644
--- a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
+++ b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
@@ -16,11 +16,9 @@
package com.android.dialer.searchfragment.list;
-import android.database.Cursor;
import android.support.annotation.IntDef;
-import android.support.annotation.StringRes;
import com.android.dialer.common.Assert;
-import com.android.dialer.searchfragment.cp2.SearchContactCursor;
+import com.android.dialer.searchfragment.common.SearchCursor;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -30,9 +28,9 @@
* <p>This class accepts three cursors:
*
* <ul>
- * <li>A contacts cursor {@link #setContactsCursor(Cursor)}
- * <li>A google search results cursor {@link #setNearbyPlacesCursor(Cursor)}
- * <li>A work directory cursor {@link #setCorpDirectoryCursor(Cursor)}
+ * <li>A contacts cursor {@link #setContactsCursor(SearchCursor)}
+ * <li>A google search results cursor {@link #setNearbyPlacesCursor(SearchCursor)}
+ * <li>A work directory cursor {@link #setCorpDirectoryCursor(SearchCursor)}
* </ul>
*
* <p>The key purpose of this class is to compose three aforementioned cursors together to function
@@ -50,6 +48,7 @@
@Retention(RetentionPolicy.SOURCE)
@IntDef({
SearchCursorManager.RowType.INVALID,
+ SearchCursorManager.RowType.CONTACT_HEADER,
SearchCursorManager.RowType.CONTACT_ROW,
SearchCursorManager.RowType.NEARBY_PLACES_HEADER,
SearchCursorManager.RowType.NEARBY_PLACES_ROW,
@@ -58,25 +57,29 @@
})
@interface RowType {
int INVALID = 0;
+ // TODO(calderwoodra) add suggestions header and list
+ /** Header to mark the start of contact rows. */
+ int CONTACT_HEADER = 1;
/** A row containing contact information for contacts stored locally on device. */
- int CONTACT_ROW = 1;
+ int CONTACT_ROW = 2;
/** Header to mark the end of contact rows and start of nearby places rows. */
- int NEARBY_PLACES_HEADER = 2;
+ int NEARBY_PLACES_HEADER = 3;
/** A row containing nearby places information/search results. */
- int NEARBY_PLACES_ROW = 3;
+ int NEARBY_PLACES_ROW = 4;
/** Header to mark the end of the previous row set and start of directory rows. */
- int DIRECTORY_HEADER = 4;
+ int DIRECTORY_HEADER = 5;
/** A row containing contact information for contacts stored externally in corp directories. */
- int DIRECTORY_ROW = 5;
+ int DIRECTORY_ROW = 6;
}
- private Cursor contactsCursor = null;
- private Cursor nearbyPlacesCursor = null;
- private Cursor corpDirectoryCursor = null;
+ private SearchCursor contactsCursor = null;
+ private SearchCursor nearbyPlacesCursor = null;
+ private SearchCursor corpDirectoryCursor = null;
- void setContactsCursor(Cursor cursor) {
+ /** Returns true if the cursor changed. */
+ boolean setContactsCursor(SearchCursor cursor) {
if (cursor == contactsCursor) {
- return;
+ return false;
}
if (contactsCursor != null && !contactsCursor.isClosed()) {
@@ -88,11 +91,13 @@
} else {
contactsCursor = null;
}
+ return true;
}
- void setNearbyPlacesCursor(Cursor cursor) {
+ /** Returns true if the cursor changed. */
+ boolean setNearbyPlacesCursor(SearchCursor cursor) {
if (cursor == nearbyPlacesCursor) {
- return;
+ return false;
}
if (nearbyPlacesCursor != null && !nearbyPlacesCursor.isClosed()) {
@@ -104,11 +109,13 @@
} else {
nearbyPlacesCursor = null;
}
+ return true;
}
- void setCorpDirectoryCursor(Cursor cursor) {
+ /** Returns true if a cursor changed. */
+ boolean setCorpDirectoryCursor(SearchCursor cursor) {
if (cursor == corpDirectoryCursor) {
- return;
+ return false;
}
if (corpDirectoryCursor != null && !corpDirectoryCursor.isClosed()) {
@@ -120,16 +127,26 @@
} else {
corpDirectoryCursor = null;
}
+ return true;
}
- void setQuery(String query) {
+ boolean setQuery(String query) {
+ boolean updated = false;
if (contactsCursor != null) {
- // TODO: abstract this
- ((SearchContactCursor) contactsCursor).filter(query);
+ updated = contactsCursor.updateQuery(query);
}
+
+ if (nearbyPlacesCursor != null) {
+ updated |= nearbyPlacesCursor.updateQuery(query);
+ }
+
+ if (corpDirectoryCursor != null) {
+ updated |= corpDirectoryCursor.updateQuery(query);
+ }
+ return updated;
}
- /** @return the sum of counts of all cursors, including headers. */
+ /** Returns the sum of counts of all cursors, including headers. */
int getCount() {
int count = 0;
if (contactsCursor != null) {
@@ -137,12 +154,10 @@
}
if (nearbyPlacesCursor != null) {
- count++; // header
count += nearbyPlacesCursor.getCount();
}
if (corpDirectoryCursor != null) {
- count++; // header
count += corpDirectoryCursor.getCount();
}
@@ -151,54 +166,30 @@
@RowType
int getRowType(int position) {
- if (contactsCursor != null) {
- position -= contactsCursor.getCount();
-
- if (position < 0) {
- return SearchCursorManager.RowType.CONTACT_ROW;
- }
+ SearchCursor cursor = getCursor(position);
+ if (cursor == contactsCursor) {
+ return cursor.isHeader() ? RowType.CONTACT_HEADER : RowType.CONTACT_ROW;
}
- if (nearbyPlacesCursor != null) {
- if (position == 0) {
- return SearchCursorManager.RowType.NEARBY_PLACES_HEADER;
- } else {
- position--; // header
- }
-
- position -= nearbyPlacesCursor.getCount();
-
- if (position < 0) {
- return SearchCursorManager.RowType.NEARBY_PLACES_ROW;
- }
+ if (cursor == nearbyPlacesCursor) {
+ return cursor.isHeader() ? RowType.NEARBY_PLACES_HEADER : RowType.NEARBY_PLACES_ROW;
}
- if (corpDirectoryCursor != null) {
- if (position == 0) {
- return SearchCursorManager.RowType.DIRECTORY_HEADER;
- } else {
- position--; // header
- }
-
- position -= corpDirectoryCursor.getCount();
-
- if (position < 0) {
- return SearchCursorManager.RowType.DIRECTORY_ROW;
- }
+ if (cursor == corpDirectoryCursor) {
+ return cursor.isHeader() ? RowType.DIRECTORY_HEADER : RowType.DIRECTORY_ROW;
}
-
throw Assert.createIllegalStateFailException("No valid row type.");
}
/**
- * Gets cursor corresponding to position in coelesced list of search cursors. Callers should
+ * Gets cursor corresponding to position in coalesced list of search cursors. Callers should
* ensure that {@link #getRowType(int)} doesn't correspond to header position, otherwise an
* exception will be thrown.
*
- * @param position in coalecsed list of search cursors
+ * @param position in coalesced list of search cursors
* @return Cursor moved to position specific to passed in position.
*/
- Cursor getCursor(int position) {
+ SearchCursor getCursor(int position) {
if (contactsCursor != null) {
int count = contactsCursor.getCount();
@@ -210,8 +201,6 @@
}
if (nearbyPlacesCursor != null) {
- Assert.checkArgument(position != 0, "No valid cursor, position is nearby places header.");
- position--; // header
int count = nearbyPlacesCursor.getCount();
if (position - count < 0) {
@@ -222,8 +211,6 @@
}
if (corpDirectoryCursor != null) {
- Assert.checkArgument(position != 0, "No valid cursor, position is directory search header.");
- position--; // header
int count = corpDirectoryCursor.getCount();
if (position - count < 0) {
@@ -236,23 +223,6 @@
throw Assert.createIllegalStateFailException("No valid cursor.");
}
- @StringRes
- int getHeaderText(int position) {
- @RowType int rowType = getRowType(position);
- switch (rowType) {
- case RowType.NEARBY_PLACES_HEADER:
- return R.string.nearby_places;
- case RowType.DIRECTORY_HEADER: // TODO
- case RowType.DIRECTORY_ROW:
- case RowType.CONTACT_ROW:
- case RowType.NEARBY_PLACES_ROW:
- case RowType.INVALID:
- default:
- throw Assert.createIllegalStateFailException(
- "Invalid row type, position " + position + " is rowtype " + rowType);
- }
- }
-
/** removes all cursors. */
void clear() {
if (contactsCursor != null) {
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
index 06f2348..07113c0 100644
--- a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
+++ b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
@@ -14,8 +14,19 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<android.support.v7.widget.RecyclerView
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/recycler_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <android.support.v7.widget.RecyclerView
+ android:id="@+id/recycler_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+
+ <com.android.dialer.widget.EmptyContentView
+ android:id="@+id/empty_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="gone"/>
+</FrameLayout>
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
index 36af42e..eef0dee 100644
--- a/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
+++ b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
@@ -18,5 +18,6 @@
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
android:paddingStart="16dp"
style="@style/SecondaryText"/>
diff --git a/java/com/android/dialer/searchfragment/list/res/values/strings.xml b/java/com/android/dialer/searchfragment/list/res/values/strings.xml
new file mode 100644
index 0000000..0d25b8c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/list/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2012 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<resources>
+ <!-- Shown as a prompt to turn on contacts permissions to allow contact search [CHAR LIMIT=NONE]. See 2424710404207193826 for current translation. -->
+ <string name="new_permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
+</resources>
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
index 178cd83..52fb086 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
@@ -13,4 +13,4 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<manifest package="com.android.dialer.searchfragment.common"/>
\ No newline at end of file
+<manifest package="com.android.dialer.searchfragment.nearbyplaces"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
index b6e5a90..575582e 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
@@ -24,10 +24,10 @@
import android.view.View;
import android.widget.QuickContactBadge;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.searchfragment.common.Projections;
import com.android.dialer.searchfragment.common.QueryBoldingUtil;
import com.android.dialer.searchfragment.common.R;
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java
new file mode 100644
index 0000000..a4142a4
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.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.searchfragment.nearbyplaces;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import com.android.dialer.searchfragment.common.SearchCursor;
+
+/** {@link SearchCursor} implementation for displaying on nearby places. */
+final class NearbyPlacesCursor extends MergeCursor implements SearchCursor {
+
+ private final Cursor nearbyPlacesCursor;
+
+ public static NearbyPlacesCursor newInstnace(Context context, Cursor nearbyPlacesCursor) {
+ MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION);
+ headerCursor.addRow(new String[] {context.getString(R.string.nearby_places)});
+ return new NearbyPlacesCursor(new Cursor[] {headerCursor, nearbyPlacesCursor});
+ }
+
+ private NearbyPlacesCursor(Cursor[] cursors) {
+ super(cursors);
+ nearbyPlacesCursor = cursors[1];
+ }
+
+ @Override
+ public boolean isHeader() {
+ return isFirst();
+ }
+
+ @Override
+ public boolean updateQuery(@Nullable String query) {
+ // When the query changes, a new network request is made for nearby places. Meaning this cursor
+ // will be closed and another created, so return false.
+ return false;
+ }
+
+ @Override
+ public int getCount() {
+ // If we don't have any contents, we don't want to show the header
+ if (nearbyPlacesCursor == null || nearbyPlacesCursor.isClosed()) {
+ return 0;
+ }
+
+ int count = nearbyPlacesCursor.getCount();
+ return count == 0 ? 0 : count + 1;
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
index 9f3193e..6807a6e 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.content.CursorLoader;
+import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
@@ -32,6 +33,11 @@
super(context, getContentUri(context, query), Projections.PHONE_PROJECTION, null, null, null);
}
+ @Override
+ public Cursor loadInBackground() {
+ return NearbyPlacesCursor.newInstnace(getContext(), super.loadInBackground());
+ }
+
private static Uri getContentUri(Context context, String query) {
return PhoneDirectoryExtenderAccessor.get(context)
.getContentUri()
diff --git a/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml b/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml
new file mode 100644
index 0000000..e52f531
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ 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.dialer.searchfragment.remote"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
new file mode 100644
index 0000000..5fb12d3
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
@@ -0,0 +1,133 @@
+/*
+ * 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.searchfragment.remote;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.common.QueryBoldingUtil;
+import com.android.dialer.searchfragment.common.R;
+import com.android.dialer.searchfragment.common.SearchCursor;
+import com.android.dialer.telecom.TelecomUtil;
+
+/** ViewHolder for a nearby place row. */
+public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
+ implements View.OnClickListener {
+
+ private final Context context;
+ private final TextView nameView;
+ private final TextView numberView;
+ private final QuickContactBadge photo;
+
+ private String number;
+
+ public RemoteContactViewHolder(View view) {
+ super(view);
+ view.setOnClickListener(this);
+ photo = view.findViewById(R.id.photo);
+ nameView = view.findViewById(R.id.primary);
+ numberView = view.findViewById(R.id.secondary);
+ context = view.getContext();
+ }
+
+ /**
+ * Binds the ViewHolder with a cursor from {@link RemoteContactsCursorLoader} with the data found
+ * at the cursors current position.
+ */
+ public void bind(SearchCursor cursor, String query) {
+ number = cursor.getString(Projections.PHONE_NUMBER);
+ String name = cursor.getString(Projections.PHONE_DISPLAY_NAME);
+ String label = getLabel(context.getResources(), cursor);
+ String secondaryInfo =
+ TextUtils.isEmpty(label)
+ ? number
+ : context.getString(
+ com.android.contacts.common.R.string.call_subject_type_and_number, label, number);
+
+ nameView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name));
+ numberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, secondaryInfo));
+
+ if (shouldShowPhoto(cursor)) {
+ nameView.setVisibility(View.VISIBLE);
+ photo.setVisibility(View.VISIBLE);
+ String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI);
+ ContactPhotoManager.getInstance(context)
+ .loadDialerThumbnailOrPhoto(
+ photo,
+ getContactUri(cursor),
+ cursor.getLong(Projections.PHONE_PHOTO_ID),
+ photoUri == null ? null : Uri.parse(photoUri),
+ name,
+ LetterTileDrawable.TYPE_DEFAULT);
+ } else {
+ nameView.setVisibility(View.GONE);
+ photo.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ // Show the contact photo next to only the first number if a contact has multiple numbers
+ private boolean shouldShowPhoto(SearchCursor cursor) {
+ int currentPosition = cursor.getPosition();
+ String currentLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+ cursor.moveToPosition(currentPosition - 1);
+
+ if (!cursor.isHeader() && !cursor.isBeforeFirst()) {
+ String previousLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+ cursor.moveToPosition(currentPosition);
+ return !currentLookupKey.equals(previousLookupKey);
+ }
+ cursor.moveToPosition(currentPosition);
+ return true;
+ }
+
+ // TODO(calderwoodra): unify this into a utility method with CallLogAdapter#getNumberType
+ private static String getLabel(Resources resources, Cursor cursor) {
+ int numberType = cursor.getInt(Projections.PHONE_TYPE);
+ String numberLabel = cursor.getString(Projections.PHONE_LABEL);
+
+ // Returns empty label instead of "custom" if the custom label is empty.
+ if (numberType == Phone.TYPE_CUSTOM && TextUtils.isEmpty(numberLabel)) {
+ return "";
+ }
+ return (String) Phone.getTypeLabel(resources, numberType, numberLabel);
+ }
+
+ private static Uri getContactUri(Cursor cursor) {
+ long contactId = cursor.getLong(Projections.PHONE_ID);
+ String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+ return ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
+ }
+
+ @Override
+ public void onClick(View v) {
+ TelecomUtil.placeCall(
+ context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build());
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
new file mode 100644
index 0000000..d7c4f38
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
@@ -0,0 +1,105 @@
+/*
+ * 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.searchfragment.remote;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.common.SearchCursor;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * {@link MergeCursor} used for combining remote directory cursors into one cursor.
+ *
+ * <p>Usually a device with multiple Google accounts will have multiple remote directories returned
+ * by {@link RemoteDirectoriesCursorLoader}, each represented as a {@link Directory}.
+ *
+ * <p>This cursor merges them together with a header at the start of each cursor/list using {@link
+ * Directory#getDisplayName()} as the header text.
+ */
+@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
+public final class RemoteContactsCursor extends MergeCursor implements SearchCursor {
+
+ /**
+ * Returns a single cursor with headers inserted between each non-empty cursor. If all cursors are
+ * empty, null or closed, this method returns null.
+ */
+ @Nullable
+ @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
+ public static RemoteContactsCursor newInstance(
+ Context context, Cursor[] cursors, List<Directory> directories) {
+ Assert.checkArgument(
+ cursors.length == directories.size(), "Directories and cursors must be the same size.");
+ Cursor[] cursorsWithHeaders = insertHeaders(context, cursors, directories);
+ if (cursorsWithHeaders.length > 0) {
+ return new RemoteContactsCursor(cursorsWithHeaders);
+ }
+ return null;
+ }
+
+ private RemoteContactsCursor(Cursor[] cursors) {
+ super(cursors);
+ }
+
+ private static Cursor[] insertHeaders(
+ Context context, Cursor[] cursors, List<Directory> directories) {
+ List<Cursor> cursorList = new ArrayList<>();
+ for (int i = 0; i < cursors.length; i++) {
+ Cursor cursor = cursors[i];
+
+ if (cursor == null || cursor.isClosed()) {
+ continue;
+ }
+
+ Directory directory = directories.get(i);
+ if (cursor.getCount() == 0) {
+ // Since the cursor isn't being merged in, we need to close it here.
+ cursor.close();
+ continue;
+ }
+
+ cursorList.add(createHeaderCursor(context, directory.getDisplayName()));
+ cursorList.add(cursor);
+ }
+ return cursorList.toArray(new Cursor[cursorList.size()]);
+ }
+
+ private static MatrixCursor createHeaderCursor(Context context, String name) {
+ MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION, 1);
+ headerCursor.addRow(new String[] {context.getString(R.string.directory, name)});
+ return headerCursor;
+ }
+
+ /** Returns true if the current position is a header row. */
+ @Override
+ public boolean isHeader() {
+ return !isClosed() && getColumnIndex(HEADER_PROJECTION[HEADER_TEXT_POSITION]) != -1;
+ }
+
+ @Override
+ public boolean updateQuery(@Nullable String query) {
+ // When the query changes, a new network request is made for nearby places. Meaning this cursor
+ // will be closed and another created, so return false.
+ return false;
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
new file mode 100644
index 0000000..771b7f1
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.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.searchfragment.remote;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.annotation.VisibleForTesting;
+import android.text.TextUtils;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import java.util.List;
+
+/**
+ * Cursor loader to load extended contacts on device.
+ *
+ * <p>This loader performs several database queries in serial and merges the resulting cursors
+ * together into {@link RemoteContactsCursor}. If there are no results, the loader will return a
+ * null cursor.
+ */
+public final class RemoteContactsCursorLoader extends CursorLoader {
+
+ private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
+ Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+
+ private static final String IGNORE_NUMBER_TOO_LONG_CLAUSE = "length(" + Phone.NUMBER + ") < 1000";
+ private static final String MAX_RESULTS = "20";
+
+ private final String query;
+ private final List<Directory> directories;
+ private final Cursor[] cursors;
+
+ public RemoteContactsCursorLoader(Context context, String query, List<Directory> directories) {
+ super(
+ context,
+ null,
+ Projections.PHONE_PROJECTION,
+ IGNORE_NUMBER_TOO_LONG_CLAUSE,
+ null,
+ Phone.SORT_KEY_PRIMARY);
+ this.query = query;
+ this.directories = directories;
+ cursors = new Cursor[directories.size()];
+ }
+
+ @Override
+ public Cursor loadInBackground() {
+ for (int i = 0; i < directories.size(); i++) {
+ Directory directory = directories.get(i);
+ // Since the on device contacts could be queried as remote directories and we already query
+ // them in SearchContactsCursorLoader, avoid querying them again.
+ // TODO(calderwoodra): It's a happy coincidence that on device contacts don't have directory
+ // names set, leaving this todo to investigate a better way to isolate them from other remote
+ // directories.
+ if (TextUtils.isEmpty(directory.getDisplayName())) {
+ cursors[i] = null;
+ continue;
+ }
+ cursors[i] =
+ getContext()
+ .getContentResolver()
+ .query(
+ getContentFilterUri(query, directory.getId()),
+ getProjection(),
+ getSelection(),
+ getSelectionArgs(),
+ getSortOrder());
+ }
+ return RemoteContactsCursor.newInstance(getContext(), cursors, directories);
+ }
+
+ @VisibleForTesting
+ static Uri getContentFilterUri(String query, int directoryId) {
+ Uri baseUri =
+ VERSION.SDK_INT >= VERSION_CODES.N
+ ? ENTERPRISE_CONTENT_FILTER_URI
+ : Phone.CONTENT_FILTER_URI;
+
+ return baseUri
+ .buildUpon()
+ .appendPath(query)
+ .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId))
+ .appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true")
+ .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, MAX_RESULTS)
+ .build();
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
new file mode 100644
index 0000000..327a62c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
@@ -0,0 +1,77 @@
+/*
+
+* 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.searchfragment.remote;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.provider.ContactsContract;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import com.google.auto.value.AutoValue;
+
+/** CursorLoader to load the list of remote directories on the device. */
+public final class RemoteDirectoriesCursorLoader extends CursorLoader {
+
+ /** Positions of columns in {@code PROJECTIONS}. */
+ private static final int ID = 0;
+
+ private static final int DISPLAY_NAME = 1;
+ private static final int PHOTO_SUPPORT = 2;
+
+ @VisibleForTesting
+ static final String[] PROJECTION = {
+ ContactsContract.Directory._ID,
+ ContactsContract.Directory.DISPLAY_NAME,
+ ContactsContract.Directory.PHOTO_SUPPORT,
+ };
+
+ public RemoteDirectoriesCursorLoader(Context context) {
+ super(context, getContentUri(), PROJECTION, null, null, ContactsContract.Directory._ID);
+ }
+
+ /** @return current cursor row represented as a {@link Directory}. */
+ public static Directory readDirectory(Cursor cursor) {
+ return Directory.create(
+ cursor.getInt(ID), cursor.getString(DISPLAY_NAME), cursor.getInt(PHOTO_SUPPORT) != 0);
+ }
+
+ private static Uri getContentUri() {
+ return VERSION.SDK_INT >= VERSION_CODES.N
+ ? ContactsContract.Directory.ENTERPRISE_CONTENT_URI
+ : ContactsContract.Directory.CONTENT_URI;
+ }
+
+ /** POJO representing the results returned from {@link RemoteDirectoriesCursorLoader}. */
+ @AutoValue
+ public abstract static class Directory {
+ public static Directory create(int id, @Nullable String displayName, boolean supportsPhotos) {
+ return new AutoValue_RemoteDirectoriesCursorLoader_Directory(id, displayName, supportsPhotos);
+ }
+
+ abstract int getId();
+
+ /** Returns a user facing display name of the directory. Null if none exists. */
+ abstract @Nullable String getDisplayName();
+
+ abstract boolean supportsPhotos();
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/res/values/strings.xml b/java/com/android/dialer/searchfragment/remote/res/values/strings.xml
new file mode 100644
index 0000000..beabba1
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?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:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Label for a list of contacts stored in a seperate directory [CHAR LIMIT=30]-->
+ <string name="directory">Directory <xliff:g example="google.com" id="email">%1$s</xliff:g></string>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/testing/TestSearchCursor.java b/java/com/android/dialer/searchfragment/testing/TestSearchCursor.java
new file mode 100644
index 0000000..9a0b957
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/testing/TestSearchCursor.java
@@ -0,0 +1,47 @@
+/*
+ * 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.searchfragment.testing;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import com.android.dialer.searchfragment.common.SearchCursor;
+
+/** {@link SearchCursor} implementation useful for testing with a header inserted at position 0. */
+public final class TestSearchCursor extends MergeCursor implements SearchCursor {
+
+ public static TestSearchCursor newInstance(Cursor cursor, String header) {
+ MatrixCursor headerRow = new MatrixCursor(HEADER_PROJECTION);
+ headerRow.addRow(new String[] {header});
+ return new TestSearchCursor(new Cursor[] {headerRow, cursor});
+ }
+
+ private TestSearchCursor(Cursor[] cursors) {
+ super(cursors);
+ }
+
+ @Override
+ public boolean isHeader() {
+ return isFirst();
+ }
+
+ @Override
+ public boolean updateQuery(@Nullable String query) {
+ return false;
+ }
+}
diff --git a/java/com/android/dialer/shortcuts/IconFactory.java b/java/com/android/dialer/shortcuts/IconFactory.java
index 4ec964c..7aad112 100644
--- a/java/com/android/dialer/shortcuts/IconFactory.java
+++ b/java/com/android/dialer/shortcuts/IconFactory.java
@@ -33,8 +33,8 @@
import android.support.annotation.WorkerThread;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.common.Assert;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.util.DrawableConverter;
import java.io.InputStream;
diff --git a/java/com/android/dialer/shortcuts/ShortcutRefresher.java b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
index 120382d..496f3f0 100644
--- a/java/com/android/dialer/shortcuts/ShortcutRefresher.java
+++ b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
@@ -20,21 +20,17 @@
import android.os.Build;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
import com.android.contacts.common.list.ContactEntry;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.common.concurrent.FallibleAsyncTask;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutors;
import java.util.ArrayList;
import java.util.List;
/** Refreshes launcher shortcuts from UI components using provided list of contacts. */
public final class ShortcutRefresher {
- private static final AsyncTaskExecutor EXECUTOR = AsyncTaskExecutors.createThreadPoolExecutor();
-
/** Asynchronously updates launcher shortcuts using the provided list of contacts. */
@MainThread
public static void refresh(@NonNull Context context, List<ContactEntry> contacts) {
@@ -49,36 +45,27 @@
return;
}
- //noinspection unchecked
- EXECUTOR.submit(Task.ID, new Task(context), new ArrayList<>(contacts));
+ DialerExecutors.createNonUiTaskBuilder(new RefreshWorker(context))
+ .build()
+ .executeSerial(new ArrayList<>(contacts));
}
- private static final class Task extends FallibleAsyncTask<List<ContactEntry>, Void, Void> {
- private static final String ID = "ShortcutRefresher.Task";
-
+ private static final class RefreshWorker implements Worker<List<ContactEntry>, Void> {
private final Context context;
- Task(Context context) {
+ RefreshWorker(Context context) {
this.context = context;
}
- /**
- * @param params array containing exactly one element, the list of contacts from favorites
- * tiles, ordered in tile order.
- */
- @SafeVarargs
@Override
- @NonNull
- @WorkerThread
- protected final Void doInBackgroundFallible(List<ContactEntry>... params) {
- Assert.isWorkerThread();
+ public Void doInBackground(List<ContactEntry> contacts) {
LogUtil.enterBlock("ShortcutRefresher.Task.doInBackground");
// Only dynamic shortcuts are maintained from UI components. Pinned shortcuts are maintained
// by the job scheduler. This is because a pinned contact may not necessarily still be in the
// favorites tiles, so refreshing it would require an additional database query. We don't want
// to incur the cost of that extra database query every time the favorites tiles change.
- new DynamicShortcuts(context, new IconFactory(context)).refresh(params[0]); // Blocking
+ new DynamicShortcuts(context, new IconFactory(context)).refresh(contacts); // Blocking
return null;
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
index f2749b2..4efc0ee 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
@@ -30,6 +30,9 @@
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.databasepopulator.CallLogPopulator;
+import com.android.dialer.databasepopulator.ContactsPopulator;
+import com.android.dialer.databasepopulator.VoicemailPopulator;
import com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity;
import com.android.dialer.persistentlog.PersistentLogger;
@@ -89,6 +92,13 @@
return true;
});
subMenu
+ .add("Clean database")
+ .setOnMenuItemClickListener(
+ (itme) -> {
+ cleanDatabase();
+ return true;
+ });
+ subMenu
.add("Sync Voicemail")
.setOnMenuItemClickListener(
(item) -> {
@@ -128,9 +138,21 @@
new AsyncTask<Void, Void, Void>() {
@Override
public Void doInBackground(Void... params) {
- SimulatorContacts.populateContacts(context);
- SimulatorCallLog.populateCallLog(context);
- SimulatorVoicemail.populateVoicemail(context);
+ ContactsPopulator.populateContacts(context);
+ CallLogPopulator.populateCallLog(context);
+ VoicemailPopulator.populateVoicemail(context);
+ return null;
+ }
+ }.execute();
+ }
+
+ private void cleanDatabase() {
+ new AsyncTask<Void, Void, Void>() {
+ @Override
+ public Void doInBackground(Void... params) {
+ ContactsPopulator.deleteAllContacts(context);
+ CallLogPopulator.deleteAllCallLog(context);
+ VoicemailPopulator.deleteAllVoicemail(context);
return null;
}
}.execute();
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 68ee388..c087439 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -23,7 +23,7 @@
import android.view.View;
import android.view.ViewGroup;
-/** Favorites fragment. Contents TBD. TODO */
+/** Favorites fragment. Contents TBD. TODO(calderwoodra) */
public class SpeedDialFragment extends Fragment {
public static SpeedDialFragment newInstance() {
@@ -38,7 +38,7 @@
}
public boolean hasFrequents() {
- // TODO
+ // TODO(calderwoodra)
return false;
}
}
diff --git a/java/com/android/dialer/storage/DeviceProtected.java b/java/com/android/dialer/storage/DeviceProtected.java
new file mode 100644
index 0000000..862259a
--- /dev/null
+++ b/java/com/android/dialer/storage/DeviceProtected.java
@@ -0,0 +1,22 @@
+/*
+ * 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.storage;
+
+import javax.inject.Qualifier;
+
+/** Annotation for retrieving device protected storage objects. */
+@Qualifier
+public @interface DeviceProtected {}
diff --git a/java/com/android/dialer/storage/StorageComponent.java b/java/com/android/dialer/storage/StorageComponent.java
new file mode 100644
index 0000000..51afea7
--- /dev/null
+++ b/java/com/android/dialer/storage/StorageComponent.java
@@ -0,0 +1,40 @@
+/*
+ * 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.storage;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import com.android.dialer.inject.HasRootComponent;
+import dagger.Subcomponent;
+
+/** Dagger component for storage. */
+@Subcomponent
+public abstract class StorageComponent {
+
+ public abstract @DeviceProtected SharedPreferences deviceProtectedSharedPreferences();
+
+ public static StorageComponent get(Context context) {
+ return ((StorageComponent.HasComponent)
+ ((HasRootComponent) context.getApplicationContext()).component())
+ .storageComponent();
+ }
+
+ /** Used to refer to the root application component. */
+ public interface HasComponent {
+ StorageComponent storageComponent();
+ }
+}
diff --git a/java/com/android/dialer/storage/StorageModule.java b/java/com/android/dialer/storage/StorageModule.java
new file mode 100644
index 0000000..8c97980
--- /dev/null
+++ b/java/com/android/dialer/storage/StorageModule.java
@@ -0,0 +1,46 @@
+/*
+ * 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.storage;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.support.v4.content.ContextCompat;
+import com.android.dialer.inject.ApplicationContext;
+import dagger.Module;
+import dagger.Provides;
+import javax.inject.Singleton;
+
+/** Module for the storage component. */
+@Module
+public class StorageModule {
+
+ @Provides
+ @Singleton
+ @DeviceProtected
+ static SharedPreferences provideDeviceProtectedSharedPreferences(
+ @ApplicationContext Context appContext) {
+ // #createDeviceProtectedStorageContext returns a new context each time, so we cache the shared
+ // preferences object in order to avoid accessing disk for every operation.
+ Context deviceProtectedContext = ContextCompat.createDeviceProtectedStorageContext(appContext);
+
+ // ContextCompat.createDeviceProtectedStorageContext(context) returns null on pre-N, thus fall
+ // back to regular default shared preference for pre-N devices since devices protected context
+ // is not available.
+ return PreferenceManager.getDefaultSharedPreferences(
+ deviceProtectedContext != null ? deviceProtectedContext : appContext);
+ }
+}
diff --git a/java/com/android/dialer/strictmode/DialerStrictMode.java b/java/com/android/dialer/strictmode/DialerStrictMode.java
new file mode 100644
index 0000000..5ce2ad6
--- /dev/null
+++ b/java/com/android/dialer/strictmode/DialerStrictMode.java
@@ -0,0 +1,154 @@
+/*
+ * 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.strictmode;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Looper;
+import android.os.StrictMode;
+import android.os.StrictMode.ThreadPolicy;
+import android.os.StrictMode.VmPolicy;
+import android.preference.PreferenceManager;
+import com.android.dialer.buildtype.BuildType;
+import com.android.dialer.util.DialerUtils;
+
+/** Enables strict mode for the application, and provides means of temporarily disabling it. */
+public final class DialerStrictMode {
+
+ /** Initializes strict mode on application start. */
+ public static void onApplicationCreate(Application application) {
+ warmupSharedPrefs(application);
+ enableDeathPenalty();
+ }
+
+ /**
+ * We frequently access shared preferences on the main thread, which causes strict mode
+ * violations. When strict mode is allowed, warm up the shared preferences so that later uses of
+ * shared preferences access the in-memory versions and we don't have to bypass strict mode at
+ * every point in the application where shared preferences are accessed.
+ */
+ private static void warmupSharedPrefs(Application application) {
+ if (isStrictModeAllowed()) {
+ // From credential-encrypted (CE) storage, i.e.:
+ // /data/data/com.google.android.dialer/shared_prefs
+
+ // com.google.android.dialer_preferences.xml
+ PreferenceManager.getDefaultSharedPreferences(application);
+
+ // com.google.android.dialer.xml
+ application.getSharedPreferences(application.getPackageName(), Context.MODE_PRIVATE);
+
+ // From device-encrypted (DE) storage, i.e.:
+ // /data/user_de/0/com.android.dialer/shared_prefs/
+
+ // com.google.android.dialer_preferences.xml
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(application);
+ }
+ }
+
+ /**
+ * Disables the strict mode death penalty. If strict mode is enabled for the build, warnings are
+ * printed instead of the application crashing.
+ *
+ * <p>You should typically do this only temporarily and restore the death penalty in a finally
+ * block using {@link #enableDeathPenalty()}.
+ *
+ * <p>The thread policy is only mutated if this is called from the main thread.
+ */
+ public static void disableDeathPenalty() {
+ if (isStrictModeAllowed()) {
+ if (onMainThread()) {
+ StrictMode.setThreadPolicy(threadPolicyTemplate().build());
+ }
+ StrictMode.setVmPolicy(vmPolicyTemplate().build());
+ }
+ }
+
+ /**
+ * Restore the death penalty. This should typically be called in a finally block after calling
+ * {@link #disableDeathPenalty()}.
+ *
+ * <p>The thread policy is only mutated if this is called from the main thread.
+ */
+ public static void enableDeathPenalty() {
+ if (isStrictModeAllowed()) {
+ if (onMainThread()) {
+ StrictMode.setThreadPolicy(threadPolicyTemplate().penaltyDeath().build());
+ }
+ StrictMode.setVmPolicy(vmPolicyTemplate().penaltyDeath().build());
+ }
+ }
+
+ private static ThreadPolicy.Builder threadPolicyTemplate() {
+ return new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog();
+ }
+
+ private static VmPolicy.Builder vmPolicyTemplate() {
+ return new StrictMode.VmPolicy.Builder().detectAll().penaltyLog();
+ }
+
+ private static boolean isStrictModeAllowed() {
+ return BuildType.get() == BuildType.BUGFOOD;
+ }
+
+ private static boolean onMainThread() {
+ return Looper.getMainLooper().equals(Looper.myLooper());
+ }
+
+ /** Functional interface intended to be used with {@link #bypass(Provider)}. */
+ public interface Provider<T> {
+ T get();
+ }
+
+ /**
+ * Convenience method for disabling and enabling the death penalty using lambdas.
+ *
+ * <p>For example:
+ *
+ * <p><code>
+ * Value foo = DialerStrictMode.bypass(() -> doDiskAccessOnMainThreadReturningValue());
+ * </code>
+ *
+ * <p>The thread policy is only mutated if this is called from the main thread.
+ */
+ public static <T> T bypass(Provider<T> provider) {
+ disableDeathPenalty();
+ try {
+ return provider.get();
+ } finally {
+ enableDeathPenalty();
+ }
+ }
+
+ /**
+ * Convenience method for disabling and enabling the death penalty using lambdas.
+ *
+ * <p>For example:
+ *
+ * <p><code>
+ * DialerStrictMode.bypass(() -> doDiskAccessOnMainThread());
+ * </code>
+ */
+ public static void bypass(Runnable runnable) {
+ disableDeathPenalty();
+ try {
+ runnable.run();
+ } finally {
+ enableDeathPenalty();
+ }
+ }
+}
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 9681aee..17e6cea 100644
--- a/java/com/android/dialer/theme/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/res/values-af/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefoonhokkie"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Foon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratoestemming is geaktiveer"</string>
<string name="video_call" msgid="8914878391104612532">"Video-oproep"</string>
<string name="call" msgid="3699617769606114168">"Bel"</string>
</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 0bbcc02..5b0b2fd 100644
--- a/java/com/android/dialer/theme/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/res/values-am/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"የሕዝብ ስልክ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ስልክ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"የካሜራ ፈቃድ ነቅቷል"</string>
<string name="video_call" msgid="8914878391104612532">"የቪዲዮ ጥሪ"</string>
<string name="call" msgid="3699617769606114168">"ደውል"</string>
</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 c474c6e..ea3468e 100644
--- a/java/com/android/dialer/theme/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ar/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"هاتف يعمل بالعملة"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"الهاتف"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"تم تمكين إذن الكاميرا"</string>
<string name="video_call" msgid="8914878391104612532">"مكالمة فيديو"</string>
<string name="call" msgid="3699617769606114168">"اتصال"</string>
</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 f3e7a01..91ead1b 100644
--- a/java/com/android/dialer/theme/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/res/values-az/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera icazəsi aktiv edildi"</string>
<string name="video_call" msgid="8914878391104612532">"Video zəng"</string>
<string name="call" msgid="3699617769606114168">"Zəng edin"</string>
</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 e1a26fa..a1e5965 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Omogućena je dozvola za kameru"</string>
<string name="video_call" msgid="8914878391104612532">"Uputi video poziv"</string>
<string name="call" msgid="3699617769606114168">"Pozovi"</string>
</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 305f608..881aa7f 100644
--- a/java/com/android/dialer/theme/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/res/values-be/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Таксафон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Тэлефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Уключаны дазвол на выкарыстанне камеры"</string>
<string name="video_call" msgid="8914878391104612532">"Відэавыклік"</string>
<string name="call" msgid="3699617769606114168">"Выклікаць"</string>
</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 77c8086..debc238 100644
--- a/java/com/android/dialer/theme/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bg/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Обществен телефон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Активирано бе разрешението за камерата"</string>
<string name="video_call" msgid="8914878391104612532">"Видеообаждане"</string>
<string name="call" msgid="3699617769606114168">"Обаждане"</string>
</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 1e13496..806ee8e 100644
--- a/java/com/android/dialer/theme/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bn/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"পে ফোন"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ফোন"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ক্যামেরার অনুমতি সক্ষম করা হয়েছে"</string>
<string name="video_call" msgid="8914878391104612532">"ভিডিও কল"</string>
<string name="call" msgid="3699617769606114168">"কল করুন"</string>
</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 051e4e9..bed71a2 100644
--- a/java/com/android/dialer/theme/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bs/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Dozvola za kameru je omogućena"</string>
<string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
<string name="call" msgid="3699617769606114168">"Pozovi"</string>
</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 ce3bd43..5140ca5 100644
--- a/java/com/android/dialer/theme/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ca/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telèfon públic"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telèfon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"S\'ha activat el permís d\'accés a la càmera"</string>
<string name="video_call" msgid="8914878391104612532">"Videotrucada"</string>
<string name="call" msgid="3699617769606114168">"Truca"</string>
</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 235260f..a951fe7 100644
--- a/java/com/android/dialer/theme/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-cs/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonní automat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Byl povolen přístup k fotoaparátu"</string>
<string name="video_call" msgid="8914878391104612532">"Zahájit videohovor"</string>
<string name="call" msgid="3699617769606114168">"Volat"</string>
</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 5525744..54f1850 100644
--- a/java/com/android/dialer/theme/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/res/values-da/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Mønttelefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Opkald"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratilladelse er aktiveret"</string>
<string name="video_call" msgid="8914878391104612532">"Videoopkald"</string>
<string name="call" msgid="3699617769606114168">"Ring op"</string>
</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 b155577..0c97581 100644
--- a/java/com/android/dialer/theme/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/res/values-de/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Münztelefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Berechtigung für Kamera aktiviert"</string>
<string name="video_call" msgid="8914878391104612532">"Videoanruf"</string>
<string name="call" msgid="3699617769606114168">"Anrufen"</string>
</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 156b7cd..1c34a69 100644
--- a/java/com/android/dialer/theme/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/res/values-el/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Τηλέφωνο με χρέωση"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Τηλέφωνο"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Το δικαίωμα χρήσης της κάμερας έχει ενεργοποιηθεί"</string>
<string name="video_call" msgid="8914878391104612532">"Βιντεοκλήση"</string>
<string name="call" msgid="3699617769606114168">"Κλήση"</string>
</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 36de9e5..136d7df 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
<string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Call"</string>
</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 36de9e5..136d7df 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
<string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Call"</string>
</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 36de9e5..136d7df 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
<string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Call"</string>
</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 be2eac8..90837b7 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Se activó el permiso de la cámara"</string>
<string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
<string name="call" msgid="3699617769606114168">"Llamar"</string>
</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 c63374c..c2d3ee3 100644
--- a/java/com/android/dialer/theme/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Se ha habilitado el acceso a la cámara"</string>
<string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
<string name="call" msgid="3699617769606114168">"Llamar"</string>
</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 1f76a4b..269fa64 100644
--- a/java/com/android/dialer/theme/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/res/values-et/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefoniautomaat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kaameraluba on antud"</string>
<string name="video_call" msgid="8914878391104612532">"Videokõne"</string>
<string name="call" msgid="3699617769606114168">"Helista"</string>
</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 8b28467..14345f0 100644
--- a/java/com/android/dialer/theme/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-eu/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefono publikoa"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonoa"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera atzitzeko baimena eman da"</string>
<string name="video_call" msgid="8914878391104612532">"Bideo-deia"</string>
<string name="call" msgid="3699617769606114168">"Deitu"</string>
</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 340adb1..f751f34 100644
--- a/java/com/android/dialer/theme/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fa/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%d</xliff:g> <xliff:g id="UNKNOWN">%s</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"تلفن عمومی"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"تلفن"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"مجوز دوربین فعال شد"</string>
<string name="video_call" msgid="8914878391104612532">"تماس ویدیویی"</string>
<string name="call" msgid="3699617769606114168">"تماس"</string>
</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 52cab8a..0c09d7f 100644
--- a/java/com/android/dialer/theme/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fi/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Maksupuhelin"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Puhelin"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameran käyttöoikeus myönnettiin"</string>
<string name="video_call" msgid="8914878391104612532">"Videopuhelu"</string>
<string name="call" msgid="3699617769606114168">"Soita"</string>
</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 b1d0ff1..7d901ca 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorisation d\'accès à l\'appareil photo activée"</string>
<string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
<string name="call" msgid="3699617769606114168">"Appeler"</string>
</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 b1d0ff1..1c30ef1 100644
--- a/java/com/android/dialer/theme/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorisation d\'accès à l\'appareil photo accordée"</string>
<string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
<string name="call" msgid="3699617769606114168">"Appeler"</string>
</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 1788843..083d395 100644
--- a/java/com/android/dialer/theme/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gl/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Activouse o permiso de acceso á cámara"</string>
<string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Chamar"</string>
</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 8de6e2a..4baba69 100644
--- a/java/com/android/dialer/theme/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gu/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"પેફોન"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ફોન"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"કૅમેરાની પરવાનગી સક્ષમ કરી"</string>
<string name="video_call" msgid="8914878391104612532">"વિડિઓ કૉલ"</string>
<string name="call" msgid="3699617769606114168">"કૉલ કરો"</string>
</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 fbc56e9..758be5d 100644
--- a/java/com/android/dialer/theme/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hi/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"पे-फ़ोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फ़ोन"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"कैमरे की अनुमति सक्षम की गई"</string>
<string name="video_call" msgid="8914878391104612532">"वीडियो कॉल"</string>
<string name="call" msgid="3699617769606114168">"कॉल करें"</string>
</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 73c6542..89a5aee 100644
--- a/java/com/android/dialer/theme/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hr/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Javna telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Omogućen je pristup kameri"</string>
<string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
<string name="call" msgid="3699617769606114168">"Pozovi"</string>
</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 d70977d..30051d4 100644
--- a/java/com/android/dialer/theme/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hu/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Nyilvános telefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameraengedély megadva"</string>
<string name="video_call" msgid="8914878391104612532">"Videohívás"</string>
<string name="call" msgid="3699617769606114168">"Hívás"</string>
</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 5f53c9f..6577dab 100644
--- a/java/com/android/dialer/theme/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hy/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Բջջային տերմինալ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Հեռախոս"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Տեսախցիկից օգտվելու թույլտվությունը տրամադրված է"</string>
<string name="video_call" msgid="8914878391104612532">"Տեսազանգ"</string>
<string name="call" msgid="3699617769606114168">"Զանգել"</string>
</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 193c6e9..d2d72b8 100644
--- a/java/com/android/dialer/theme/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/res/values-in/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telepon Umum"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telepon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Izin kamera diaktifkan"</string>
<string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Telepon"</string>
</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 6a67ad9..ff3faf8 100644
--- a/java/com/android/dialer/theme/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/res/values-is/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Símasjálfsali"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Sími"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Myndavélarheimild virk"</string>
<string name="video_call" msgid="8914878391104612532">"Hringja myndsímtal"</string>
<string name="call" msgid="3699617769606114168">"Hringja"</string>
</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 46c6d56..4b26288 100644
--- a/java/com/android/dialer/theme/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/res/values-it/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Cabina telefonica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorizzazioni della fotocamera attivate"</string>
<string name="video_call" msgid="8914878391104612532">"Videochiamata"</string>
<string name="call" msgid="3699617769606114168">"Chiama"</string>
</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 1bc8cbb..09abf2e 100644
--- a/java/com/android/dialer/theme/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-iw/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"טלפון ציבורי"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"טלפון"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"הרשאת הגישה למצלמה הופעלה"</string>
<string name="video_call" msgid="8914878391104612532">"שיחת וידאו"</string>
<string name="call" msgid="3699617769606114168">"התקשר"</string>
</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 839495d..551d679 100644
--- a/java/com/android/dialer/theme/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ja/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g>(<xliff:g id="ID">%d</xliff:g>)"</string>
<string name="payphone" msgid="7106361320283710387">"公衆電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"カメラへのアクセスを自動で許可しました"</string>
<string name="video_call" msgid="8914878391104612532">"ビデオハングアウト"</string>
<string name="call" msgid="3699617769606114168">"発信"</string>
</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 37fdabd..ab22595 100644
--- a/java/com/android/dialer/theme/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ka/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"გადახდის ტელეფონი"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ტელეფონი"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"კამერაზე წვდომის ნებართვა ჩართულია"</string>
<string name="video_call" msgid="8914878391104612532">"ვიდეოზარი"</string>
<string name="call" msgid="3699617769606114168">"დარეკვა"</string>
</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 1b6a516..d3a1b7b 100644
--- a/java/com/android/dialer/theme/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kk/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Автомат-телефон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камера рұқсаты қосылды"</string>
<string name="video_call" msgid="8914878391104612532">"Бейне қоңырау"</string>
<string name="call" msgid="3699617769606114168">"Қоңырау шалу"</string>
</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 cfc2010..900f1d6 100644
--- a/java/com/android/dialer/theme/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/res/values-km/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ទូរស័ព្ទសាធារណៈ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ទូរស័ព្ទ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"បានបើកការអនុញ្ញាតកាមេរ៉ា"</string>
<string name="video_call" msgid="8914878391104612532">"ការហៅវីដេអូ"</string>
<string name="call" msgid="3699617769606114168">"ហៅទូរសព្ទ"</string>
</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 dffa10e0..ab9f816 100644
--- a/java/com/android/dialer/theme/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kn/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ಪೇಫೋನ್"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ಫೋನ್"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ಕ್ಯಾಮರಾ ಅನುಮತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="video_call" msgid="8914878391104612532">"ವೀಡಿಯೊ ಕರೆ"</string>
<string name="call" msgid="3699617769606114168">"ಕರೆಮಾಡಿ"</string>
</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 ff6710c..b5ac556 100644
--- a/java/com/android/dialer/theme/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ko/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"공중전화"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"휴대전화"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"카메라 권한 사용 가능"</string>
<string name="video_call" msgid="8914878391104612532">"화상 통화"</string>
<string name="call" msgid="3699617769606114168">"전화"</string>
</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 036c270..0a9bec2 100644
--- a/java/com/android/dialer/theme/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ky/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камеранын уруксаты иштетилди"</string>
<string name="video_call" msgid="8914878391104612532">"Видео чалуу"</string>
<string name="call" msgid="3699617769606114168">"Чалуу"</string>
</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 9204a02..d33d43e 100644
--- a/java/com/android/dialer/theme/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lo/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ຕູ້ໂທລະສັບສາທາລະນະ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ໂທລະສັບ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ເປີດໃຊ້ສິດອະນຸຍາດກ້ອງຖ່າຍຮູບແລ້ວ"</string>
<string name="video_call" msgid="8914878391104612532">"ໂທວິດີໂອ"</string>
<string name="call" msgid="3699617769606114168">"ໂທ"</string>
</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 be14536..fdf31e2 100644
--- a/java/com/android/dialer/theme/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lt/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%d</xliff:g> <xliff:g id="UNKNOWN">%s</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Taksofonas"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonas"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Fotoaparato leidimas įgalintas"</string>
<string name="video_call" msgid="8914878391104612532">"Vaizdo skambutis"</string>
<string name="call" msgid="3699617769606114168">"Skambinti"</string>
</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 35b742f..031c5bd 100644
--- a/java/com/android/dialer/theme/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lv/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Maksas tālrunis"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Tālrunis"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameras atļauja iespējota"</string>
<string name="video_call" msgid="8914878391104612532">"Videozvans"</string>
<string name="call" msgid="3699617769606114168">"Zvanīt"</string>
</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 3975ae5..d89d12e 100644
--- a/java/com/android/dialer/theme/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mk/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Говорница"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Дозволата за камера е овозможена"</string>
<string name="video_call" msgid="8914878391104612532">"Воспоставете видеоповик"</string>
<string name="call" msgid="3699617769606114168">"Повикајте"</string>
</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 146bfdf..f02ceeb 100644
--- a/java/com/android/dialer/theme/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ml/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ഫോണ്"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ക്യാമറ അനുമതി നൽകി"</string>
<string name="video_call" msgid="8914878391104612532">"വീഡിയോ കോള്"</string>
<string name="call" msgid="3699617769606114168">"വിളിക്കുക"</string>
</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 0e27e8d..7a07e5d 100644
--- a/java/com/android/dialer/theme/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mn/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Утас"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камерын зөвшөөрөл идэвхжсэн"</string>
<string name="video_call" msgid="8914878391104612532">"Видео дуудлага"</string>
<string name="call" msgid="3699617769606114168">"Залгах"</string>
</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 7fa6f26..eeb9afa 100644
--- a/java/com/android/dialer/theme/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mr/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"सार्वजनिक फोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"कॅमेरा परवानगी सक्षम केली"</string>
<string name="video_call" msgid="8914878391104612532">"व्हिडिओ कॉल"</string>
<string name="call" msgid="3699617769606114168">"कॉल करा"</string>
</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 18df912..2e424fd 100644
--- a/java/com/android/dialer/theme/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ms/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefon Awam"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kebenaran kamera didayakan"</string>
<string name="video_call" msgid="8914878391104612532">"Panggilan video"</string>
<string name="call" msgid="3699617769606114168">"Panggil"</string>
</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 67b9b28..97b871b 100644
--- a/java/com/android/dialer/theme/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/res/values-my/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ငွေပေးရသည့်ဖုန်း"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ဖုန်း"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ကင်မရာအသုံးပြုခွင့် ဖွင့်ထားပါသည်"</string>
<string name="video_call" msgid="8914878391104612532">"ဗီဒီယိုခေါ်ဆိုမှု"</string>
<string name="call" msgid="3699617769606114168">"ခေါ်ဆိုရန်"</string>
</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 1a6e593..7587b7e 100644
--- a/java/com/android/dialer/theme/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nb/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratillatelsen er aktivert"</string>
<string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
<string name="call" msgid="3699617769606114168">"Ring"</string>
</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 eb73de9..af1ad5e 100644
--- a/java/com/android/dialer/theme/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ne/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"पेफोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"क्यामेरा सम्बन्धी अनुमतिहरूलाई सक्षम पारियो"</string>
<string name="video_call" msgid="8914878391104612532">"भिडियो कल"</string>
<string name="call" msgid="3699617769606114168">"कल गर्नुहोस्"</string>
</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 36e904c..ab51c97 100644
--- a/java/com/android/dialer/theme/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nl/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefooncel"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camerarechten ingeschakeld"</string>
<string name="video_call" msgid="8914878391104612532">"Videogesprek"</string>
<string name="call" msgid="3699617769606114168">"Bellen"</string>
</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 1a6e593..7587b7e 100644
--- a/java/com/android/dialer/theme/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/res/values-no/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratillatelsen er aktivert"</string>
<string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
<string name="call" msgid="3699617769606114168">"Ring"</string>
</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 af263c8..8784bca 100644
--- a/java/com/android/dialer/theme/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pa/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ਪੇਫੋਨ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ਫੋਨ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ਕੈਮਰਾ ਇਜਾਜ਼ਤ ਨੂੰ ਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
<string name="video_call" msgid="8914878391104612532">"ਵੀਡੀਓ ਕਾਲ"</string>
<string name="call" msgid="3699617769606114168">"ਕਾਲ ਕਰੋ"</string>
</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 a25df0a..246261e 100644
--- a/java/com/android/dialer/theme/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pl/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Automat telefoniczny"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Uprawnienia do korzystania z aparatu zostały włączone"</string>
<string name="video_call" msgid="8914878391104612532">"Rozmowa wideo"</string>
<string name="call" msgid="3699617769606114168">"Zadzwoń"</string>
</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 9f44269..c1356d9 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Permissão de câmera ativada"</string>
<string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Ligar"</string>
</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 1b77257..2b46e44 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorização da câmara ativada"</string>
<string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Telefonar"</string>
</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 9f44269..c1356d9 100644
--- a/java/com/android/dialer/theme/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Permissão de câmera ativada"</string>
<string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Ligar"</string>
</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 1cf8c8c..8978e92 100644
--- a/java/com/android/dialer/theme/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ro/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefon public"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Permisiunea pentru cameră a fost activată."</string>
<string name="video_call" msgid="8914878391104612532">"Apel video"</string>
<string name="call" msgid="3699617769606114168">"Apelați"</string>
</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 8aa6e8f..a155052 100644
--- a/java/com/android/dialer/theme/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ru/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Телефон-автомат"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Доступ к камере разрешен"</string>
<string name="video_call" msgid="8914878391104612532">"Видеовызов"</string>
<string name="call" msgid="3699617769606114168">"Позвонить"</string>
</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 04d0468..424a112 100644
--- a/java/com/android/dialer/theme/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/res/values-si/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"පේෆෝනය"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"දුරකථනය"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"කැමරා අවසර සබල කර ඇත"</string>
<string name="video_call" msgid="8914878391104612532">"වීඩියෝ ඇමතුම"</string>
<string name="call" msgid="3699617769606114168">"ඇමතුම"</string>
</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 9e56e12..411b85e 100644
--- a/java/com/android/dialer/theme/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sk/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefónny automat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefón"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Povolenie pre fotoaparát je aktivované"</string>
<string name="video_call" msgid="8914878391104612532">"Videohovor"</string>
<string name="call" msgid="3699617769606114168">"Volať"</string>
</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 6236535..85a3e2b 100644
--- a/java/com/android/dialer/theme/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sl/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonska govorilnica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Dovoljenje za dostop do fotoaparata je omogočeno"</string>
<string name="video_call" msgid="8914878391104612532">"Videoklic"</string>
<string name="call" msgid="3699617769606114168">"Pokliči"</string>
</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 6fecf14..5cbd587 100644
--- a/java/com/android/dialer/theme/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sq/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefon me pagesë"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoni"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Leja e kamerës është aktivizuar"</string>
<string name="video_call" msgid="8914878391104612532">"Telefonatë me video"</string>
<string name="call" msgid="3699617769606114168">"Telefono"</string>
</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 8f91054..310da73 100644
--- a/java/com/android/dialer/theme/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sr/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Телефонска говорница"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Омогућена је дозвола за камеру"</string>
<string name="video_call" msgid="8914878391104612532">"Упути видео позив"</string>
<string name="call" msgid="3699617769606114168">"Позови"</string>
</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 f31a378..af8e5f7 100644
--- a/java/com/android/dialer/theme/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sv/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonautomat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamerabehörighet har aktiverats"</string>
<string name="video_call" msgid="8914878391104612532">"Videosamtal"</string>
<string name="call" msgid="3699617769606114168">"Ring"</string>
</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 c35d560..31615fe 100644
--- a/java/com/android/dialer/theme/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sw/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Simu ya kulipia"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Simu"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Imewasha ruhusa ya kamera"</string>
<string name="video_call" msgid="8914878391104612532">"Simu ya video"</string>
<string name="call" msgid="3699617769606114168">"Piga simu"</string>
</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 737e43e..ab15f0b 100644
--- a/java/com/android/dialer/theme/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ta/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"கட்டணத் தொலைபேசி"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"மொபைல்"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"கேமராவிற்கான அனுமதி இயக்கப்பட்டது"</string>
<string name="video_call" msgid="8914878391104612532">"வீடியோ அழைப்பு"</string>
<string name="call" msgid="3699617769606114168">"அழை"</string>
</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 c1a0212..4a6fca1 100644
--- a/java/com/android/dialer/theme/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/res/values-te/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"పే ఫోన్"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ఫోన్"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"కెమెరా అనుమతిని ప్రారంభించాము"</string>
<string name="video_call" msgid="8914878391104612532">"వీడియో కాల్"</string>
<string name="call" msgid="3699617769606114168">"కాల్ చేయి"</string>
</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 0df98d9..51db053 100644
--- a/java/com/android/dialer/theme/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/res/values-th/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"โทรศัพท์สาธารณะ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"โทรศัพท์"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ให้สิทธิ์เข้าถึงกล้องถ่ายรูปแล้ว"</string>
<string name="video_call" msgid="8914878391104612532">"แฮงเอาท์วิดีโอ"</string>
<string name="call" msgid="3699617769606114168">"โทร"</string>
</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 573b6b8..97f69ec 100644
--- a/java/com/android/dialer/theme/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tl/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telepono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Na-enable ang pahintulot sa camera"</string>
<string name="video_call" msgid="8914878391104612532">"Mag-video call"</string>
<string name="call" msgid="3699617769606114168">"Tawag"</string>
</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 21e2889..b38f067 100644
--- a/java/com/android/dialer/theme/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tr/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Ankesörlü telefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera izni etkinleştirildi"</string>
<string name="video_call" msgid="8914878391104612532">"Görüntülü görüşme"</string>
<string name="call" msgid="3699617769606114168">"Telefon et"</string>
</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 dab89df..f070277 100644
--- a/java/com/android/dialer/theme/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uk/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камері надано дозвіл"</string>
<string name="video_call" msgid="8914878391104612532">"Відеодзвінок"</string>
<string name="call" msgid="3699617769606114168">"Виклик"</string>
</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 187eb22..e9a4b44 100644
--- a/java/com/android/dialer/theme/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ur/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"پے فون"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"فون"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"کیمرا کی اجازت فعال ہے"</string>
<string name="video_call" msgid="8914878391104612532">"ویڈیو کال"</string>
<string name="call" msgid="3699617769606114168">"کال کریں"</string>
</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 959ca77..2bbaf20 100644
--- a/java/com/android/dialer/theme/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uz/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameraga kirishga ruxsat berildi"</string>
<string name="video_call" msgid="8914878391104612532">"Video suhbat"</string>
<string name="call" msgid="3699617769606114168">"Chaqirish"</string>
</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 38bd8ec..fae3180 100644
--- a/java/com/android/dialer/theme/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-vi/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Điện thoại công cộng"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Điện thoại"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Đã bật quyền sử dụng máy ảnh"</string>
<string name="video_call" msgid="8914878391104612532">"Gọi điện video"</string>
<string name="call" msgid="3699617769606114168">"Gọi"</string>
</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 c80f197..2e60962 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"公用电话"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"电话"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"已启用相机使用权限"</string>
<string name="video_call" msgid="8914878391104612532">"视频通话"</string>
<string name="call" msgid="3699617769606114168">"拨打电话"</string>
</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 605089b..7b08024 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"公共電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"已啟用相機權限"</string>
<string name="video_call" msgid="8914878391104612532">"視像通話"</string>
<string name="call" msgid="3699617769606114168">"通話"</string>
</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 7a5604c..57d7fe2 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
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"公用電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"已啟用相機權限"</string>
<string name="video_call" msgid="8914878391104612532">"視訊通話"</string>
<string name="call" msgid="3699617769606114168">"撥號"</string>
</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 ae07c45..d0dd728 100644
--- a/java/com/android/dialer/theme/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zu/strings.xml
@@ -21,6 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Ucingo olufakwa imali"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Ifoni"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Imvume yekhamera inikwe amandla"</string>
<string name="video_call" msgid="8914878391104612532">"Ikholi yevidiyo"</string>
<string name="call" msgid="3699617769606114168">"Shaya"</string>
</resources>
diff --git a/java/com/android/dialer/util/DialerUtils.java b/java/com/android/dialer/util/DialerUtils.java
index 63f870e..f38c650 100644
--- a/java/com/android/dialer/util/DialerUtils.java
+++ b/java/com/android/dialer/util/DialerUtils.java
@@ -38,6 +38,7 @@
import android.widget.Toast;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.storage.StorageComponent;
import com.android.dialer.telecom.TelecomUtil;
import java.io.File;
import java.util.Iterator;
@@ -233,14 +234,9 @@
public static SharedPreferences getDefaultSharedPreferenceForDeviceProtectedStorageContext(
@NonNull Context context) {
Assert.isNotNull(context);
- Context deviceProtectedContext =
- ContextCompat.isDeviceProtectedStorage(context)
- ? context
- : ContextCompat.createDeviceProtectedStorageContext(context);
- // ContextCompat.createDeviceProtectedStorageContext(context) returns null on pre-N, thus fall
- // back to regular default shared preference for pre-N devices since devices protected context
- // is not available.
- return PreferenceManager.getDefaultSharedPreferences(
- deviceProtectedContext != null ? deviceProtectedContext : context);
+ if (ContextCompat.isDeviceProtectedStorage(context)) {
+ return PreferenceManager.getDefaultSharedPreferences(context);
+ }
+ return StorageComponent.get(context.getApplicationContext()).deviceProtectedSharedPreferences();
}
}
diff --git a/java/com/android/dialer/util/IntentUtil.java b/java/com/android/dialer/util/IntentUtil.java
index 2f265b5..f453966 100644
--- a/java/com/android/dialer/util/IntentUtil.java
+++ b/java/com/android/dialer/util/IntentUtil.java
@@ -31,7 +31,8 @@
}
public static Intent getNewContactIntent() {
- return new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+ return new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI)
+ .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
public static Intent getNewContactIntent(CharSequence phoneNumber) {
diff --git a/java/com/android/contacts/common/util/UriUtils.java b/java/com/android/dialer/util/UriUtils.java
similarity index 94%
rename from java/com/android/contacts/common/util/UriUtils.java
rename to java/com/android/dialer/util/UriUtils.java
index 4690942..c4308a8 100644
--- a/java/com/android/contacts/common/util/UriUtils.java
+++ b/java/com/android/dialer/util/UriUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.contacts.common.util;
+package com.android.dialer.util;
import android.net.Uri;
import android.provider.ContactsContract;
@@ -23,6 +23,8 @@
/** Utility methods for dealing with URIs. */
public class UriUtils {
+ private static final String LOOKUP_URI_ENCODED = "encoded";
+
/** Static helper, not instantiable. */
private UriUtils() {}
@@ -58,7 +60,7 @@
if (lastPathSegment == null) {
return false;
}
- return lastPathSegment.equals(Constants.LOOKUP_URI_ENCODED);
+ return lastPathSegment.equals(LOOKUP_URI_ENCODED);
}
/**
diff --git a/java/com/android/dialer/util/res/values-af/strings.xml b/java/com/android/dialer/util/res/values-af/strings.xml
index 3b67807..7457e9b 100644
--- a/java/com/android/dialer/util/res/values-af/strings.xml
+++ b/java/com/android/dialer/util/res/values-af/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Geen program daarvoor op hierdie toestel nie"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"As jy \'n WPS-oproep maak, sal dit jou huidige oproep afsny."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Gaan voort"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-am/strings.xml b/java/com/android/dialer/util/res/values-am/strings.xml
index d3418b4..18fcb56 100644
--- a/java/com/android/dialer/util/res/values-am/strings.xml
+++ b/java/com/android/dialer/util/res/values-am/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ለዚያ የሚሆን መተግበሪያ በዚህ መሣሪያ ላይ የለም"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"የWPS ጥሪ ማድረግ አሁን ያለውን ጥሪዎን ያቋርጠዋል።"</string>
<string name="dialog_continue" msgid="4070630558441163574">"ቀጥል"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ar/strings.xml b/java/com/android/dialer/util/res/values-ar/strings.xml
index 13a5235..8f25fb5 100644
--- a/java/com/android/dialer/util/res/values-ar/strings.xml
+++ b/java/com/android/dialer/util/res/values-ar/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"لا يوجد تطبيق لإجراء ذلك على هذا الجهاز"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"سيؤدي إجراء مكالمة WPS إلى قطع اتصال مكالماتك الحالية."</string>
<string name="dialog_continue" msgid="4070630558441163574">"متابعة"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-az/strings.xml b/java/com/android/dialer/util/res/values-az/strings.xml
index 3b66741..ffe8ec5 100644
--- a/java/com/android/dialer/util/res/values-az/strings.xml
+++ b/java/com/android/dialer/util/res/values-az/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Bu cihazda onun üçün heç bir proqram yoxdur"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS zənginin edilməsi mövcud zənginizi sonlandıracaq."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Davam edin"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
index 803c954..8f16f82 100644
--- a/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacija za to"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ako uputite WPS poziv, prekinućete postojeći poziv."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-be/strings.xml b/java/com/android/dialer/util/res/values-be/strings.xml
index 120247f..f88ca19 100644
--- a/java/com/android/dialer/util/res/values-be/strings.xml
+++ b/java/com/android/dialer/util/res/values-be/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"На прыладзе няма праграмы для гэтага"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Выкананне выкліку WPS прывядзе да раз\'яднання бягучага выкліку."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Працягнуць"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-bg/strings.xml b/java/com/android/dialer/util/res/values-bg/strings.xml
index 3a425ab..44bb00f 100644
--- a/java/com/android/dialer/util/res/values-bg/strings.xml
+++ b/java/com/android/dialer/util/res/values-bg/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"На устройството няма приложение за това действие"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ако извършите обаждане през WPS, текущото ви обаждане ще бъде прекъснато."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Напред"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-bn/strings.xml b/java/com/android/dialer/util/res/values-bn/strings.xml
index 186b341..769c3c2 100644
--- a/java/com/android/dialer/util/res/values-bn/strings.xml
+++ b/java/com/android/dialer/util/res/values-bn/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"এর জন্য এই ডিভাইসে কোনো অ্যাপ্লিকেশান নেই"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"একটি WPS কল করা হলে তা আপনার বিদ্যমান কলটি কেটে দেবে৷"</string>
<string name="dialog_continue" msgid="4070630558441163574">"চালিয়ে যান"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-bs/strings.xml b/java/com/android/dialer/util/res/values-bs/strings.xml
index e000c5f..a36bd98 100644
--- a/java/com/android/dialer/util/res/values-bs/strings.xml
+++ b/java/com/android/dialer/util/res/values-bs/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacije za to"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Upućivanje WPS poziva prekinut će trenutni poziv."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ca/strings.xml b/java/com/android/dialer/util/res/values-ca/strings.xml
index 8b6b2da..c2a661f 100644
--- a/java/com/android/dialer/util/res/values-ca/strings.xml
+++ b/java/com/android/dialer/util/res/values-ca/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"No hi ha cap aplicació per a això en aquest dispositiu."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"En fer una trucada WPS, es desconnectarà la trucada en curs."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continua"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-cs/strings.xml b/java/com/android/dialer/util/res/values-cs/strings.xml
index 0e74288..d7de840 100644
--- a/java/com/android/dialer/util/res/values-cs/strings.xml
+++ b/java/com/android/dialer/util/res/values-cs/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Pro tuto akci v zařízení nemáte žádnou aplikaci."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Zahájením hovoru WPS odpojíte probíhající hovor."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Pokračovat"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-da/strings.xml b/java/com/android/dialer/util/res/values-da/strings.xml
index d38292f..555bb69 100644
--- a/java/com/android/dialer/util/res/values-da/strings.xml
+++ b/java/com/android/dialer/util/res/values-da/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Der findes Ingen app til det på denne enhed"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Hvis du foretager et WPS-opkald, afsluttes dit nuværende opkald."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Fortsæt"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-de/strings.xml b/java/com/android/dialer/util/res/values-de/strings.xml
index dc23b32..7d154b6 100644
--- a/java/com/android/dialer/util/res/values-de/strings.xml
+++ b/java/com/android/dialer/util/res/values-de/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Keine entsprechende App auf diesem Gerät"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Wenn du jetzt einen Anruf über WPS tätigst, wird deine bestehende Verbindung getrennt."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Weiter"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-el/strings.xml b/java/com/android/dialer/util/res/values-el/strings.xml
index 996cb2a..efbdc4e 100644
--- a/java/com/android/dialer/util/res/values-el/strings.xml
+++ b/java/com/android/dialer/util/res/values-el/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Δεν υπάρχει εφαρμογή γι\' αυτήν την ενέργεια σε αυτήν τη συσκευή"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Η διενέργεια κλήσης μέσω WPS θα αποσυνδέσει την υφιστάμενη κλήση."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Συνέχεια"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-en-rAU/strings.xml b/java/com/android/dialer/util/res/values-en-rAU/strings.xml
index 3cdf170..545a2a8 100644
--- a/java/com/android/dialer/util/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/util/res/values-en-rAU/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"No app for that on this device"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Placing a WPS call will disconnect your existing call."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continue"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-en-rGB/strings.xml b/java/com/android/dialer/util/res/values-en-rGB/strings.xml
index 3cdf170..545a2a8 100644
--- a/java/com/android/dialer/util/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/util/res/values-en-rGB/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"No app for that on this device"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Placing a WPS call will disconnect your existing call."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continue"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-en-rIN/strings.xml b/java/com/android/dialer/util/res/values-en-rIN/strings.xml
index 3cdf170..545a2a8 100644
--- a/java/com/android/dialer/util/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/util/res/values-en-rIN/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"No app for that on this device"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Placing a WPS call will disconnect your existing call."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continue"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-es-rUS/strings.xml b/java/com/android/dialer/util/res/values-es-rUS/strings.xml
index e9c8631..4aa0725 100644
--- a/java/com/android/dialer/util/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/util/res/values-es-rUS/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"No hay una aplicación para esa acción en este dispositivo."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Realizar una llamada de WPS desconectará tu llamada existente."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-es/strings.xml b/java/com/android/dialer/util/res/values-es/strings.xml
index 0672f65..6c92947 100644
--- a/java/com/android/dialer/util/res/values-es/strings.xml
+++ b/java/com/android/dialer/util/res/values-es/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"No hay aplicaciones para esa acción en este dispositivo"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Al hacer una llamada WPS, se finalizará tu llamada actual."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-et/strings.xml b/java/com/android/dialer/util/res/values-et/strings.xml
index 20429fb..465d2b4 100644
--- a/java/com/android/dialer/util/res/values-et/strings.xml
+++ b/java/com/android/dialer/util/res/values-et/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Seadmes pole selleks sobilikku rakendust"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-kõne tegemisel katkestatakse teie praegune kõne."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Jätka"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-eu/strings.xml b/java/com/android/dialer/util/res/values-eu/strings.xml
index 89b35c2..ba434ce 100644
--- a/java/com/android/dialer/util/res/values-eu/strings.xml
+++ b/java/com/android/dialer/util/res/values-eu/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Ez dago hori egin dezakeen aplikaziorik gailu honetan"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS dei bat egiten baduzu, eten egingo da uneko deia."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Jarraitu"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-fa/strings.xml b/java/com/android/dialer/util/res/values-fa/strings.xml
index c98fdc9..c22c386 100644
--- a/java/com/android/dialer/util/res/values-fa/strings.xml
+++ b/java/com/android/dialer/util/res/values-fa/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"هیچ برنامهای برای انجام این کار در این دستگاه نصب نیست"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"اگر تماس WPS برقرار کنید، تماس فعلیتان قطع میشود."</string>
<string name="dialog_continue" msgid="4070630558441163574">"ادامه"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-fi/strings.xml b/java/com/android/dialer/util/res/values-fi/strings.xml
index 58494d1..237232f 100644
--- a/java/com/android/dialer/util/res/values-fi/strings.xml
+++ b/java/com/android/dialer/util/res/values-fi/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Laitteessa ei ole kyseiseen toimintoon tarvittavaa sovellusta"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-puhelun soittaminen katkaisee meneillään olevan puhelun."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Jatka"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-fr-rCA/strings.xml b/java/com/android/dialer/util/res/values-fr-rCA/strings.xml
index e82fb5d..1d73fcf 100644
--- a/java/com/android/dialer/util/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/util/res/values-fr-rCA/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Cette action ne peut être effectuée par aucune application sur cet appareil."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Si vous faites un appel WPS, vous déconnecterez l\'appel en cours."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuer"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-fr/strings.xml b/java/com/android/dialer/util/res/values-fr/strings.xml
index 3e411d3..48f1dbb 100644
--- a/java/com/android/dialer/util/res/values-fr/strings.xml
+++ b/java/com/android/dialer/util/res/values-fr/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Cette action ne peut être effectuée via aucune application sur cet appareil."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"L\'émission d\'un appel WPS mettra fin à l\'appel en cours."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuer"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-gl/strings.xml b/java/com/android/dialer/util/res/values-gl/strings.xml
index c5b5448..8cdcffa 100644
--- a/java/com/android/dialer/util/res/values-gl/strings.xml
+++ b/java/com/android/dialer/util/res/values-gl/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Non hai ningunha aplicación para esa acción neste dispositivo"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Se realizas unha chamada WPS, desconectarase a túa chamada actual."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-gu/strings.xml b/java/com/android/dialer/util/res/values-gu/strings.xml
index e3342b1..ee4b592 100644
--- a/java/com/android/dialer/util/res/values-gu/strings.xml
+++ b/java/com/android/dialer/util/res/values-gu/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"આ ઉપકરણ પર તે માટે કોઈ ઍપ્લિકેશન નથી"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS કૉલ કરવાનું તમારા અસ્તિત્વમાંના કૉલને ડિસ્કનેક્ટ કરશે."</string>
<string name="dialog_continue" msgid="4070630558441163574">"ચાલુ રાખો"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-hi/strings.xml b/java/com/android/dialer/util/res/values-hi/strings.xml
index 08d52c7..9a1bc35 100644
--- a/java/com/android/dialer/util/res/values-hi/strings.xml
+++ b/java/com/android/dialer/util/res/values-hi/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"उसके लिए इस डिवाइस पर कोई एेप नहीं है"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS कॉल करने से आपका मौजूदा कॉल डिसकनेक्ट हो जाएगा."</string>
<string name="dialog_continue" msgid="4070630558441163574">"जारी रखें"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-hr/strings.xml b/java/com/android/dialer/util/res/values-hr/strings.xml
index 16964ba..1fc54da 100644
--- a/java/com/android/dialer/util/res/values-hr/strings.xml
+++ b/java/com/android/dialer/util/res/values-hr/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacije za to"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Uspostavljanje WPS poziva prekinut će postojeći poziv."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-hu/strings.xml b/java/com/android/dialer/util/res/values-hu/strings.xml
index 5c50382..ad5f29d 100644
--- a/java/com/android/dialer/util/res/values-hu/strings.xml
+++ b/java/com/android/dialer/util/res/values-hu/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Nincs megfelelő alkalmazás a művelethez ezen az eszközön"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-hívás indításával megszakítja a folyamatban lévő hívást."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Folytatás"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-hy/strings.xml b/java/com/android/dialer/util/res/values-hy/strings.xml
index 8a2c75e..18f2001 100644
--- a/java/com/android/dialer/util/res/values-hy/strings.xml
+++ b/java/com/android/dialer/util/res/values-hy/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Սարքի վրա համապատասխան հավելված չկա"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Եթե WPS-ի միջոցով զանգ կատարեք, ձեր ընթացիկ զանգը կընդհատվի:"</string>
<string name="dialog_continue" msgid="4070630558441163574">"Շարունակել"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-in/strings.xml b/java/com/android/dialer/util/res/values-in/strings.xml
index 8abd5fb..55a5e3e 100644
--- a/java/com/android/dialer/util/res/values-in/strings.xml
+++ b/java/com/android/dialer/util/res/values-in/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Tidak ada aplikasi untuk tindakan tersebut di perangkat ini"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Melakukan panggilan WPS akan mengakhiri panggilan yang ada."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Lanjutkan"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-is/strings.xml b/java/com/android/dialer/util/res/values-is/strings.xml
index 8ba1a2d..e6615e3 100644
--- a/java/com/android/dialer/util/res/values-is/strings.xml
+++ b/java/com/android/dialer/util/res/values-is/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Ekkert forrit fyrir þetta er í tækinu"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ef þú hringir WPS-símtal slitnar núverandi símtal."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Áfram"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-it/strings.xml b/java/com/android/dialer/util/res/values-it/strings.xml
index 3ef5f83..3ed55c6 100644
--- a/java/com/android/dialer/util/res/values-it/strings.xml
+++ b/java/com/android/dialer/util/res/values-it/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Sul dispositivo non sono presenti app per tale azione"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Se effettui una chiamata WPS, la chiamata esistente verrà disconnessa."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continua"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-iw/strings.xml b/java/com/android/dialer/util/res/values-iw/strings.xml
index 8863eb6..5a1062d 100644
--- a/java/com/android/dialer/util/res/values-iw/strings.xml
+++ b/java/com/android/dialer/util/res/values-iw/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"אין אפליקציה עבור הפעולה הזו במכשיר הזה"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"התקשרות באמצעות השירות האלחוטי המועדף תנתק את השיחה הנוכחית."</string>
<string name="dialog_continue" msgid="4070630558441163574">"המשך"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ja/strings.xml b/java/com/android/dialer/util/res/values-ja/strings.xml
index a447ee9..78986b1 100644
--- a/java/com/android/dialer/util/res/values-ja/strings.xml
+++ b/java/com/android/dialer/util/res/values-ja/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"この操作を行うアプリが端末上にありません"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS で通話を発信すると現在の通話が切断されます。"</string>
<string name="dialog_continue" msgid="4070630558441163574">"次へ"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ka/strings.xml b/java/com/android/dialer/util/res/values-ka/strings.xml
index 379e3b3..13e7ad0 100644
--- a/java/com/android/dialer/util/res/values-ka/strings.xml
+++ b/java/com/android/dialer/util/res/values-ka/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ამ მოწყობილობაზე არ არის შესაბამისი აპლიკაცია"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ზარის განხორციელება თქვენს მიმდინარე ზარს გათიშავს."</string>
<string name="dialog_continue" msgid="4070630558441163574">"გაგრძელება"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-kk/strings.xml b/java/com/android/dialer/util/res/values-kk/strings.xml
index 8683b85..49b6091 100644
--- a/java/com/android/dialer/util/res/values-kk/strings.xml
+++ b/java/com/android/dialer/util/res/values-kk/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Бұл үшін осы құрылғыда қолданба жоқ"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS қоңырауын шалу қазіргі қоңырауды тоқтатады."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Жалғастыру"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-km/strings.xml b/java/com/android/dialer/util/res/values-km/strings.xml
index 37cd045..f55fdf5 100644
--- a/java/com/android/dialer/util/res/values-km/strings.xml
+++ b/java/com/android/dialer/util/res/values-km/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"មិនមានកម្មវិធីសម្រាប់សកម្មភាពនេះនៅលើឧបករណ៍នេះទេ"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"ការហៅចេញដោយប្រើសេវា WPS នឹងផ្ដាច់ការហៅដែលមានរបស់អ្នក។"</string>
<string name="dialog_continue" msgid="4070630558441163574">"បន្ត"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-kn/strings.xml b/java/com/android/dialer/util/res/values-kn/strings.xml
index 8fc851b..d6de0f8 100644
--- a/java/com/android/dialer/util/res/values-kn/strings.xml
+++ b/java/com/android/dialer/util/res/values-kn/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ಈ ಸಾಧನದಲ್ಲಿ ಅದಕ್ಕಾಗಿ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಲ್ಲ"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ಕರೆ ಅನ್ನು ಮಾಡುವುದರಿಂದ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನಿಮ್ಮ ಕರೆ ಕಡಿತಗೊಳ್ಳುತ್ತದೆ."</string>
<string name="dialog_continue" msgid="4070630558441163574">"ಮುಂದುವರಿಸಿ"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ko/strings.xml b/java/com/android/dialer/util/res/values-ko/strings.xml
index aa0c138..f7a0679 100644
--- a/java/com/android/dialer/util/res/values-ko/strings.xml
+++ b/java/com/android/dialer/util/res/values-ko/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"이 기기에 작업을 처리할 수 있는 앱이 없습니다."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS 전화를 걸면 기존 전화 연결이 해제됩니다."</string>
<string name="dialog_continue" msgid="4070630558441163574">"계속"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ky/strings.xml b/java/com/android/dialer/util/res/values-ky/strings.xml
index 80dea0a..e37ace8 100644
--- a/java/com/android/dialer/util/res/values-ky/strings.xml
+++ b/java/com/android/dialer/util/res/values-ky/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Бул түзмөктө ал үчүн колдонмо жок"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Азыр WPS аркылуу чалсаңыз, учурдагы чалуу үзүлүп калат."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Улантуу"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-lo/strings.xml b/java/com/android/dialer/util/res/values-lo/strings.xml
index a003183..d7c6764 100644
--- a/java/com/android/dialer/util/res/values-lo/strings.xml
+++ b/java/com/android/dialer/util/res/values-lo/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ບໍ່ມີແອັບຯສຳລັບສິ່ງນັ້ນຢູ່ໃນອຸປະກອນນີ້"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"ການໂທ WPS ຈະຕັດສາຍທີ່ມີຢູ່ແລ້ວຂອງທ່ານ."</string>
<string name="dialog_continue" msgid="4070630558441163574">"ດຳເນີນການຕໍ່"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-lt/strings.xml b/java/com/android/dialer/util/res/values-lt/strings.xml
index 00fd0c1..bf77d5c 100644
--- a/java/com/android/dialer/util/res/values-lt/strings.xml
+++ b/java/com/android/dialer/util/res/values-lt/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Šiame įrenginyje nėra tam skirtos programos"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Pradėjus WPS skambutį bus atjungtas dabartinis skambutis."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Tęsti"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-lv/strings.xml b/java/com/android/dialer/util/res/values-lv/strings.xml
index d29c06a..7b46264 100644
--- a/java/com/android/dialer/util/res/values-lv/strings.xml
+++ b/java/com/android/dialer/util/res/values-lv/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Šajā ierīcē nav nevienas šai darbībai piemērotas lietotnes."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Veicot WPS zvanu, tiks pārtraukts esošais zvans."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Turpināt"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-mk/strings.xml b/java/com/android/dialer/util/res/values-mk/strings.xml
index 5f45fbf..4451d70 100644
--- a/java/com/android/dialer/util/res/values-mk/strings.xml
+++ b/java/com/android/dialer/util/res/values-mk/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Нема апликација за тоа на уредот"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Воспоставувањето повик преку WPS ќе го исклучи вашиот тековен повик."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Продолжи"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ml/strings.xml b/java/com/android/dialer/util/res/values-ml/strings.xml
index be98289..d861641 100644
--- a/java/com/android/dialer/util/res/values-ml/strings.xml
+++ b/java/com/android/dialer/util/res/values-ml/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"അതിനായി ഈ ഉപകരണത്തിൽ അപ്ലിക്കേഷനുകളൊന്നുമില്ല"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"ഒരു WPS കോൾ ചെയ്യുന്നത് നിങ്ങളുടെ നിലവിലെ കോൾ വിച്ഛേദിക്കാനിടയാക്കും."</string>
<string name="dialog_continue" msgid="4070630558441163574">"തുടരുക"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-mn/strings.xml b/java/com/android/dialer/util/res/values-mn/strings.xml
index 314db16..51fe7ca 100644
--- a/java/com/android/dialer/util/res/values-mn/strings.xml
+++ b/java/com/android/dialer/util/res/values-mn/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Энэхүү төхөөрөмж дээр тухайн үйлдлийг гүйцэтгэх апликейшн байхгүй байна."</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS дуудлага хийвэл одоо байгаа дуудлагыг таслах болно."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Үргэлжлүүлэх"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-mr/strings.xml b/java/com/android/dialer/util/res/values-mr/strings.xml
index 37bef29..4cb8230 100644
--- a/java/com/android/dialer/util/res/values-mr/strings.xml
+++ b/java/com/android/dialer/util/res/values-mr/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"या डिव्हाइसवर त्यासाठी कोणताही अॅप नाही"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS कॉल केल्याने आपला विद्यमान कॉल डिस्कनेक्ट केला जाईल."</string>
<string name="dialog_continue" msgid="4070630558441163574">"सुरु ठेवा"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ms/strings.xml b/java/com/android/dialer/util/res/values-ms/strings.xml
index fbda09d..d149cc5 100644
--- a/java/com/android/dialer/util/res/values-ms/strings.xml
+++ b/java/com/android/dialer/util/res/values-ms/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Tiada apl untuk tindakan itu pada peranti ini"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Membuat panggilan WPS akan memutuskan panggilan anda yang sedia ada."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Teruskan"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-my/strings.xml b/java/com/android/dialer/util/res/values-my/strings.xml
index 3a5b79f..7ec6501 100644
--- a/java/com/android/dialer/util/res/values-my/strings.xml
+++ b/java/com/android/dialer/util/res/values-my/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ဒီကိရိယာထဲမှာ အဲဒါ့အတွက် app မရှိပါ"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ခေါ်ဆိုပါက သင့်လက်ရှိခေါ်ဆိုမှု ပြတ်တောက်သွားပါမည်။"</string>
<string name="dialog_continue" msgid="4070630558441163574">"ဆက်လုပ်ရန်"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-nb/strings.xml b/java/com/android/dialer/util/res/values-nb/strings.xml
index c1c1b23..52ae935 100644
--- a/java/com/android/dialer/util/res/values-nb/strings.xml
+++ b/java/com/android/dialer/util/res/values-nb/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Det finnes ingen apper for det på denne enheten"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Den pågående samtalen brytes hvis du foretar et WPS-anrop (Wireless Priority Service)."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Fortsett"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ne/strings.xml b/java/com/android/dialer/util/res/values-ne/strings.xml
index b596a85..aedc538 100644
--- a/java/com/android/dialer/util/res/values-ne/strings.xml
+++ b/java/com/android/dialer/util/res/values-ne/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"यस यन्त्रमा त्यसका लागि कुनै पनि अनुप्रयोग छैन"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS कल गर्नुले तपाईंको जारी कललाई विच्छेद गर्ने छ।"</string>
<string name="dialog_continue" msgid="4070630558441163574">"जारी राख्नुहोस्"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-nl/strings.xml b/java/com/android/dialer/util/res/values-nl/strings.xml
index d09054c..a9fc32e 100644
--- a/java/com/android/dialer/util/res/values-nl/strings.xml
+++ b/java/com/android/dialer/util/res/values-nl/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Daarvoor is geen app beschikbaar op dit apparaat"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Als je een WPS-oproep plaatst, wordt je huidige gesprek afgebroken."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Doorgaan"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-no/strings.xml b/java/com/android/dialer/util/res/values-no/strings.xml
index c1c1b23..52ae935 100644
--- a/java/com/android/dialer/util/res/values-no/strings.xml
+++ b/java/com/android/dialer/util/res/values-no/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Det finnes ingen apper for det på denne enheten"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Den pågående samtalen brytes hvis du foretar et WPS-anrop (Wireless Priority Service)."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Fortsett"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-pa/strings.xml b/java/com/android/dialer/util/res/values-pa/strings.xml
index dfb47c5..4ad601f 100644
--- a/java/com/android/dialer/util/res/values-pa/strings.xml
+++ b/java/com/android/dialer/util/res/values-pa/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ਉਸ ਲਈ ਇਸ ਡੀਵਾਈਸ ਤੇ ਕੋਈ ਐਪ ਨਹੀਂ"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"ਇੱਕ WPS ਕਾਲ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਕਾਲ ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰ ਦੇਵੇਗਾ।"</string>
<string name="dialog_continue" msgid="4070630558441163574">"ਜਾਰੀ ਰੱਖੋ"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-pl/strings.xml b/java/com/android/dialer/util/res/values-pl/strings.xml
index 4ea0d8b..c49c55a 100644
--- a/java/com/android/dialer/util/res/values-pl/strings.xml
+++ b/java/com/android/dialer/util/res/values-pl/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Na urządzeniu nie ma aplikacji, która mogłaby wykonać tę czynność"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Jeśli nawiążesz połączenie WPS, bieżące połączenie zostanie przerwane."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Dalej"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-pt-rBR/strings.xml b/java/com/android/dialer/util/res/values-pt-rBR/strings.xml
index af5ec93..04eb8c6 100644
--- a/java/com/android/dialer/util/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/util/res/values-pt-rBR/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Nenhum app está disponível para essa ação neste dispositivo"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Fazer uma chamada usando o WPS desconectará a chamada atual."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-pt-rPT/strings.xml b/java/com/android/dialer/util/res/values-pt-rPT/strings.xml
index 1626e9e..b902302 100644
--- a/java/com/android/dialer/util/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/util/res/values-pt-rPT/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Não existe nenhuma aplicação para isso neste dispositivo"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Efetuar uma chamada WPS irá desligar a sua chamada atual."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-pt/strings.xml b/java/com/android/dialer/util/res/values-pt/strings.xml
index af5ec93..04eb8c6 100644
--- a/java/com/android/dialer/util/res/values-pt/strings.xml
+++ b/java/com/android/dialer/util/res/values-pt/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Nenhum app está disponível para essa ação neste dispositivo"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Fazer uma chamada usando o WPS desconectará a chamada atual."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ro/strings.xml b/java/com/android/dialer/util/res/values-ro/strings.xml
index c5d7d3f..40cbc36 100644
--- a/java/com/android/dialer/util/res/values-ro/strings.xml
+++ b/java/com/android/dialer/util/res/values-ro/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Pe dispozitiv nu există nicio aplicație pentru această acțiune"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Dacă inițiați un apel WPS, apelul existent va fi deconectat."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Continuați"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ru/strings.xml b/java/com/android/dialer/util/res/values-ru/strings.xml
index 837a075..c2908f9 100644
--- a/java/com/android/dialer/util/res/values-ru/strings.xml
+++ b/java/com/android/dialer/util/res/values-ru/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"На устройстве нет подходящего приложения"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Если вы начнете WPS-вызов, текущий вызов будет прекращен."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Продолжить"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-si/strings.xml b/java/com/android/dialer/util/res/values-si/strings.xml
index f91ef87..f7404d7 100644
--- a/java/com/android/dialer/util/res/values-si/strings.xml
+++ b/java/com/android/dialer/util/res/values-si/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"මෙම උපාංගයෙහි ඒ සඳහා යෙදුමක් නැත"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ඇමතුමක් කිරීමෙන් ඔබේ දැනට පවතින ඇමතුම විසන්ධි කරනු ඇත."</string>
<string name="dialog_continue" msgid="4070630558441163574">"දිගටම කරගෙන යන්න"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-sk/strings.xml b/java/com/android/dialer/util/res/values-sk/strings.xml
index 731abb9..4a1ed02 100644
--- a/java/com/android/dialer/util/res/values-sk/strings.xml
+++ b/java/com/android/dialer/util/res/values-sk/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Na tomto zariadení nie je aplikácia na vykonanie danej akcie"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Uskutočnením hovoru cez WPS prerušíte existujúci hovor."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Pokračovať"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-sl/strings.xml b/java/com/android/dialer/util/res/values-sl/strings.xml
index cde40ea..e18514d 100644
--- a/java/com/android/dialer/util/res/values-sl/strings.xml
+++ b/java/com/android/dialer/util/res/values-sl/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"V tej napravi ni aplikacije za to"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Če začnete klic WPS, bo obstoječi klic prekinjen."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Nadaljuj"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-sq/strings.xml b/java/com/android/dialer/util/res/values-sq/strings.xml
index ab53f1e..8046d92 100644
--- a/java/com/android/dialer/util/res/values-sq/strings.xml
+++ b/java/com/android/dialer/util/res/values-sq/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Nuk ka aplikacion për atë në këtë pajisje"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Kryerja e një telefonate WPS do të shkëputë telefonatën tënde ekzistuese."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Vazhdo"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-sr/strings.xml b/java/com/android/dialer/util/res/values-sr/strings.xml
index 5193c6a..d7de552 100644
--- a/java/com/android/dialer/util/res/values-sr/strings.xml
+++ b/java/com/android/dialer/util/res/values-sr/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"На овом уређају нема апликација за то"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ако упутите WPS позив, прекинућете постојећи позив."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Настави"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-sv/strings.xml b/java/com/android/dialer/util/res/values-sv/strings.xml
index 23c34f0..5b17b06 100644
--- a/java/com/android/dialer/util/res/values-sv/strings.xml
+++ b/java/com/android/dialer/util/res/values-sv/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Det finns ingen app för detta på enheten"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ringer du ett WPS-samtal kopplas det nuvarande samtalet bort."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Fortsätt"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-sw/strings.xml b/java/com/android/dialer/util/res/values-sw/strings.xml
index 6dabc84..8ee6843 100644
--- a/java/com/android/dialer/util/res/values-sw/strings.xml
+++ b/java/com/android/dialer/util/res/values-sw/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Hakuna programu kwa ajili ya hiyo kwenye kifaa hiki"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ukipiga simu ya WPS, simu inayoendelea sasa itakatwa."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Endelea"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ta/strings.xml b/java/com/android/dialer/util/res/values-ta/strings.xml
index 4f1b691..ed63669 100644
--- a/java/com/android/dialer/util/res/values-ta/strings.xml
+++ b/java/com/android/dialer/util/res/values-ta/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"சாதனத்தில் இந்தச் செயலைச் செய்வதற்கான பயன்பாடு எதுவும் இல்லை"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS அழைப்பை மேற்கொண்டால், தற்போது செயலில் உள்ள அழைப்புத் துண்டிக்கப்படும்."</string>
<string name="dialog_continue" msgid="4070630558441163574">"தொடர்க"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-te/strings.xml b/java/com/android/dialer/util/res/values-te/strings.xml
index 3e54163..44c84f5 100644
--- a/java/com/android/dialer/util/res/values-te/strings.xml
+++ b/java/com/android/dialer/util/res/values-te/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ఈ పరికరంలో దాని కోసం అనువర్తనం ఏదీ లేదు"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS కాల్ చేయడం వలన మీరు ప్రస్తుతం మాట్లాడుతున్న కాల్ డిస్కనెక్ట్ అవుతుంది."</string>
<string name="dialog_continue" msgid="4070630558441163574">"కొనసాగించు"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-th/strings.xml b/java/com/android/dialer/util/res/values-th/strings.xml
index 59341c3..f005573 100644
--- a/java/com/android/dialer/util/res/values-th/strings.xml
+++ b/java/com/android/dialer/util/res/values-th/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"ไม่มีแอปสำหรับการทำงานนั้นบนอุปกรณ์นี้"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"หากคุณโทรผ่านบริการ WPS ตอนนี้ สายที่โทรอยู่จะตัดการเชื่อมต่อ"</string>
<string name="dialog_continue" msgid="4070630558441163574">"ต่อไป"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-tl/strings.xml b/java/com/android/dialer/util/res/values-tl/strings.xml
index e2a2ed0..73de8b5 100644
--- a/java/com/android/dialer/util/res/values-tl/strings.xml
+++ b/java/com/android/dialer/util/res/values-tl/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Walang app para doon sa device na ito"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ang paggawa ng WPS na tawag ay puputulin sa koneksyon ang dati mo nang tawag."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Magpatuloy"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-tr/strings.xml b/java/com/android/dialer/util/res/values-tr/strings.xml
index dcd3e83..108b20a 100644
--- a/java/com/android/dialer/util/res/values-tr/strings.xml
+++ b/java/com/android/dialer/util/res/values-tr/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Bu cihazda bu işlem için uygun uygulama yok"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS çağrısı yaparsanız, devam eden çağrı sonlandırılır."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Devam"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-uk/strings.xml b/java/com/android/dialer/util/res/values-uk/strings.xml
index 2b5bd38..d57b1de 100644
--- a/java/com/android/dialer/util/res/values-uk/strings.xml
+++ b/java/com/android/dialer/util/res/values-uk/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"На цьому пристрої немає додатка, який може виконати цю дію"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Якщо здійснити виклик WPS, буде роз’єднано поточний виклик."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Продовжити"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-ur/strings.xml b/java/com/android/dialer/util/res/values-ur/strings.xml
index 2e3f8a0..7c036d0 100644
--- a/java/com/android/dialer/util/res/values-ur/strings.xml
+++ b/java/com/android/dialer/util/res/values-ur/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"اس آلہ پر اس کیلئے کوئی ایپ نہیں ہے"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS کال کرنے سے آپ کی موجودہ کال غیر منسلک ہو جائے گی۔"</string>
<string name="dialog_continue" msgid="4070630558441163574">"جاری رکھیں"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-uz/strings.xml b/java/com/android/dialer/util/res/values-uz/strings.xml
index ca7c821..0e28bf7 100644
--- a/java/com/android/dialer/util/res/values-uz/strings.xml
+++ b/java/com/android/dialer/util/res/values-uz/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Qurilmada buni bajaradigan ilova yo‘q"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-chaqiruv boshlab yuborilsa, hozirgi qo‘ng‘iroq tugatiladi."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Davom ettirish"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-vi/strings.xml b/java/com/android/dialer/util/res/values-vi/strings.xml
index 8a225a3..925b91e 100644
--- a/java/com/android/dialer/util/res/values-vi/strings.xml
+++ b/java/com/android/dialer/util/res/values-vi/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Không có ứng dụng nào cho thao tác đó trên thiết bị này"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Việc thực hiện cuộc gọi WPS sẽ ngắt kết nối cuộc gọi hiện có của bạn."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Tiếp tục"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-zh-rCN/strings.xml b/java/com/android/dialer/util/res/values-zh-rCN/strings.xml
index 0f2d658..6d3e821 100644
--- a/java/com/android/dialer/util/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/util/res/values-zh-rCN/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"此设备上没有可执行此操作的应用"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"拨打 WPS 电话会中断现有通话。"</string>
<string name="dialog_continue" msgid="4070630558441163574">"继续"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-zh-rHK/strings.xml b/java/com/android/dialer/util/res/values-zh-rHK/strings.xml
index 873de4d..2193cfa 100644
--- a/java/com/android/dialer/util/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/util/res/values-zh-rHK/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"這部裝置上沒有可用的應用程式"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"撥打 WPS 電話會掛斷現有通話。"</string>
<string name="dialog_continue" msgid="4070630558441163574">"繼續"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-zh-rTW/strings.xml b/java/com/android/dialer/util/res/values-zh-rTW/strings.xml
index 6af0cd1..1926318 100644
--- a/java/com/android/dialer/util/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/util/res/values-zh-rTW/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"這個裝置未安裝可執行該操作的應用程式"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"撥打 WPS 電話會中斷你正在進行的通話。"</string>
<string name="dialog_continue" msgid="4070630558441163574">"繼續"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/util/res/values-zu/strings.xml b/java/com/android/dialer/util/res/values-zu/strings.xml
index ea15b7d..cdc7f89 100644
--- a/java/com/android/dialer/util/res/values-zu/strings.xml
+++ b/java/com/android/dialer/util/res/values-zu/strings.xml
@@ -23,6 +23,4 @@
<string name="activity_not_available" msgid="8360067109103762211">"Alukho uhlelo lokusebenza lalokho kule divayisi"</string>
<string name="outgoing_wps_warning" msgid="7505673114152005234">"Ukwenza ikholi ye-WPS kuzonqamula ikholi yakho ekhona."</string>
<string name="dialog_continue" msgid="4070630558441163574">"Qhubeka"</string>
- <!-- no translation found for camera_privacy_text (4268584469444688293) -->
- <skip />
</resources>
diff --git a/java/com/android/dialer/widget/MessageFragment.java b/java/com/android/dialer/widget/MessageFragment.java
index 615ad3b..7a0fcfd 100644
--- a/java/com/android/dialer/widget/MessageFragment.java
+++ b/java/com/android/dialer/widget/MessageFragment.java
@@ -134,10 +134,9 @@
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (getMessage() == null) {
- return false;
+ if (!TextUtils.isEmpty(getMessage())) {
+ getListener().onMessageFragmentSendMessage(getMessage());
}
- getListener().onMessageFragmentSendMessage(getMessage());
return true;
}
diff --git a/java/com/android/dialer/widget/res/layout/fragment_message.xml b/java/com/android/dialer/widget/res/layout/fragment_message.xml
index 5b0bab5..bdb85fa 100644
--- a/java/com/android/dialer/widget/res/layout/fragment_message.xml
+++ b/java/com/android/dialer/widget/res/layout/fragment_message.xml
@@ -14,28 +14,36 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<LinearLayout
+<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical"
- android:gravity="bottom"
android:background="@color/background_dialer_white">
- <LinearLayout
- android:id="@+id/message_container"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_above="@+id/divider">
+
+ <LinearLayout
+ android:id="@+id/message_container"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </ScrollView>
<View
+ android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="@dimen/message_divider_height"
- android:background="#12000000"/>
+ android:background="#12000000"
+ android:layout_above="@+id/edittext_container"/>
<RelativeLayout
+ android:id="@+id/edittext_container"
android:layout_width="wrap_content"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true">
<EditText
android:id="@+id/custom_message"
@@ -50,7 +58,7 @@
android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
android:layout_toStartOf="@+id/count_and_send_container"
android:inputType="textShortMessage|textCapSentences"
- android:imeOptions="actionSend"/>
+ android:imeOptions="flagNoExtractUi|actionSend"/>
<LinearLayout
android:id="@+id/count_and_send_container"
@@ -80,4 +88,4 @@
android:textColor="@color/dialer_edit_text_hint_color"/>
</LinearLayout>
</RelativeLayout>
-</LinearLayout>
\ No newline at end of file
+</RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/dialershared/bubble/Bubble.java b/java/com/android/dialershared/bubble/Bubble.java
index f2ba117..9606f5b 100644
--- a/java/com/android/dialershared/bubble/Bubble.java
+++ b/java/com/android/dialershared/bubble/Bubble.java
@@ -61,6 +61,8 @@
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewAnimator;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
import com.android.dialershared.bubble.BubbleInfo.Action;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -87,6 +89,8 @@
private final Context context;
private final WindowManager windowManager;
+ private final Handler handler = new Handler();
+
private LayoutParams windowParams;
// Initialized in factory method
@@ -100,9 +104,7 @@
private boolean hideAfterText;
private int collapseEndAction;
- private final Handler handler = new Handler();
-
- private ViewHolder viewHolder;
+ @VisibleForTesting ViewHolder viewHolder;
private ViewPropertyAnimator collapseAnimation;
private Integer overrideGravity;
private ViewPropertyAnimator exitAnimator;
@@ -238,47 +240,22 @@
updatePrimaryIconAnimation();
}
- /**
- * Hide the button if visible. Will run a short exit animation before hiding. If the bubble is
- * currently showing text, will hide after the text is done displaying. If the bubble is not
- * visible this method does nothing.
- */
+ /** Hide the bubble. */
public void hide() {
- if (visibility == Visibility.HIDDEN || visibility == Visibility.EXITING) {
+ if (hideAfterText) {
+ // hideAndReset() will be called after showing text, do nothing here.
return;
}
+ hideHelper(this::defaultAfterHidingAnimation);
+ }
- if (textShowing) {
- hideAfterText = true;
- return;
- }
-
- if (collapseAnimation != null) {
- collapseEndAction = CollapseEnd.HIDE;
- return;
- }
-
- if (expanded) {
- startCollapse(CollapseEnd.HIDE);
- return;
- }
-
- visibility = Visibility.EXITING;
- exitAnimator =
- viewHolder
- .getPrimaryButton()
- .animate()
- .setInterpolator(new AnticipateInterpolator())
- .scaleX(0)
- .scaleY(0)
- .withEndAction(
- () -> {
- exitAnimator = null;
- windowManager.removeView(viewHolder.getRoot());
- visibility = Visibility.HIDDEN;
- updatePrimaryIconAnimation();
- });
- exitAnimator.start();
+ /** Hide the bubble and reset {@viewHolder} to initial state */
+ public void hideAndReset() {
+ hideHelper(
+ () -> {
+ defaultAfterHidingAnimation();
+ reset();
+ });
}
/** Returns whether the bubble is currently visible */
@@ -350,8 +327,15 @@
public boolean onPreDraw() {
primaryButton.getViewTreeObserver().removeOnPreDrawListener(this);
- // Prepare and capture end values
+ // Prepare and capture end values, always use the size of primaryText since
+ // its invisibility makes primaryButton smaller than expected
TransitionValues endValues = new TransitionValues();
+ endValues.values.put(
+ ChangeOnScreenBounds.PROPNAME_WIDTH,
+ viewHolder.getPrimaryText().getWidth());
+ endValues.values.put(
+ ChangeOnScreenBounds.PROPNAME_HEIGHT,
+ viewHolder.getPrimaryText().getHeight());
endValues.view = primaryButton;
transition.addTarget(endValues.view);
transition.captureEndValues(endValues);
@@ -377,7 +361,8 @@
() -> {
textShowing = false;
if (hideAfterText) {
- hide();
+ // Always reset here since text shouldn't keep showing.
+ hideAndReset();
} else {
doResize(
() -> viewHolder.getPrimaryButton().setDisplayedChild(ViewHolder.CHILD_INDEX_ICON));
@@ -411,6 +396,7 @@
void primaryButtonClick() {
if (expanded || textShowing || currentInfo.getActions().isEmpty()) {
+ Logger.get(context).logImpression(DialerImpression.Type.BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL);
try {
currentInfo.getPrimaryIntent().send();
} catch (CanceledException e) {
@@ -419,6 +405,7 @@
return;
}
+ Logger.get(context).logImpression(DialerImpression.Type.BUBBLE_PRIMARY_BUTTON_EXPAND);
doResize(
() -> {
onLeftRightSwitch(isDrawingFromRight());
@@ -478,6 +465,48 @@
return viewHolder.getRoot();
}
+ /**
+ * Hide the bubble if visible. Will run a short exit animation and before hiding, and {@code
+ * afterHiding} after hiding. If the bubble is currently showing text, will hide after the text is
+ * done displaying. If the bubble is not visible this method does nothing.
+ */
+ private void hideHelper(Runnable afterHiding) {
+ if (visibility == Visibility.HIDDEN || visibility == Visibility.EXITING) {
+ return;
+ }
+
+ if (textShowing) {
+ hideAfterText = true;
+ return;
+ }
+
+ if (collapseAnimation != null) {
+ collapseEndAction = CollapseEnd.HIDE;
+ return;
+ }
+
+ if (expanded) {
+ startCollapse(CollapseEnd.HIDE);
+ return;
+ }
+
+ visibility = Visibility.EXITING;
+ exitAnimator =
+ viewHolder
+ .getPrimaryButton()
+ .animate()
+ .setInterpolator(new AnticipateInterpolator())
+ .scaleX(0)
+ .scaleY(0)
+ .withEndAction(afterHiding);
+ exitAnimator.start();
+ }
+
+ private void reset() {
+ viewHolder = new ViewHolder(viewHolder.getRoot().getContext());
+ update();
+ }
+
private void update() {
RippleDrawable backgroundRipple =
(RippleDrawable)
@@ -681,7 +710,16 @@
windowManager.updateViewLayout(getRootView(), windowParams);
}
- private class ViewHolder {
+ private void defaultAfterHidingAnimation() {
+ exitAnimator = null;
+ windowManager.removeView(viewHolder.getRoot());
+ visibility = Visibility.HIDDEN;
+
+ updatePrimaryIconAnimation();
+ }
+
+ @VisibleForTesting
+ class ViewHolder {
public static final int CHILD_INDEX_ICON = 0;
public static final int CHILD_INDEX_TEXT = 1;
diff --git a/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java
index 37c8204..8cd61af 100644
--- a/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java
+++ b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java
@@ -41,6 +41,9 @@
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
static final String PROPNAME_SCREEN_Y = "bubble:changeScreenBounds:screenY";
+ static final String PROPNAME_WIDTH = "bubble:changeScreenBounds:width";
+ static final String PROPNAME_HEIGHT = "bubble:changeScreenBounds:height";
+
private static final Property<ViewBounds, PointF> TOP_LEFT_PROPERTY =
new Property<ViewBounds, PointF>(PointF.class, "topLeft") {
@Override
@@ -70,21 +73,32 @@
@Override
public void captureStartValues(TransitionValues transitionValues) {
- captureValues(transitionValues);
+ captureValuesWithSize(transitionValues);
}
@Override
public void captureEndValues(TransitionValues transitionValues) {
- captureValues(transitionValues);
+ captureValuesWithSize(transitionValues);
}
- private void captureValues(TransitionValues values) {
+ /**
+ * Capture location (left and top) from {@code values.view} and size (width and height) from
+ * {@code values.values}. If size is not set, use the size of {@code values.view}.
+ */
+ private void captureValuesWithSize(TransitionValues values) {
View view = values.view;
if (view.isLaidOut() || view.getWidth() != 0 || view.getHeight() != 0) {
+ Integer width = (Integer) values.values.get(PROPNAME_WIDTH);
+ Integer height = (Integer) values.values.get(PROPNAME_HEIGHT);
+
values.values.put(
PROPNAME_BOUNDS,
- new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()));
+ new Rect(
+ view.getLeft(),
+ view.getTop(),
+ width == null ? view.getRight() : view.getLeft() + width,
+ height == null ? view.getBottom() : view.getTop() + height));
values.view.getLocationOnScreen(tempLocation);
values.values.put(PROPNAME_SCREEN_X, tempLocation[0]);
values.values.put(PROPNAME_SCREEN_Y, tempLocation[1]);
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index 30877ff..4da227c 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.os.Bundle;
+import android.os.Trace;
import android.support.v4.app.Fragment;
import android.support.v4.os.UserManagerCompat;
import android.telecom.CallAudioState;
@@ -101,6 +102,7 @@
@Override
public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
+ Trace.beginSection("CallButtonPresenter.onStateChange");
if (newState == InCallState.OUTGOING) {
mCall = callList.getOutgoingCall();
} else if (newState == InCallState.INCALL) {
@@ -124,6 +126,7 @@
mCall = null;
}
updateUi(newState, mCall);
+ Trace.endSection();
}
/**
@@ -365,7 +368,7 @@
}
private void updateUi(InCallState state, DialerCall call) {
- LogUtil.v("CallButtonPresenter", "updating call UI for call: ", call);
+ LogUtil.v("CallButtonPresenter", "updating call UI for call: %s", call);
if (mInCallButtonUi == null) {
return;
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 67b9177..824d875 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -28,6 +28,7 @@
import android.hardware.display.DisplayManager;
import android.os.BatteryManager;
import android.os.Handler;
+import android.os.Trace;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
@@ -51,6 +52,7 @@
import com.android.dialer.logging.Logger;
import com.android.dialer.multimedia.MultimediaData;
import com.android.dialer.oem.MotorolaUtils;
+import com.android.dialer.postcall.PostCall;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -60,6 +62,7 @@
import com.android.incallui.InCallPresenter.IncomingCallListener;
import com.android.incallui.call.CallList;
import com.android.incallui.call.DialerCall;
+import com.android.incallui.call.DialerCall.State;
import com.android.incallui.call.DialerCallListener;
import com.android.incallui.calllocation.CallLocation;
import com.android.incallui.calllocation.CallLocationComponent;
@@ -67,6 +70,7 @@
import com.android.incallui.incall.protocol.InCallScreen;
import com.android.incallui.incall.protocol.InCallScreenDelegate;
import com.android.incallui.incall.protocol.PrimaryCallState;
+import com.android.incallui.incall.protocol.PrimaryCallState.ButtonState;
import com.android.incallui.incall.protocol.PrimaryInfo;
import com.android.incallui.incall.protocol.SecondaryInfo;
import com.android.incallui.videotech.utils.SessionModificationState;
@@ -245,8 +249,10 @@
@Override
public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
+ Trace.beginSection("CallCardPresenter.onStateChange");
LogUtil.v("CallCardPresenter.onStateChange", "oldState: %s, newState: %s", oldState, newState);
if (mInCallScreen == null) {
+ Trace.endSection();
return;
}
@@ -343,6 +349,7 @@
callState != DialerCall.State.INCOMING /* animate */);
maybeSendAccessibilityEvent(oldState, newState, primaryChanged);
+ Trace.endSection();
}
@Override
@@ -472,7 +479,9 @@
CallerInfoUtils.isVoiceMailNumber(mContext, mPrimary),
mPrimary.isRemotelyHeld(),
isBusiness,
- supports2ndCallOnHold()));
+ supports2ndCallOnHold(),
+ getSwapToSecondaryButtonState(),
+ mPrimary.isAssistedDialed()));
InCallActivity activity =
(InCallActivity) (mInCallScreen.getInCallScreenFragment().getActivity());
@@ -482,6 +491,16 @@
}
}
+ private @ButtonState int getSwapToSecondaryButtonState() {
+ if (mSecondary == null) {
+ return ButtonState.NOT_SUPPORT;
+ }
+ if (mPrimary.getState() == State.ACTIVE) {
+ return ButtonState.ENABLED;
+ }
+ return ButtonState.DISABLED;
+ }
+
/** Only show the conference call button if we can manage the conference. */
private void maybeShowManageConferenceCallButton() {
getUi().showManageConferenceCallButton(shouldShowManageConference());
@@ -570,8 +589,8 @@
if (call != null) {
call.getLogState().contactLookupResult = entry.contactLookupResult;
}
- if (entry.contactUri != null) {
- CallerInfoUtils.sendViewNotification(mContext, entry.contactUri);
+ if (entry.lookupUri != null) {
+ CallerInfoUtils.sendViewNotification(mContext, entry.lookupUri);
}
}
@@ -1000,6 +1019,7 @@
if (mPrimary != null) {
mPrimary.disconnect();
}
+ PostCall.onDisconnectPressed(mContext);
}
/**
diff --git a/java/com/android/incallui/CallerInfoAsyncQuery.java b/java/com/android/incallui/CallerInfoAsyncQuery.java
index d620d47..858d0f4 100644
--- a/java/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/java/com/android/incallui/CallerInfoAsyncQuery.java
@@ -41,6 +41,7 @@
import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
+import com.android.dialer.strictmode.DialerStrictMode;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -189,7 +190,7 @@
CallerInfo info,
OnQueryCompleteListener listener,
Object cookie) {
- long[] directoryIds = getDirectoryIds(context);
+ long[] directoryIds = DialerStrictMode.bypass(() -> getDirectoryIds(context));
int size = directoryIds.length;
if (size == 0) {
return false;
diff --git a/java/com/android/incallui/ConferenceManagerFragment.java b/java/com/android/incallui/ConferenceManagerFragment.java
index cef8a38..bd6cb85 100644
--- a/java/com/android/incallui/ConferenceManagerFragment.java
+++ b/java/com/android/incallui/ConferenceManagerFragment.java
@@ -21,7 +21,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
-import com.android.contacts.common.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.incallui.ConferenceManagerPresenter.ConferenceManagerUi;
diff --git a/java/com/android/incallui/ConferenceParticipantListAdapter.java b/java/com/android/incallui/ConferenceParticipantListAdapter.java
index 712bdef..70cdf24 100644
--- a/java/com/android/incallui/ConferenceParticipantListAdapter.java
+++ b/java/com/android/incallui/ConferenceParticipantListAdapter.java
@@ -31,12 +31,12 @@
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
import com.android.incallui.call.CallList;
import com.android.incallui.call.DialerCall;
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index d50a5c2..3530153 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -699,8 +699,6 @@
// Note in cache entry whether this is a pending async loading action to know whether to
// wait for its callback or not.
boolean hasPendingQuery;
- /** This will be used for the "view" notification. */
- public Uri contactUri;
/** Either a display photo or a thumbnail URI. */
Uri displayPhotoUri;
@@ -741,8 +739,6 @@
+ photo
+ ", isSipCall="
+ isSipCall
- + ", contactUri="
- + contactUri
+ ", displayPhotoUri="
+ displayPhotoUri
+ ", contactLookupResult="
diff --git a/java/com/android/incallui/DialpadFragment.java b/java/com/android/incallui/DialpadFragment.java
index 7f494aa..c614d84 100644
--- a/java/com/android/incallui/DialpadFragment.java
+++ b/java/com/android/incallui/DialpadFragment.java
@@ -125,7 +125,7 @@
return this;
}
- // TODO Adds hardware keyboard listener
+ // TODO(klp) Adds hardware keyboard listener
@Override
public View onCreateView(
diff --git a/java/com/android/incallui/ExternalCallNotifier.java b/java/com/android/incallui/ExternalCallNotifier.java
index f01a294..ed3c918 100644
--- a/java/com/android/incallui/ExternalCallNotifier.java
+++ b/java/com/android/incallui/ExternalCallNotifier.java
@@ -40,8 +40,8 @@
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.compat.CallCompat;
import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.common.util.BitmapUtil;
import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.contactphoto.BitmapUtil;
import com.android.dialer.notification.NotificationChannelId;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCallDelegate;
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index c95086c..3ea2b17 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -21,6 +21,7 @@
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.os.Bundle;
+import android.os.Trace;
import android.support.annotation.ColorInt;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
@@ -112,6 +113,7 @@
@Override
protected void onCreate(Bundle icicle) {
+ Trace.beginSection("InCallActivity.onCreate");
LogUtil.i("InCallActivity.onCreate", "");
super.onCreate(icicle);
@@ -129,6 +131,7 @@
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
pseudoBlackScreenOverlay = findViewById(R.id.psuedo_black_screen_overlay);
+ Trace.endSection();
}
@Override
@@ -144,6 +147,7 @@
@Override
protected void onStart() {
+ Trace.beginSection("InCallActivity.onStart");
LogUtil.i("InCallActivity.onStart", "");
super.onStart();
isVisible = true;
@@ -154,40 +158,49 @@
// Hide the dialpad because there may not be enough room
showDialpadFragment(false, false);
}
+ Trace.endSection();
}
@Override
protected void onResume() {
+ Trace.beginSection("InCallActivity.onResume");
LogUtil.i("InCallActivity.onResume", "");
super.onResume();
common.onResume();
PseudoScreenState pseudoScreenState = InCallPresenter.getInstance().getPseudoScreenState();
pseudoScreenState.addListener(this);
onPseudoScreenStateChanged(pseudoScreenState.isOn());
+ Trace.endSection();
}
/** onPause is guaranteed to be called when the InCallActivity goes in the background. */
@Override
protected void onPause() {
+ Trace.beginSection("InCallActivity.onPause");
LogUtil.i("InCallActivity.onPause", "");
super.onPause();
common.onPause();
InCallPresenter.getInstance().getPseudoScreenState().removeListener(this);
+ Trace.endSection();
}
@Override
protected void onStop() {
+ Trace.beginSection("InCallActivity.onStop");
LogUtil.i("InCallActivity.onStop", "");
super.onStop();
common.onStop();
isVisible = false;
+ Trace.endSection();
}
@Override
protected void onDestroy() {
+ Trace.beginSection("InCallActivity.onDestroy");
LogUtil.i("InCallActivity.onDestroy", "");
super.onDestroy();
common.onDestroy();
+ Trace.endSection();
}
@Override
@@ -476,8 +489,10 @@
}
public void onPrimaryCallStateChanged() {
+ Trace.beginSection("InCallActivity.onPrimaryCallStateChanged");
LogUtil.i("InCallActivity.onPrimaryCallStateChanged", "");
showMainInCallFragment();
+ Trace.endSection();
}
public void onWiFiToLteHandover(DialerCall call) {
@@ -514,15 +529,18 @@
}
private void showMainInCallFragment() {
+ Trace.beginSection("InCallActivity.showMainInCallFragment");
// If the activity's onStart method hasn't been called yet then defer doing any work.
if (!isVisible) {
LogUtil.i("InCallActivity.showMainInCallFragment", "not visible yet/anymore");
+ Trace.endSection();
return;
}
// Don't let this be reentrant.
if (isInShowMainInCallFragment) {
LogUtil.i("InCallActivity.showMainInCallFragment", "already in method, bailing");
+ Trace.endSection();
return;
}
@@ -560,10 +578,13 @@
}
if (didChangeInCall || didChangeVideo || didChangeAnswer) {
+ Trace.beginSection("InCallActivity.commitTransaction");
transaction.commitNow();
+ Trace.endSection();
Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
}
isInShowMainInCallFragment = false;
+ Trace.endSection();
}
private ShouldShowUiResult getShouldShowAnswerUi() {
diff --git a/java/com/android/incallui/InCallActivityCommon.java b/java/com/android/incallui/InCallActivityCommon.java
index 3a264be..14531e0 100644
--- a/java/com/android/incallui/InCallActivityCommon.java
+++ b/java/com/android/incallui/InCallActivityCommon.java
@@ -21,6 +21,7 @@
import android.app.ActivityManager.TaskDescription;
import android.app.AlertDialog;
import android.app.Dialog;
+import android.app.KeyguardManager;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnDismissListener;
@@ -105,6 +106,8 @@
private boolean animateDialpadOnShow;
private String dtmfTextToPreopulate;
@DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
+ // If activity is going to be recreated. This is usually happening in {@link onNewIntent}.
+ private boolean isRecreating;
private final SelectPhoneAccountListener selectAccountListener =
new SelectPhoneAccountListener() {
@@ -209,7 +212,8 @@
}
});
- if (icicle != null) {
+ // Don't override the value if show dialpad request is true in intent extras.
+ if (icicle != null && showDialpadRequest == DIALPAD_REQUEST_NONE) {
// If the dialpad was shown before, set variables indicating it should be shown and
// populated with the previous DTMF text. The dialpad is actually shown and populated
// in onResume() to ensure the hosting fragment has been inflated and is ready to receive it.
@@ -319,6 +323,18 @@
}
public void onStop() {
+ // Disconnects call waiting for account when activity is hidden e.g. user press home button.
+ // This is necessary otherwise the pending call will stuck on account choose and no new call
+ // will be able to create. See b/63600434 for more details.
+ // Skip this on locked screen since the activity may go over life cycle and start again.
+ if (!isRecreating
+ && !inCallActivity.getSystemService(KeyguardManager.class).isKeyguardLocked()) {
+ DialerCall waitingForAccountCall = CallList.getInstance().getWaitingForAccountCall();
+ if (waitingForAccountCall != null) {
+ waitingForAccountCall.disconnect();
+ }
+ }
+
enableInCallOrientationEventListener(false);
InCallPresenter.getInstance().updateIsChangingConfigurations();
InCallPresenter.getInstance().onActivityStopped();
@@ -331,6 +347,7 @@
void onNewIntent(Intent intent, boolean isRecreating) {
LogUtil.i("InCallActivityCommon.onNewIntent", "");
+ this.isRecreating = isRecreating;
// We're being re-launched with a new Intent. Since it's possible for a
// single InCallActivity instance to persist indefinitely (even if we
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 563468e..6c08c49 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -21,6 +21,7 @@
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
+import android.os.Trace;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
@@ -41,6 +42,7 @@
import com.android.dialer.blocking.FilteredNumberCompat;
import com.android.dialer.blocking.FilteredNumbersUtil;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.logging.InteractionEvent;
@@ -323,11 +325,13 @@
ContactInfoCache contactInfoCache,
ProximitySensor proximitySensor,
FilteredNumberAsyncQueryHandler filteredNumberQueryHandler) {
+ Trace.beginSection("InCallPresenter.setUp");
if (mServiceConnected) {
LogUtil.i("InCallPresenter.setUp", "New service connection replacing existing one.");
if (context != mContext || callList != mCallList) {
throw new IllegalStateException();
}
+ Trace.endSection();
return;
}
@@ -362,7 +366,7 @@
mCallList.addListener(this);
// Create spam call list listener and add it to the list of listeners
- mSpamCallListListener = new SpamCallListListener(context);
+ mSpamCallListListener = new SpamCallListListener(context, new DefaultDialerExecutorFactory());
mCallList.addListener(mSpamCallListListener);
VideoPauseController.getInstance().setUp(this);
@@ -373,6 +377,7 @@
.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
LogUtil.d("InCallPresenter.setUp", "Finished InCallPresenter.setUp");
+ Trace.endSection();
}
/**
@@ -513,6 +518,7 @@
}
public void onCallAdded(final android.telecom.Call call) {
+ Trace.beginSection("InCallPresenter.onCallAdded");
LatencyReport latencyReport = new LatencyReport(call);
if (shouldAttemptBlocking(call)) {
maybeBlockCall(call, latencyReport);
@@ -528,6 +534,7 @@
// Since a call has been added we are no longer waiting for Telecom to send us a call.
setBoundAndWaitingForOutgoingCall(false, null);
call.registerCallback(mCallCallback);
+ Trace.endSection();
}
private boolean shouldAttemptBlocking(android.telecom.Call call) {
@@ -690,11 +697,14 @@
*/
@Override
public void onCallListChange(CallList callList) {
+ Trace.beginSection("InCallPresenter.onCallListChange");
if (mInCallActivity != null && mInCallActivity.isInCallScreenAnimating()) {
mAwaitingCallListUpdate = true;
+ Trace.endSection();
return;
}
if (callList == null) {
+ Trace.endSection();
return;
}
@@ -744,11 +754,13 @@
callList.getActiveOrBackgroundCall() != null || callList.getOutgoingCall() != null;
mInCallActivity.dismissKeyguard(hasCall);
}
+ Trace.endSection();
}
/** Called when there is a new incoming call. */
@Override
public void onIncomingCall(DialerCall call) {
+ Trace.beginSection("InCallPresenter.onIncomingCall");
InCallState newState = startOrFinishUi(InCallState.INCOMING);
InCallState oldState = mInCallState;
@@ -764,6 +776,7 @@
// Re-evaluate which fragment is being shown.
mInCallActivity.onPrimaryCallStateChanged();
}
+ Trace.endSection();
}
@Override
@@ -855,7 +868,7 @@
if (newState == InCallState.NO_CALLS) {
if (mBoundAndWaitingForOutgoingCall) {
- return InCallState.OUTGOING;
+ return InCallState.PENDING_OUTGOING;
}
}
@@ -873,7 +886,7 @@
mBoundAndWaitingForOutgoingCall = isBound;
mThemeColorManager.setPendingPhoneAccountHandle(handle);
if (isBound && mInCallState == InCallState.NO_CALLS) {
- mInCallState = InCallState.OUTGOING;
+ mInCallState = InCallState.PENDING_OUTGOING;
}
}
@@ -1064,7 +1077,7 @@
LogUtil.d("InCallPresenter.onActivityStarted", "onActivityStarted");
notifyVideoPauseController(true);
if (mStatusBarNotifier != null) {
- // TODO - b/36649622: Investigate this redundant call
+ // TODO(maxwelb) - b/36649622: Investigate this redundant call
mStatusBarNotifier.updateNotification(mCallList);
}
applyScreenTimeout();
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index d2b0297..a2e2432 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -19,6 +19,7 @@
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
+import android.os.Trace;
import android.telecom.Call;
import android.telecom.CallAudioState;
import android.telecom.InCallService;
@@ -45,26 +46,35 @@
@Override
public void onBringToForeground(boolean showDialpad) {
+ Trace.beginSection("InCallServiceImpl.onBringToForeground");
InCallPresenter.getInstance().onBringToForeground(showDialpad);
+ Trace.endSection();
}
@Override
public void onCallAdded(Call call) {
+ Trace.beginSection("InCallServiceImpl.onCallAdded");
InCallPresenter.getInstance().onCallAdded(call);
+ Trace.endSection();
}
@Override
public void onCallRemoved(Call call) {
+ Trace.beginSection("InCallServiceImpl.onCallRemoved");
InCallPresenter.getInstance().onCallRemoved(call);
+ Trace.endSection();
}
@Override
public void onCanAddCallChanged(boolean canAddCall) {
+ Trace.beginSection("InCallServiceImpl.onCanAddCallChanged");
InCallPresenter.getInstance().onCanAddCallChanged(canAddCall);
+ Trace.endSection();
}
@Override
public IBinder onBind(Intent intent) {
+ Trace.beginSection("InCallServiceImpl.onBind");
final Context context = getApplicationContext();
final ContactInfoCache contactInfoCache = ContactInfoCache.getInstance(context);
InCallPresenter.getInstance()
@@ -85,20 +95,25 @@
returnToCallController = new ReturnToCallController(this);
}
- return super.onBind(intent);
+ IBinder iBinder = super.onBind(intent);
+ Trace.endSection();
+ return iBinder;
}
@Override
public boolean onUnbind(Intent intent) {
+ Trace.beginSection("InCallServiceImpl.onUnbind");
super.onUnbind(intent);
InCallPresenter.getInstance().onServiceUnbind();
tearDown();
+ Trace.endSection();
return false;
}
private void tearDown() {
+ Trace.beginSection("InCallServiceImpl.tearDown");
Log.v(this, "tearDown");
// Tear down the InCall system
TelecomAdapter.getInstance().clearInCallService();
@@ -107,5 +122,6 @@
returnToCallController.tearDown();
returnToCallController = null;
}
+ Trace.endSection();
}
}
diff --git a/java/com/android/incallui/ProximitySensor.java b/java/com/android/incallui/ProximitySensor.java
index 653d85b..db538ab 100644
--- a/java/com/android/incallui/ProximitySensor.java
+++ b/java/com/android/incallui/ProximitySensor.java
@@ -102,7 +102,10 @@
// sensor during incoming call screen. We check hasLiveCall() because a disconnected call
// can also put the in-call screen in the INCALL state.
boolean hasOngoingCall = InCallState.INCALL == newState && callList.hasLiveCall();
- boolean isOffhook = (InCallState.OUTGOING == newState) || hasOngoingCall;
+ boolean isOffhook =
+ InCallState.PENDING_OUTGOING == newState
+ || InCallState.OUTGOING == newState
+ || hasOngoingCall;
DialerCall activeCall = callList.getActiveCall();
boolean isVideoCall = activeCall != null && activeCall.isVideoCall();
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index 33154c5..8e4b9cc 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -102,6 +102,14 @@
}
}
+ private void hideAndReset() {
+ if (bubble != null) {
+ bubble.hideAndReset();
+ } else {
+ LogUtil.i("ReturnToCallController.reset", "reset() called without calling show()");
+ }
+ }
+
private void show() {
if (bubble == null) {
bubble = startNewBubble();
@@ -134,12 +142,14 @@
@Override
public void onDisconnect(DialerCall call) {
- if (bubble != null && bubble.isVisible()) {
+ boolean hasAnotherCall = CallList.getInstance().getActiveOrBackgroundCall() != null;
+ if (bubble != null
+ && bubble.isVisible()
+ && (!TelecomUtil.isInCall(context) || hasAnotherCall)) {
bubble.showText(context.getText(R.string.incall_call_ended));
}
-
- if (!TelecomUtil.isInCall(context)) {
- hide();
+ if (!hasAnotherCall) {
+ hideAndReset();
}
}
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 53017a1..07f179e 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -60,15 +60,15 @@
import android.text.style.ForegroundColorSpan;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.ContactsUtils.UserType;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType;
import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.common.util.BitmapUtil;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.contactphoto.BitmapUtil;
import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.enrichedcall.Session;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
import com.android.dialer.multimedia.MultimediaData;
import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.oem.MotorolaUtils;
@@ -155,10 +155,6 @@
private static int getWorkStringFromPersonalString(int resId) {
if (resId == R.string.notification_ongoing_call) {
return R.string.notification_ongoing_work_call;
- } else if (resId == R.string.notification_ongoing_call_wifi) {
- return R.string.notification_ongoing_work_call_wifi;
- } else if (resId == R.string.notification_incoming_call_wifi) {
- return R.string.notification_incoming_work_call_wifi;
} else if (resId == R.string.notification_incoming_call) {
return R.string.notification_incoming_work_call;
} else {
@@ -696,8 +692,9 @@
}
int resId = R.string.notification_ongoing_call;
+ String wifiBrand = mContext.getString(R.string.notification_call_wifi_brand);
if (call.hasProperty(Details.PROPERTY_WIFI)) {
- resId = R.string.notification_ongoing_call_wifi;
+ resId = R.string.notification_ongoing_call_wifi_template;
}
if (isIncomingOrWaiting) {
@@ -706,7 +703,8 @@
} else if (shouldShowEnrichedCallNotification(call.getEnrichedCallSession())) {
resId = getECIncomingCallText(call.getEnrichedCallSession());
} else if (call.hasProperty(Details.PROPERTY_WIFI)) {
- resId = R.string.notification_incoming_call_wifi;
+ resId = R.string.notification_incoming_call_wifi_template;
+
} else {
resId = R.string.notification_incoming_call;
}
@@ -723,6 +721,13 @@
boolean isWorkCall = call.hasProperty(PROPERTY_ENTERPRISE_CALL);
if (userType == ContactsUtils.USER_TYPE_WORK || isWorkCall) {
resId = getWorkStringFromPersonalString(resId);
+ wifiBrand = mContext.getString(R.string.notification_call_wifi_work_brand);
+ }
+
+ if (resId == R.string.notification_incoming_call_wifi_template
+ || resId == R.string.notification_ongoing_call_wifi_template) {
+ // TODO(b/64525903): Potentially apply this template logic everywhere.
+ return mContext.getString(resId, wifiBrand);
}
return mContext.getString(resId);
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 5b4178d..89cddb9 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -762,7 +762,7 @@
/**
* Adjusts the current video mode by setting up the preview and display surfaces as necessary.
* Expected to be called whenever the video state associated with a call changes (e.g. a user
- * turns their camera on or off) to ensure the correct surfaces are shown/hidden. TODO: Need
+ * turns their camera on or off) to ensure the correct surfaces are shown/hidden. TODO(vt): Need
* to adjust size and orientation of preview surface here.
*/
private void adjustVideoMode(DialerCall call) {
@@ -844,7 +844,7 @@
if (!hasCameraPermission) {
videoCall.setCamera(null);
mPreviewSurfaceState = PreviewSurfaceState.NONE;
- // TODO: Inform remote party that the video is off. This is similar to b/30256571.
+ // TODO(wangqi): Inform remote party that the video is off. This is similar to b/30256571.
} else if (isCameraRequired) {
InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager();
videoCall.setCamera(cameraManager.getActiveCameraId());
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index b5dd117..db6d43d 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -954,7 +954,7 @@
private void showMessageMenu() {
LogUtil.i("AnswerFragment.showMessageMenu", "Show sms menu.");
- if (getChildFragmentManager().isDestroyed()) {
+ if (getContext() == null || isDetached() || getChildFragmentManager().isDestroyed()) {
return;
}
diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHint.java b/java/com/android/incallui/answer/impl/hint/AnswerHint.java
index dd3b822..1e78f50 100644
--- a/java/com/android/incallui/answer/impl/hint/AnswerHint.java
+++ b/java/com/android/incallui/answer/impl/hint/AnswerHint.java
@@ -27,7 +27,7 @@
/**
* Inflates the hint's layout into the container.
*
- * <p>TODO: if the hint becomes more dependent on other UI elements of the AnswerFragment,
+ * <p>TODO(twyen): if the hint becomes more dependent on other UI elements of the AnswerFragment,
* should put put and hintText into another data structure.
*/
void onCreateView(LayoutInflater inflater, ViewGroup container, View puck, TextView hintText);
diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
index 204c4e1..871d80c 100644
--- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
+++ b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
@@ -24,7 +24,6 @@
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.widget.Toast;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression.Type;
@@ -59,7 +58,9 @@
@Override
public void onReceive(Context context, Intent intent) {
String host = intent.getData().getHost();
- Assert.checkState(!TextUtils.isEmpty(host));
+ if (TextUtils.isEmpty(host)) {
+ return;
+ }
String secretCode =
ConfigProviderBindings.get(context).getString(CONFIG_PAW_SECRET_CODE, "729");
if (secretCode == null) {
diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
index 536a470..16fad8b 100644
--- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
+++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
@@ -80,7 +80,7 @@
.getBoolean(CONFIG_ANSWER_PSEUDO_PROXIMITY_WAKE_LOCK_ENABLED, true)) {
answerProximityWakeLock = new PseudoProximityWakeLock(context, pseudoScreenState);
} else {
- // TODO: choose a wake lock implementation base on framework/device.
+ // TODO(twyen): choose a wake lock implementation base on framework/device.
// These bugs requires the PseudoProximityWakeLock workaround:
// b/30439151 Proximity sensor not working on M
// b/31499931 fautly touch input when screen is off on marlin/sailfish
diff --git a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
index eedcbe5..5a22b93 100644
--- a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
+++ b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
@@ -146,7 +146,7 @@
float maxTextSize = TypedValue.applyDimension(unit, size, displayMetrics);
if (this.maxTextSize != maxTextSize) {
this.maxTextSize = maxTextSize;
- // TODO: It's not actually necessary to clear the whole cache here. To optimize cache
+ // TODO(tobyj): It's not actually necessary to clear the whole cache here. To optimize cache
// deletion we'd have to delete all entries in the cache with a value equal or larger than
// MIN(old_max_size, new_max_size) when changing maxTextSize; and all entries with a value
// equal or smaller than MAX(old_min_size, new_min_size) when changing minTextSize.
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 269fcd6..d932c24 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -114,7 +114,7 @@
public void onCallAdded(
final Context context, final android.telecom.Call telecomCall, LatencyReport latencyReport) {
- Trace.beginSection("onCallAdded");
+ Trace.beginSection("CallList.onCallAdded");
final DialerCall call =
new DialerCall(context, this, telecomCall, latencyReport, true /* registerCallback */);
logSecondIncomingCall(context, call);
@@ -123,6 +123,7 @@
manager.registerCapabilitiesListener(call);
manager.registerStateChangedListener(call);
+ Trace.beginSection("checkSpam");
final DialerCallListenerImpl dialerCallListener = new DialerCallListenerImpl(call);
call.addListener(dialerCallListener);
LogUtil.d("CallList.onCallAdded", "callState=" + call.getState());
@@ -169,7 +170,9 @@
updateUserMarkedSpamStatus(call, context, number, dialerCallListener);
}
+ Trace.endSection();
+ Trace.beginSection("checkBlock");
FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler =
new FilteredNumberAsyncQueryHandler(context);
@@ -185,6 +188,7 @@
},
call.getNumber(),
GeoUtil.getCurrentCountryIso(context));
+ Trace.endSection();
if (call.getState() == DialerCall.State.INCOMING
|| call.getState() == DialerCall.State.CALL_WAITING) {
@@ -353,6 +357,7 @@
/** Called when a single call has changed. */
private void onIncoming(DialerCall call) {
+ Trace.beginSection("CallList.onIncoming");
if (updateCallInMap(call)) {
LogUtil.i("CallList.onIncoming", String.valueOf(call));
}
@@ -360,6 +365,7 @@
for (Listener listener : mListeners) {
listener.onIncomingCall(call);
}
+ Trace.endSection();
}
public void addListener(@NonNull Listener listener) {
@@ -570,6 +576,7 @@
*/
@VisibleForTesting
void onUpdateCall(DialerCall call) {
+ Trace.beginSection("CallList.onUpdateCall");
LogUtil.d("CallList.onUpdateCall", String.valueOf(call));
if (!mCallById.containsKey(call.getId()) && call.isExternalCall()) {
// When a regular call becomes external, it is removed from the call list, and there may be
@@ -582,6 +589,7 @@
if (updateCallInMap(call)) {
LogUtil.i("CallList.onUpdateCall", String.valueOf(call));
}
+ Trace.endSection();
}
/**
@@ -606,6 +614,7 @@
* @return false if no call previously existed and no call was added, otherwise true.
*/
private boolean updateCallInMap(DialerCall call) {
+ Trace.beginSection("CallList.updateCallInMap");
Objects.requireNonNull(call);
boolean updated = false;
@@ -635,6 +644,7 @@
updated = true;
}
+ Trace.endSection();
return updated;
}
@@ -764,7 +774,7 @@
@Override
public void onDialerCallUpdate() {
- Trace.beginSection("onUpdate");
+ Trace.beginSection("CallList.onDialerCallUpdate");
onUpdateCall(mCall);
notifyGenericListeners();
Trace.endSection();
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 88e0dbb..a954ee9 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -41,13 +41,13 @@
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import com.android.contacts.common.compat.CallCompat;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentParser;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
@@ -152,6 +152,7 @@
// Times when a second call is received but AnswerAndRelease button is not shown
// since it's not supported.
private int secondCallWithoutAnswerAndReleasedButtonTimes = 0;
+ private VideoTech videoTech;
public static String getNumberFromHandle(Uri handle) {
return handle == null ? "" : handle.getSchemeSpecificPart();
@@ -194,14 +195,15 @@
@Override
public void onDetailsChanged(Call call, Call.Details details) {
- LogUtil.v("TelecomCallCallback.onStateChanged", " call=" + call + " details=" + details);
+ LogUtil.v(
+ "TelecomCallCallback.onDetailsChanged", " call=" + call + " details=" + details);
update();
}
@Override
public void onCannedTextResponsesLoaded(Call call, List<String> cannedTextResponses) {
LogUtil.v(
- "TelecomCallCallback.onStateChanged",
+ "TelecomCallCallback.onCannedTextResponsesLoaded",
"call=" + call + " cannedTextResponses=" + cannedTextResponses);
for (CannedTextResponsesLoadedListener listener : mCannedTextResponsesLoadedListeners) {
listener.onCannedTextResponsesLoaded(DialerCall.this);
@@ -211,7 +213,7 @@
@Override
public void onPostDialWait(Call call, String remainingPostDialSequence) {
LogUtil.v(
- "TelecomCallCallback.onStateChanged",
+ "TelecomCallCallback.onPostDialWait",
"call=" + call + " remainingPostDialSequence=" + remainingPostDialSequence);
update();
}
@@ -219,20 +221,20 @@
@Override
public void onVideoCallChanged(Call call, VideoCall videoCall) {
LogUtil.v(
- "TelecomCallCallback.onStateChanged", "call=" + call + " videoCall=" + videoCall);
+ "TelecomCallCallback.onVideoCallChanged", "call=" + call + " videoCall=" + videoCall);
update();
}
@Override
public void onCallDestroyed(Call call) {
- LogUtil.v("TelecomCallCallback.onStateChanged", "call=" + call);
+ LogUtil.v("TelecomCallCallback.onCallDestroyed", "call=" + call);
unregisterCallback();
}
@Override
public void onConferenceableCallsChanged(Call call, List<Call> conferenceableCalls) {
LogUtil.v(
- "DialerCall.onConferenceableCallsChanged",
+ "TelecomCallCallback.onConferenceableCallsChanged",
"call %s, conferenceable calls: %d",
call,
conferenceableCalls.size());
@@ -242,7 +244,7 @@
@Override
public void onConnectionEvent(android.telecom.Call call, String event, Bundle extras) {
LogUtil.v(
- "DialerCall.onConnectionEvent",
+ "TelecomCallCallback.onConnectionEvent",
"Call: " + call + ", Event: " + event + ", Extras: " + extras);
switch (event) {
// The Previous attempt to Merge two calls together has failed in Telecom. We must
@@ -428,8 +430,10 @@
}
private void update() {
- Trace.beginSection("Update");
+ Trace.beginSection("DialerCall.update");
int oldState = getState();
+ // Clear any cache here that could potentially change on update.
+ videoTech = null;
// We want to potentially register a video call callback here.
updateFromTelecomCall();
if (oldState != getState() && getState() == DialerCall.State.DISCONNECTED) {
@@ -441,7 +445,7 @@
.unregisterCapabilitiesListener(this);
EnrichedCallComponent.get(mContext)
.getEnrichedCallManager()
- .unregisterCapabilitiesListener(this);
+ .unregisterStateChangedListener(this);
} else {
for (DialerCallListener listener : mListeners) {
listener.onDialerCallUpdate();
@@ -451,6 +455,7 @@
}
private void updateFromTelecomCall() {
+ Trace.beginSection("DialerCall.updateFromTelecomCall");
LogUtil.v("DialerCall.updateFromTelecomCall", mTelecomCall.toString());
mVideoTechManager.dispatchCallStateChanged(mTelecomCall.getState());
@@ -499,6 +504,7 @@
}
}
}
+ Trace.endSection();
}
/**
@@ -676,13 +682,23 @@
}
public void setState(int state) {
- mState = state;
- if (mState == State.INCOMING) {
+ if (state == State.INCOMING) {
mLogState.isIncoming = true;
- } else if (mState == State.DISCONNECTED) {
- mLogState.duration =
+ } else if (state == State.DISCONNECTED) {
+ long newDuration =
getConnectTimeMillis() == 0 ? 0 : System.currentTimeMillis() - getConnectTimeMillis();
+ if (mState != state) {
+ mLogState.duration = newDuration;
+ } else {
+ LogUtil.i(
+ "DialerCall.setState",
+ "ignoring state transition from DISCONNECTED to DISCONNECTED."
+ + " Duration would have changed from %s to %s",
+ mLogState.duration,
+ newDuration);
+ }
}
+ mState = state;
}
public int getNumberPresentation() {
@@ -989,6 +1005,13 @@
return mLogState.isIncoming;
}
+ public boolean isAssistedDialed() {
+ if (getIntentExtras() != null) {
+ return getIntentExtras().getBoolean(TelephonyManagerCompat.IS_ASSISTED_DIALED, false);
+ }
+ return false;
+ }
+
public LatencyReport getLatencyReport() {
return mLatencyReport;
}
@@ -1114,7 +1137,10 @@
}
public VideoTech getVideoTech() {
- return mVideoTechManager.getVideoTech();
+ if (videoTech == null) {
+ videoTech = mVideoTechManager.getVideoTech();
+ }
+ return videoTech;
}
public String getCallbackNumber() {
@@ -1247,6 +1273,11 @@
updateEnrichedCallSession();
}
+ @Override
+ public void onImpressionLoggingNeeded(DialerImpression.Type impressionType) {
+ Logger.get(mContext).logCallImpression(impressionType, getUniqueCallId(), getTimeAddedMs());
+ }
+
private void updateEnrichedCallSession() {
if (getNumber() == null) {
return;
@@ -1528,6 +1559,7 @@
if (tech.isAvailable(context)) {
// Remember the first VideoTech that becomes available and always use it
savedTech = tech;
+ savedTech.becomePrimary();
return savedTech;
}
}
diff --git a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
index 550c580..fda9404 100644
--- a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
+++ b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
@@ -19,6 +19,7 @@
package="com.android.incallui.calllocation.impl">
<application>
+
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
diff --git a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
index b093a1b..035f5cd 100644
--- a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
+++ b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
@@ -50,9 +50,9 @@
try {
URL mapUrl = new URL(LocationUrlBuilder.getStaticMapUrl(ui.getContext(), locations[0]));
+ TrafficStats.setThreadStatsTag(TrafficStatsTags.DOWNLOAD_LOCATION_MAP_TAG);
InputStream content = (InputStream) mapUrl.getContent();
- TrafficStats.setThreadStatsTag(TrafficStatsTags.DOWNLOAD_LOCATION_MAP_TAG);
return Drawable.createFromStream(content, STATIC_MAP_SRC_NAME);
} catch (Exception ex) {
LogUtil.e("DownloadMapImageTask.doInBackground", "Exception!!!", ex);
diff --git a/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java b/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
index a57bdf6..14a9c76 100644
--- a/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
+++ b/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
@@ -134,7 +134,7 @@
url += String.format(Locale.US, "(%s)", addressLine1.toString());
}
} else {
- // TODO: i18n
+ // TODO(mdooley): i18n
url +=
String.format(
Locale.US,
diff --git a/java/com/android/incallui/commontheme/res/values/styles.xml b/java/com/android/incallui/commontheme/res/values/styles.xml
index c0a745d..a979cc3 100644
--- a/java/com/android/incallui/commontheme/res/values/styles.xml
+++ b/java/com/android/incallui/commontheme/res/values/styles.xml
@@ -17,6 +17,11 @@
<resources>
+ <style name="Dialer.Incall.TextAppearance" parent="android:TextAppearance.Material">
+ <item name="android:textColor">?android:textColorSecondary</item>
+ <item name="android:textSize">18sp</item>
+ </style>
+
<style name="Dialer.Incall.TextAppearance.Large">
<item name="android:textColor">?android:textColorPrimary</item>
<item name="android:textSize">36sp</item>
@@ -28,11 +33,6 @@
<item name="android:textSize">12sp</item>
</style>
- <style name="Dialer.Incall.TextAppearance" parent="android:TextAppearance.Material">
- <item name="android:textColor">?android:textColorSecondary</item>
- <item name="android:textSize">18sp</item>
- </style>
-
<style name="BottomRowIcon">
<item name="android:layout_height">24dp</item>
<item name="android:layout_width">24dp</item>
diff --git a/java/com/android/incallui/contactgrid/BottomRow.java b/java/com/android/incallui/contactgrid/BottomRow.java
index 76e0289..6068cc0 100644
--- a/java/com/android/incallui/contactgrid/BottomRow.java
+++ b/java/com/android/incallui/contactgrid/BottomRow.java
@@ -49,6 +49,7 @@
public final boolean isForwardIconVisible;
public final boolean isSpamIconVisible;
public final boolean shouldPopulateAccessibilityEvent;
+ public final boolean isAssistedDialedVisisble;
public Info(
@Nullable CharSequence label,
@@ -58,7 +59,8 @@
boolean isHdIconVisible,
boolean isForwardIconVisible,
boolean isSpamIconVisible,
- boolean shouldPopulateAccessibilityEvent) {
+ boolean shouldPopulateAccessibilityEvent,
+ boolean isAssistedDialedVisisble) {
this.label = label;
this.isTimerVisible = isTimerVisible;
this.isWorkIconVisible = isWorkIconVisible;
@@ -67,6 +69,7 @@
this.isForwardIconVisible = isForwardIconVisible;
this.isSpamIconVisible = isSpamIconVisible;
this.shouldPopulateAccessibilityEvent = shouldPopulateAccessibilityEvent;
+ this.isAssistedDialedVisisble = isAssistedDialedVisisble;
}
}
@@ -81,6 +84,7 @@
boolean isHdAttemptingIconVisible = state.isHdAttempting;
boolean isSpamIconVisible = false;
boolean shouldPopulateAccessibilityEvent = true;
+ boolean isAssistedDialedVisisble = state.isAssistedDialed;
if (isIncoming(state) && primaryInfo.isSpam) {
label = context.getString(R.string.contact_grid_incoming_suspected_spam);
@@ -117,7 +121,8 @@
isHdIconVisible,
isForwardIconVisible,
isSpamIconVisible,
- shouldPopulateAccessibilityEvent);
+ shouldPopulateAccessibilityEvent,
+ isAssistedDialedVisisble);
}
private static CharSequence getLabelForPhoneNumber(PrimaryInfo primaryInfo) {
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index 708bfab..ddf16e3 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -30,9 +30,9 @@
import android.widget.TextView;
import android.widget.ViewAnimator;
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.util.DrawableConverter;
import com.android.incallui.incall.protocol.ContactPhotoType;
import com.android.incallui.incall.protocol.PrimaryCallState;
@@ -60,7 +60,7 @@
@Nullable private ImageView avatarImageView;
// Row 2: Mobile +1 (650) 253-0000
- // Row 2: [HD attempting icon]/[HD icon] 00:15
+ // Row 2: [HD attempting icon]/[HD icon] [Assisted Dialing Icon] 00:15
// Row 2: Call ended
// Row 2: Hanging up
// Row 2: [Alert sign] Suspected spam caller
@@ -68,6 +68,7 @@
private final ImageView workIconImageView;
private final ImageView hdIconImageView;
private final ImageView forwardIconImageView;
+ private final ImageView assistedDialingImageView;
private final TextView forwardedNumberView;
private final ImageView spamIconImageView;
private final ViewAnimator bottomTextSwitcher;
@@ -98,6 +99,7 @@
hdIconImageView = view.findViewById(R.id.contactgrid_hdIcon);
forwardIconImageView = view.findViewById(R.id.contactgrid_forwardIcon);
forwardedNumberView = view.findViewById(R.id.contactgrid_forwardNumber);
+ assistedDialingImageView = view.findViewById(R.id.contactgrid_assistedDialingIcon);
spamIconImageView = view.findViewById(R.id.contactgrid_spamIcon);
bottomTextSwitcher = view.findViewById(R.id.contactgrid_bottom_text_switcher);
bottomTextView = view.findViewById(R.id.contactgrid_bottom_text);
@@ -309,6 +311,8 @@
bottomTextView.setText(info.label);
bottomTextView.setAllCaps(info.isSpamIconVisible);
workIconImageView.setVisibility(info.isWorkIconVisible ? View.VISIBLE : View.GONE);
+ assistedDialingImageView.setVisibility(
+ info.isAssistedDialedVisisble ? View.VISIBLE : View.GONE);
if (hdIconImageView.getVisibility() == View.GONE) {
if (info.isHdAttemptingIconVisible) {
hdIconImageView.setVisibility(View.VISIBLE);
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 c74017e..8850dd8 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
@@ -1,4 +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
+ -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
@@ -17,6 +32,10 @@
android:src="@drawable/asd_hd_icon"
android:visibility="gone"/>
<ImageView
+ android:id="@+id/contactgrid_assistedDialingIcon"
+ style="@style/BottomRowIcon"
+ android:src="@drawable/quantum_ic_language_vd_theme_24"/>
+ <ImageView
android:id="@id/contactgrid_forwardIcon"
style="@style/BottomRowIcon"
android:src="@drawable/quantum_ic_forward_vd_theme_24"/>
diff --git a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml
index f4569de..a5ce1ca 100644
--- a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml
+++ b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml
@@ -34,7 +34,7 @@
<string name="contact_grid_incoming_wifi_video_request" msgid="4516902096577976768">"Bu foydalanuvchi Wi-Fi orqali video suhbatga o‘tishni so‘ramoqda:"</string>
<string name="contact_grid_incoming_voice_call" msgid="7165853925114955346">"Kimdan qo‘ng‘iroq:"</string>
<string name="contact_grid_incoming_work_call" msgid="837605505036615004">"Ish telefoniga kimdan qo‘ng‘iroq:"</string>
- <string name="contact_grid_incoming_via_template" msgid="7747391077955623969">"Kiruvchi chaqiruv (operator: <xliff:g id="PROVIDER_NAME">%s</xliff:g>)"</string>
+ <string name="contact_grid_incoming_via_template" msgid="7747391077955623969">"Kiruvchi qo‘ng‘iroq (operator: <xliff:g id="PROVIDER_NAME">%s</xliff:g>)"</string>
<string name="contact_grid_incoming_suspected_spam" msgid="285365265897630425">"Shubhali abonent"</string>
<string name="contact_grid_callback_number" msgid="1284649030313415807">"Teskari qo‘ng‘iroq uchun raqam: <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-af/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-af/strings.xml
deleted file mode 100644
index 5f07dfc..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-af/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktiveer"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video-oproepe is nie nou beskikbaar nie"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Probeer weer later bel of gaan voort met die oproep as \'n stemoproep."</string>
- <string name="voice_call" msgid="6748636104112578475">"Stemoproep"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-am/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-am/strings.xml
deleted file mode 100644
index 62a77e4..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-am/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"አንቃ"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"የቪዲዮ ጥሪ ለጊዜው አይገኝም"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"በኋላ እንደገና ለመደወል ይሞክሩ ወይም ጥሪውን እንደ የድምጽ ጥሪ ይቀጥሉ።"</string>
- <string name="voice_call" msgid="6748636104112578475">"የድምጽ ጥሪ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ar/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ar/strings.xml
deleted file mode 100644
index e29ee2f..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ar/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"تمكين"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"اتصال الفيديو غير متوفر حاليًا"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"حاول الاتصال مرة أخرى لاحقًا أو أكمل المكالمة كمكالمة صوتية."</string>
- <string name="voice_call" msgid="6748636104112578475">"مكالمة صوتية"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-az/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-az/strings.xml
deleted file mode 100644
index 5a72e4c..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-az/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktiv edin"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video zəng hazırda əlçatan deyil"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Daha sonra yenidən cəhd edin və ya audio zənglə davam edin."</string>
- <string name="voice_call" msgid="6748636104112578475">"Video zəng"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index e782e70..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogući"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video poziv trenutno nije dostupan"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Probajte ponovo da uputite poziv kasnije ili ga nastavite kao audio poziv."</string>
- <string name="voice_call" msgid="6748636104112578475">"Audio poziv"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-be/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-be/strings.xml
deleted file mode 100644
index d4cab26..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-be/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Уключыць"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Відэавыклікі зараз недаступныя"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Паспрабуйце зрабіць выклік пазней або працягніце выклік як галасавы."</string>
- <string name="voice_call" msgid="6748636104112578475">"Галасавы выклік"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-bg/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-bg/strings.xml
deleted file mode 100644
index e9211ab..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-bg/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Активиране"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"В момента не е възможно видеообаждане"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Опитайте да се обадите отново по-късно или продължете обаждането като гласово."</string>
- <string name="voice_call" msgid="6748636104112578475">"Гласово обаждане"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-bn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-bn/strings.xml
deleted file mode 100644
index dd0297c..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-bn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"সক্ষম করুন"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ভিডিও কলিং বর্তমানে উপলব্ধ নয়"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"পরে আবার কল করার চেষ্টা করুন বা কলটিকে একটি ভয়েস কল হিসাবে চালিয়ে যান৷"</string>
- <string name="voice_call" msgid="6748636104112578475">"ভয়েস কল"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-bs/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-bs/strings.xml
deleted file mode 100644
index 309427a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-bs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogući"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videopozivanje trenutno nije dostupno"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Pozovite ponovo kasnije ili nastavite poziv kao glasovni poziv."</string>
- <string name="voice_call" msgid="6748636104112578475">"Glasovni poziv"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ca/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ca/strings.xml
deleted file mode 100644
index dca9551..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ca/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activa"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Les videotrucades no estan disponibles actualment"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Torna-ho a provar més tard o continua com a trucada de veu."</string>
- <string name="voice_call" msgid="6748636104112578475">"Trucada de veu"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-cs/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-cs/strings.xml
deleted file mode 100644
index 502434a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-cs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Zapnout"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videohovory momentálně nejsou dostupné"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Zkuste zavolat později nebo v hovoru pokračujte bez videa."</string>
- <string name="voice_call" msgid="6748636104112578475">"Hlasový hovor"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-da/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-da/strings.xml
deleted file mode 100644
index 817226e..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-da/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivér"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Det er ikke muligt at foretage videoopkald i øjeblikket"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prøv at ringe igen senere, eller fortsæt med et taleopkald."</string>
- <string name="voice_call" msgid="6748636104112578475">"Taleopkald"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-de/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-de/strings.xml
deleted file mode 100644
index 8ebc527..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-de/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivieren"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videoanrufe sind momentan nicht verfügbar"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Versuche es später noch einmal oder setze den Anruf als Sprachanruf fort."</string>
- <string name="voice_call" msgid="6748636104112578475">"Sprachanruf"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-el/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-el/strings.xml
deleted file mode 100644
index 1e182be..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-el/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ενεργοποίηση"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Η βιντεοκλήσεις δεν είναι προς το παρόν διαθέσιμες"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Δοκιμάστε να καλέσετε ξανά αργότερα ή συνεχίστε την κλήση ως φωνητική κλήση."</string>
- <string name="voice_call" msgid="6748636104112578475">"Φωνητική κλήση"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-en-rAU/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-en-rAU/strings.xml
deleted file mode 100644
index 4665e11..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Enable"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video calling is currently not available"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Try calling again later or continue the call as a voice call."</string>
- <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-en-rGB/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-en-rGB/strings.xml
deleted file mode 100644
index 4665e11..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Enable"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video calling is currently not available"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Try calling again later or continue the call as a voice call."</string>
- <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-en-rIN/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-en-rIN/strings.xml
deleted file mode 100644
index 4665e11..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Enable"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video calling is currently not available"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Try calling again later or continue the call as a voice call."</string>
- <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-es-rUS/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-es-rUS/strings.xml
deleted file mode 100644
index 98afb12..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Habilitar"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"La videollamada no está disponible en este momento"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prueba llamando de nuevo más tarde o continúa la llamada como una llamada de voz."</string>
- <string name="voice_call" msgid="6748636104112578475">"Llamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-es/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-es/strings.xml
deleted file mode 100644
index 580ac8b..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-es/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Habilitar"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"No se pueden hacer videollamadas en estos momentos"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prueba a llamar de nuevo más tarde o haz una llamada de voz."</string>
- <string name="voice_call" msgid="6748636104112578475">"Llamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-et/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-et/strings.xml
deleted file mode 100644
index dae212d..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-et/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Luba"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Vidokõned pole praegu saadaval"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Proovige hiljem uuesti helistada või jätkake helistamist häälkõnena."</string>
- <string name="voice_call" msgid="6748636104112578475">"Häälkõne"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-eu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-eu/strings.xml
deleted file mode 100644
index c207d39..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-eu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Gaitu"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Une honetan, bideo-deiak ez daude erabilgarri"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Saiatu geroago berriro deitzen, edo aldatu ahots-deira."</string>
- <string name="voice_call" msgid="6748636104112578475">"Ahots-deia"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fa/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fa/strings.xml
deleted file mode 100644
index 73c2a86..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"فعال کردن"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"تماس ویدیویی درحال حاضر امکانپذیر نیست"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"بعداً دوباره تماس بگیرید یا با تماس صوتی ادامه دهید."</string>
- <string name="voice_call" msgid="6748636104112578475">"تماس صوتی"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fi/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fi/strings.xml
deleted file mode 100644
index 93d4cc7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ota käyttöön"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videopuhelut ei ole tällä hetkellä saatavilla"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Yritä soittaa myöhemmin uudelleen tai jatka puhelua äänipuheluna."</string>
- <string name="voice_call" msgid="6748636104112578475">"Puhelu"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fr-rCA/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fr-rCA/strings.xml
deleted file mode 100644
index e2bd4b1..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activer"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Les appels vidéo ne sont pas disponibles pour le moment"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Essayez de rappeler plus tard ou passez à un appel vocal."</string>
- <string name="voice_call" msgid="6748636104112578475">"Appel vocal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fr/strings.xml
deleted file mode 100644
index f9dfdfa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activer"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"La fonction d\'appel vidéo est momentanément indisponible"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Réessayez plus tard ou reprenez l\'appel en mode vocal."</string>
- <string name="voice_call" msgid="6748636104112578475">"Appel vocal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-gl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-gl/strings.xml
deleted file mode 100644
index 3313c44..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-gl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activar"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"As videochamadas non están dispoñibles actualmente"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Proba a chamar de novo máis tarde ou continuar a chamada como unha chamada de voz."</string>
- <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-gu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-gu/strings.xml
deleted file mode 100644
index 28825da..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-gu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"સક્ષમ કરો"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"વિડિઓ કૉલિંગ હાલમાં ઉપલબ્ધ નથી"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"પછીથી ફરી કૉલ કરવાનો પ્રયાસ કરો અથવા કૉલને વૉઇસ કૉલ તરીકે ચાલુ રાખો."</string>
- <string name="voice_call" msgid="6748636104112578475">"વૉઇસ કૉલ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hi/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hi/strings.xml
deleted file mode 100644
index 8201539..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"सक्षम करें"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"इस समय वीडियो कॉलिंग की सुविधा उपलब्ध नहीं है"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"बाद में दोबारा कॉल करने की कोशिश करें या कॉल को वॉइस कॉल के रूप में जारी रखें."</string>
- <string name="voice_call" msgid="6748636104112578475">"वॉइस कॉल"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hr/strings.xml
deleted file mode 100644
index c1b56b7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogući"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videopozivanje trenutačno nije dostupno"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Pokušajte ponovno nazvati kasnije ili nastavite poziv kao glasovni."</string>
- <string name="voice_call" msgid="6748636104112578475">"Glasovni poziv"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hu/strings.xml
deleted file mode 100644
index e1f9bd9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Engedélyezés"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"A videohívás jelenleg nem érhető el"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Indítson hívást később, vagy folytassa hanghívásként."</string>
- <string name="voice_call" msgid="6748636104112578475">"Hanghívás"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hy/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hy/strings.xml
deleted file mode 100644
index d2c10be..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hy/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Միացնել"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Տեսազանգը ներկայումս հասանելի չէ"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Ավելի ուշ նորից փորձեք զանգել կամ շարունակեք զանգն առանց տեսապատկերի:"</string>
- <string name="voice_call" msgid="6748636104112578475">"Զանգ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-in/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-in/strings.xml
deleted file mode 100644
index 8b895bc..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-in/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktifkan"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video call saat ini tidak tersedia"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Coba lagi nanti atau lanjutkan sebagai panggilan suara."</string>
- <string name="voice_call" msgid="6748636104112578475">"Panggilan suara"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-is/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-is/strings.xml
deleted file mode 100644
index b16b431..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-is/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Kveikja"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Myndsímtal er ekki í boði sem stendur"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prófaðu að hringja aftur seinna eða hringdu hefðbundið símtal í staðinn"</string>
- <string name="voice_call" msgid="6748636104112578475">"Símtal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-it/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-it/strings.xml
deleted file mode 100644
index 1b862f7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-it/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Abilita"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Le videochiamate non sono disponibili in questo momento"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prova a chiamare di nuovo più tardi o continua la chiamata come chiamata vocale."</string>
- <string name="voice_call" msgid="6748636104112578475">"Chiamata vocale"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-iw/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-iw/strings.xml
deleted file mode 100644
index 91af8a9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-iw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"הפעלה"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"לא ניתן לשוחח בשיחת וידאו כרגע"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"מומלץ לנסות להתקשר מאוחר יותר או להמשיך לשוחח בשיחה קולית."</string>
- <string name="voice_call" msgid="6748636104112578475">"שיחה קולית"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ja/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ja/strings.xml
deleted file mode 100644
index 8e196f2..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ja/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"有効にする"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ビデオハングアウトは現在利用できません"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"しばらくしてからもう一度試すか、音声通話で続けてください。"</string>
- <string name="voice_call" msgid="6748636104112578475">"音声通話"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ka/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ka/strings.xml
deleted file mode 100644
index 8045979..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ka/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ჩართვა"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ვიდეოზარი ამჟამად მიუწვდომელია"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"სცადეთ, დარეკოთ მოგვიანებით ან გააგრძელოთ ხმოვანი ზარით."</string>
- <string name="voice_call" msgid="6748636104112578475">"ხმოვანი ზარი"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-kk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-kk/strings.xml
deleted file mode 100644
index 47294f9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-kk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Қосу"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Бейне қоңырау қазір қолжетімді емес"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Кейінірек қайталап көріңіз немесе дасуыстық қоңырау ретінде жалғастырыңыз."</string>
- <string name="voice_call" msgid="6748636104112578475">"Дауыстық қоңырау"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-km/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-km/strings.xml
deleted file mode 100644
index 6e1c0fe..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-km/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"បើក"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ការហៅវីដេអូមិនអាចធ្វើបានទេនៅពេលនេះ"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"សាកល្បងហៅម្ដងទៀតនៅពេលក្រោយ ឬបន្តការហៅជាសំឡេង។"</string>
- <string name="voice_call" msgid="6748636104112578475">"ការហៅជាសំឡេង"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-kn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-kn/strings.xml
deleted file mode 100644
index 384e92b..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-kn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ವೀಡಿಯೊ ಕರೆ ಪ್ರಸ್ತುತವಾಗಿ ಲಭ್ಯವಿಲ್ಲ"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"ನಂತರ ಮತ್ತೆ ಕರೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಧ್ವನಿ ಕರೆಯಂತೆ ಕರೆಯನ್ನು ಮುಂದುವರಿಸಿ."</string>
- <string name="voice_call" msgid="6748636104112578475">"ಧ್ವನಿ ಕರೆ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ko/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ko/strings.xml
deleted file mode 100644
index 30e1565..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ko/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"사용"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"현재 화상 통화를 사용할 수 없음"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"나중에 다시 전화하거나, 계속하려면 음성 통화를 이용하세요."</string>
- <string name="voice_call" msgid="6748636104112578475">"음성 통화"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ky/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ky/strings.xml
deleted file mode 100644
index 1553169..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ky/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Иштетүү"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Видео режиминде чалуу учурда жеткиликсиз"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Кийинчерээк кайра чалыңыз же үн режиминде чалып көрүңүз."</string>
- <string name="voice_call" msgid="6748636104112578475">"Үн чалуусу"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-lo/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-lo/strings.xml
deleted file mode 100644
index c3f8b96..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-lo/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ເປິດນຳໃຊ້"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ຕອນນີ້ບໍ່ສາມາດໃຊ້ການໂທວິດີໂອໄດ້"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"ກະລຸນາລອງໂທໃໝ່ໃນພາຍຫຼັງ ຫຼື ສືບຕໍ່ສາຍເປັນການໂທແບບສຽງ."</string>
- <string name="voice_call" msgid="6748636104112578475">"ການໂທດ້ວຍສຽງ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-lt/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-lt/strings.xml
deleted file mode 100644
index 38d6ef8..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-lt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Įgalinti"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Vaizdo skambučių funkcija šiuo metu nepasiekiama"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Vėliau pabandykite skambinti dar kartą arba tęskite skambutį kaip balso skambutį."</string>
- <string name="voice_call" msgid="6748636104112578475">"Balso skambutis"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-lv/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-lv/strings.xml
deleted file mode 100644
index 279f0f5..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-lv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Iespējot"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videozvani pašlaik nav pieejami"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Vēlāk mēģiniet zvanīt vēlreiz vai turpiniet sarunu kā balss zvanu."</string>
- <string name="voice_call" msgid="6748636104112578475">"Balss zvans"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-mk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-mk/strings.xml
deleted file mode 100644
index 3c061df..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-mk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Овозможи"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Видеоповикувањето е недостапно во моментов."</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Обидете се да повикате повторно подоцна или продолжете со гласовен повик."</string>
- <string name="voice_call" msgid="6748636104112578475">"Гласовен повик"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ml/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ml/strings.xml
deleted file mode 100644
index 719d6e8..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ml/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"പ്രവർത്തനക്ഷമമാക്കുക"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"വീഡിയോ കോളിംഗ് നിലവിൽ ലഭ്യമല്ല"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"പിന്നീട് വീണ്ടും വിളിക്കുന്നതോ വോയ്സ് കോളായി കോൾ തുടരുന്നതോ പരീക്ഷിക്കൂ."</string>
- <string name="voice_call" msgid="6748636104112578475">"വോയ്സ് കോൾ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-mn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-mn/strings.xml
deleted file mode 100644
index fae6708..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-mn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Идэвхжүүлэх"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Одоогоор видео дуудлага хийх боломжгүй"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Дараа дахин залгаж үзэх буюу энгийн дуудлагаар үргэлжлүүлнэ үү."</string>
- <string name="voice_call" msgid="6748636104112578475">"Дуудлага"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-mr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-mr/strings.xml
deleted file mode 100644
index 8549785..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-mr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"चालू करा"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"व्हिडिओ कॉलिंग सध्या उपलब्ध नाही"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"नंतर पुन्हा कॉल करून पहा किंवा कॉल व्हॉइस कॉल म्हणून सुरू ठेवा."</string>
- <string name="voice_call" msgid="6748636104112578475">"व्हॉईस कॉल"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ms/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ms/strings.xml
deleted file mode 100644
index efe8799..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ms/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Dayakan"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Panggilan video tidak tersedia pada masa ini"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Cuba hubungi semula kemudian atau teruskan panggilan sebagai panggilan suara."</string>
- <string name="voice_call" msgid="6748636104112578475">"Panggilan suara"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-my/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-my/strings.xml
deleted file mode 100644
index 04a4f3a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-my/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ဖွင့်ရန်"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ဗီဒီယိုခေါ်ဆိုမှုကို လက်ရှိတွင် မရရှိနိုင်ပါ"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"နောက်မှ ထပ်မံခေါ်ဆိုကြည့်ပါ (သို့) အသံခေါ်ဆိုမှု ဆက်လုပ်ကြည့်ပါ။"</string>
- <string name="voice_call" msgid="6748636104112578475">"အသံခေါ်ဆိုမှု"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-nb/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-nb/strings.xml
deleted file mode 100644
index 14a41fa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-nb/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Slå på"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videoanrop er ikke tilgjengelige akkurat nå"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prøv å ringe på nytt senere eller fortsett anropet som taleanrop."</string>
- <string name="voice_call" msgid="6748636104112578475">"Taleanrop"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ne/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ne/strings.xml
deleted file mode 100644
index 9cc63fd..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ne/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"सक्षम पार्नुहोस्"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"भिडियो कल हाल उपलब्ध छैन"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"पछि फेरि कल गर्ने प्रयास गर्नुहोस् वा भ्वाइस कलका रूपमा कल जारी राख्नुहोस्।"</string>
- <string name="voice_call" msgid="6748636104112578475">"भ्वाइस कल"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-nl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-nl/strings.xml
deleted file mode 100644
index c3380db..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-nl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Inschakelen"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videobellen is momenteel niet beschikbaar"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Probeer later opnieuw te bellen of start een spraakoproep."</string>
- <string name="voice_call" msgid="6748636104112578475">"Spraakoproep"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-no/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-no/strings.xml
deleted file mode 100644
index 14a41fa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-no/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Slå på"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videoanrop er ikke tilgjengelige akkurat nå"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Prøv å ringe på nytt senere eller fortsett anropet som taleanrop."</string>
- <string name="voice_call" msgid="6748636104112578475">"Taleanrop"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pa/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pa/strings.xml
deleted file mode 100644
index 722183b..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ਯੋਗ ਬਣਾਓ"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ਵੀਡੀਓ ਕਾਲਿੰਗ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕਾਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਕਾਲ ਨੂੰ ਵੌਇਸ ਕਾਲ ਵਜੋਂ ਜਾਰੀ ਰੱਖੋ।"</string>
- <string name="voice_call" msgid="6748636104112578475">"ਵੌਇਸ ਕਾਲ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pl/strings.xml
deleted file mode 100644
index b8307e9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Włącz"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Rozmowy wideo nie są obecnie dostępne"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Spróbuj zadzwonić później, aby kontynuować rozmowę w trybie wideo."</string>
- <string name="voice_call" msgid="6748636104112578475">"Połączenie głosowe"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pt-rBR/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pt-rBR/strings.xml
deleted file mode 100644
index ce249f6..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ativar"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"O recurso de videochamada não está disponível no momento"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Ligue novamente mais tarde ou continue esta chamada sem o vídeo."</string>
- <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pt-rPT/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pt-rPT/strings.xml
deleted file mode 100644
index fb6980a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ativar"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Neste momento, não é possível efetuar videochamadas"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Experimente efetuar a videochamada mais tarde ou continue a chamada como uma chamada de voz."</string>
- <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pt/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pt/strings.xml
deleted file mode 100644
index ce249f6..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ativar"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"O recurso de videochamada não está disponível no momento"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Ligue novamente mais tarde ou continue esta chamada sem o vídeo."</string>
- <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ro/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ro/strings.xml
deleted file mode 100644
index 7836192..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ro/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activați"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Apelarea video este indisponibilă momentan"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Încercați să apelați din nou mai târziu sau continuați ca apel vocal."</string>
- <string name="voice_call" msgid="6748636104112578475">"Apel vocal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ru/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ru/strings.xml
deleted file mode 100644
index ffc3f61..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ru/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Включить"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"В настоящее время видеовызовы недоступны"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Повторите попытку позже или продолжайте выполнять вызов как голосовой."</string>
- <string name="voice_call" msgid="6748636104112578475">"Голосовой вызов"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-si/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-si/strings.xml
deleted file mode 100644
index 6948877..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-si/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"සබල කරන්න"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"වීඩියෝ ඇමතීම දැනට ලබා ගැනීමට නොහැකිය"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"පසුව නැවත ඇමතීම උත්සාහ කරන්න නැතහොත් ඇමතුම හඬ ඇමතුමක් ලෙස දිගටම කරගෙන යන්න."</string>
- <string name="voice_call" msgid="6748636104112578475">"හඬ ඇමතීම"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sk/strings.xml
deleted file mode 100644
index 8f4b059..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Povoliť"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videohovor momentálne nie je k dispozícii"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Skúste zavolať znova neskôr alebo pokračujte v hovore bez videa."</string>
- <string name="voice_call" msgid="6748636104112578475">"Hlasový hovor"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sl/strings.xml
deleted file mode 100644
index 6afd14c..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogoči"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Videoklicanje trenutno ni na voljo"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Poskusite klicati znova pozneje ali pa klic nadaljujte kot glasovni klic."</string>
- <string name="voice_call" msgid="6748636104112578475">"Glasovni klic"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sq/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sq/strings.xml
deleted file mode 100644
index cccc83f..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sq/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivizo"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Telefonatat me video nuk ofrohen aktualisht"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Provo të telefonosh përsëri më vonë ose vazhdoje telefonatën si një telefonatë zanore."</string>
- <string name="voice_call" msgid="6748636104112578475">"Telefonatë me video"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sr/strings.xml
deleted file mode 100644
index 620c39e..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Омогући"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Видео позив тренутно није доступан"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Пробајте поново да упутите позив касније или га наставите као аудио позив."</string>
- <string name="voice_call" msgid="6748636104112578475">"Аудио позив"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sv/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sv/strings.xml
deleted file mode 100644
index e6be384..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivera"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Det går inte att ringa videosamtal just nu"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Försök ringa upp igen senare eller fortsätt samtalet som ett röstsamtal"</string>
- <string name="voice_call" msgid="6748636104112578475">"Röstsamtal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sw/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sw/strings.xml
deleted file mode 100644
index 6d6a6a0..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Washa"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Kipengele cha kupiga simu za video hakipatikani kwa sasa"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Jaribu kupiga simu ya video tena hapo baadaye au uendelee na mazungumzo kama simu ya sauti."</string>
- <string name="voice_call" msgid="6748636104112578475">"Simu ya sauti"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ta/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ta/strings.xml
deleted file mode 100644
index 626d0d6..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ta/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"இயக்கு"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"தற்போது வீடியோவில் அழைக்க முடியாது"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"பிறகு அழைக்க முயற்சிக்கவும் அல்லது குரல் அழைப்பைச் செய்யவும்."</string>
- <string name="voice_call" msgid="6748636104112578475">"குரல் அழைப்பு"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-te/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-te/strings.xml
deleted file mode 100644
index 737d677..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-te/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ప్రారంభించు"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ప్రస్తుతం వీడియో కాలింగ్ అందుబాటులో లేదు"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"మళ్లీ కాల్ చేసి ప్రయత్నించండి లేదా కాల్ను వాయిస్ కాల్ వలె కొనసాగించండి."</string>
- <string name="voice_call" msgid="6748636104112578475">"వాయిస్ కాల్"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-th/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-th/strings.xml
deleted file mode 100644
index a6fa2b1..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-th/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"เปิดใช้"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"วิดีโอคอลไม่พร้อมใช้งานในตอนนี้"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"ลองโทรอีกครั้งในภายหลัง หรือโทรด้วยเสียงต่อไป"</string>
- <string name="voice_call" msgid="6748636104112578475">"การโทรด้วยเสียง"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-tl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-tl/strings.xml
deleted file mode 100644
index 17f29af..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-tl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"I-enable"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Kasalukuyang hindi available ang pakikipag-video call"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Subukang tumawag muli sa ibang pagkakataon o ipagpatuloy ang tawag bilang isang voice call."</string>
- <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-tr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-tr/strings.xml
deleted file mode 100644
index a0ba4fa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-tr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Etkinleştir"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Görüntülü görüşme şu anda kullanılamıyor"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Görüntülü görüşme yapmayı daha sonra tekrar deneyin veya görüşmeye sesli arama olarak devam edin."</string>
- <string name="voice_call" msgid="6748636104112578475">"Sesli arama"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-uk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-uk/strings.xml
deleted file mode 100644
index 36a3c45..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-uk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Увімкнути"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Наразі не можна здійснювати відеодзвінки"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Спробуйте пізніше або перейдіть у режим голосового дзвінка."</string>
- <string name="voice_call" msgid="6748636104112578475">"Голосовий дзвінок"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ur/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ur/strings.xml
deleted file mode 100644
index 4fa8b50..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ur/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"فعال کریں"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"ویڈیو کالنگ فی الحال دستیاب نہیں ہے"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"بعد میں دوبارہ کال کرنے کی کوشش کریں یا کال کو بطور صوتی کال جاری رکھیں۔"</string>
- <string name="voice_call" msgid="6748636104112578475">"صوتی کال"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-uz/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-uz/strings.xml
deleted file mode 100644
index 229e6e7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-uz/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Yoqish"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Video muloqot funksiyasidan hozirgi vaqtda foydalanib bo‘lmaydi."</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Keyinroq qayta urinib ko‘ring yoki ovozli muloqot rejimida o‘ting."</string>
- <string name="voice_call" msgid="6748636104112578475">"Ovozli muloqot"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-vi/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-vi/strings.xml
deleted file mode 100644
index 3e49451..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-vi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Bật"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Hiện không sử dụng được tính năng gọi điện video"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Hãy thử gọi lại sau hoặc tiếp tục gọi dưới dạng cuộc gọi thoại."</string>
- <string name="voice_call" msgid="6748636104112578475">"Cuộc gọi thoại"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zh-rCN/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 3f8cd6d..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"启用"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"当前无法使用视频通话功能"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"请稍后再试,或者改用语音通话。"</string>
- <string name="voice_call" msgid="6748636104112578475">"语音通话"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zh-rHK/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 605c847..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"啟用"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"視像通話目前無法使用"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"請稍後再撥,或是以語音通話的形式繼續通話。"</string>
- <string name="voice_call" msgid="6748636104112578475">"語音通話"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zh-rTW/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 5201a34..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"啟用"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"目前無法使用視訊通話功能"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"請稍後再嘗試撥打電話,或以語音方式繼續進行通話。"</string>
- <string name="voice_call" msgid="6748636104112578475">"語音通話"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zu/strings.xml
deleted file mode 100644
index 1c0dd48..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
- <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Nika amandla"</string>
- <string name="video_call_not_available_title" msgid="987490011944013201">"Ukushaya kwevidiyo manje akutholakali"</string>
- <string name="video_call_not_available_message" msgid="2284146863894603221">"Zama ukushaya emuva kwesikhathi noma qhuba ikholi njengekholi yezwi."</string>
- <string name="voice_call" msgid="6748636104112578475">"Ikholi yezwi"</string>
-</resources>
diff --git a/java/com/android/incallui/incall/impl/ButtonChooser.java b/java/com/android/incallui/incall/impl/ButtonChooser.java
index 55b82f0..095a8be 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooser.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooser.java
@@ -18,6 +18,7 @@
import android.support.annotation.NonNull;
import com.android.dialer.common.Assert;
+import com.android.incallui.incall.impl.MappedButtonConfig.MappingInfo;
import com.android.incallui.incall.protocol.InCallButtonIds;
import java.util.ArrayList;
import java.util.Collections;
@@ -103,12 +104,29 @@
if (placedButtons.size() >= numUiButtons) {
return;
}
+
// If the conflict button is allowed but disabled, don't place it since it probably will
// move when it's enabled.
if (!allowedButtons.contains(conflict) || disabledButtons.contains(conflict)) {
continue;
}
+
+ if (isMutuallyExclusiveButtonAvailable(
+ config.lookupMappingInfo(conflict).getMutuallyExclusiveButton(), allowedButtons)) {
+ continue;
+ }
placedButtons.add(conflict);
}
}
+
+ private boolean isMutuallyExclusiveButtonAvailable(
+ int mutuallyExclusiveButton, @NonNull Set<Integer> allowedButtons) {
+ if (mutuallyExclusiveButton == MappingInfo.NO_MUTUALLY_EXCLUSIVE_BUTTON_SET) {
+ return false;
+ }
+ if (allowedButtons.contains(mutuallyExclusiveButton)) {
+ return true;
+ }
+ return false;
+ }
}
diff --git a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
index 99364e2..0f4a95d 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
@@ -74,6 +74,12 @@
mapping.put(
InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, MappingInfo.builder(4).setSlotOrder(10).build());
mapping.put(InCallButtonIds.BUTTON_SWAP, MappingInfo.builder(5).setSlotOrder(0).build());
+ mapping.put(
+ InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY,
+ MappingInfo.builder(5)
+ .setSlotOrder(Integer.MAX_VALUE)
+ .setMutuallyExclusiveButton(InCallButtonIds.BUTTON_SWAP)
+ .build());
return new ButtonChooser(new MappedButtonConfig(mapping));
}
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index 54d01e7..7e39ceb 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -44,6 +44,7 @@
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.multimedia.MultimediaData;
+import com.android.dialer.strictmode.DialerStrictMode;
import com.android.dialer.widget.LockableViewPager;
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
@@ -60,6 +61,7 @@
import com.android.incallui.incall.protocol.InCallScreenDelegate;
import com.android.incallui.incall.protocol.InCallScreenDelegateFactory;
import com.android.incallui.incall.protocol.PrimaryCallState;
+import com.android.incallui.incall.protocol.PrimaryCallState.ButtonState;
import com.android.incallui.incall.protocol.PrimaryInfo;
import com.android.incallui.incall.protocol.SecondaryInfo;
import java.util.ArrayList;
@@ -138,7 +140,10 @@
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {
LogUtil.i("InCallFragment.onCreateView", null);
- final View view = layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false);
+ // Bypass to avoid StrictModeResourceMismatchViolation
+ final View view =
+ DialerStrictMode.bypass(
+ () -> layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false));
contactGridManager =
new ContactGridManager(
view,
@@ -287,10 +292,6 @@
@Override
public void setSecondary(@NonNull SecondaryInfo secondaryInfo) {
LogUtil.i("InCallFragment.setSecondary", secondaryInfo.toString());
- getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
- .setEnabled(secondaryInfo.shouldShow);
- getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
- .setAllowed(secondaryInfo.shouldShow);
updateButtonStates();
if (!isAdded()) {
@@ -315,6 +316,10 @@
public void setCallState(@NonNull PrimaryCallState primaryCallState) {
LogUtil.i("InCallFragment.setCallState", primaryCallState.toString());
contactGridManager.setCallState(primaryCallState);
+ getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
+ .setAllowed(primaryCallState.swapToSecondaryButtonState != ButtonState.NOT_SUPPORT);
+ getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
+ .setEnabled(primaryCallState.swapToSecondaryButtonState == ButtonState.ENABLED);
buttonChooser =
ButtonChooserFactory.newButtonChooser(voiceNetworkType, primaryCallState.isWifi, phoneType);
updateButtonStates();
diff --git a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
index bc0c616..d4b04fe 100644
--- a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
+++ b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
@@ -39,7 +39,7 @@
if (position == getButtonGridPosition()) {
return InCallButtonGridFragment.newInstance();
} else {
- // TODO: handle fragment invalidation for when the data changes.
+ // TODO(calderwoodra): handle fragment invalidation for when the data changes.
return MultimediaFragment.newInstance(attachments, true, false, false);
}
}
diff --git a/java/com/android/incallui/incall/impl/MappedButtonConfig.java b/java/com/android/incallui/incall/impl/MappedButtonConfig.java
index 7229837..67c4137 100644
--- a/java/com/android/incallui/incall/impl/MappedButtonConfig.java
+++ b/java/com/android/incallui/incall/impl/MappedButtonConfig.java
@@ -141,7 +141,7 @@
}
@NonNull
- private MappingInfo lookupMappingInfo(@InCallButtonIds int button) {
+ public MappingInfo lookupMappingInfo(@InCallButtonIds int button) {
MappingInfo info = mapping.get(button);
if (info == null) {
throw new IllegalArgumentException(
@@ -154,6 +154,8 @@
@AutoValue
abstract static class MappingInfo {
+ public static final int NO_MUTUALLY_EXCLUSIVE_BUTTON_SET = -1;
+
/** The Ui slot into which a given button desires to be placed. */
public abstract int getSlot();
@@ -171,11 +173,20 @@
*/
public abstract int getConflictOrder();
+ /**
+ * Returns an integer representing a button for which the given button conflicts. Defaults to
+ * {@link NO_MUTUALLY_EXCLUSIVE_BUTTON_SET}.
+ *
+ * <p>If the mutually exclusive button is chosen, the associated button should never be chosen.
+ */
+ public abstract @InCallButtonIds int getMutuallyExclusiveButton();
+
static Builder builder(int slot) {
return new AutoValue_MappedButtonConfig_MappingInfo.Builder()
.setSlot(slot)
.setSlotOrder(Integer.MAX_VALUE)
- .setConflictOrder(Integer.MAX_VALUE);
+ .setConflictOrder(Integer.MAX_VALUE)
+ .setMutuallyExclusiveButton(NO_MUTUALLY_EXCLUSIVE_BUTTON_SET);
}
/** Class used to build instances of {@link MappingInfo}. */
@@ -187,6 +198,8 @@
public abstract Builder setConflictOrder(int conflictOrder);
+ public abstract Builder setMutuallyExclusiveButton(@InCallButtonIds int button);
+
public abstract MappingInfo build();
}
}
diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
index 26dd388..791f22e 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
@@ -17,13 +17,29 @@
package com.android.incallui.incall.protocol;
import android.graphics.drawable.Drawable;
+import android.support.annotation.IntDef;
import android.telecom.DisconnectCause;
import com.android.incallui.call.DialerCall;
import com.android.incallui.videotech.utils.SessionModificationState;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.Locale;
/** State of the primary call. */
public class PrimaryCallState {
+
+ /**
+ * Button state that will be invisible if not supported, visible but invalid if disabled, or
+ * visible if enabled.
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({ButtonState.NOT_SUPPORT, ButtonState.DISABLED, ButtonState.ENABLED})
+ public @interface ButtonState {
+ int NOT_SUPPORT = 0;
+ int DISABLED = 1;
+ int ENABLED = 2;
+ }
+
public final int state;
public final boolean isVideoCall;
@SessionModificationState public final int sessionModificationState;
@@ -45,6 +61,8 @@
public final boolean isRemotelyHeld;
public final boolean isBusinessNumber;
public final boolean supportsCallOnHold;
+ public final @ButtonState int swapToSecondaryButtonState;
+ public final boolean isAssistedDialed;
// TODO: Convert to autovalue. b/34502119
public static PrimaryCallState createEmptyPrimaryCallState() {
@@ -69,7 +87,9 @@
false /* isVoiceMailNumber */,
false /* isRemotelyHeld */,
false /* isBusinessNumber */,
- true /* supportsCallOnHold */);
+ true /* supportsCallOnHold */,
+ ButtonState.NOT_SUPPORT /* swapToSecondaryButtonState */,
+ false /* isAssistedDialed */);
}
public PrimaryCallState(
@@ -93,7 +113,9 @@
boolean isVoiceMailNumber,
boolean isRemotelyHeld,
boolean isBusinessNumber,
- boolean supportsCallOnHold) {
+ boolean supportsCallOnHold,
+ @ButtonState int swapToSecondaryButtonState,
+ boolean isAssistedDialed) {
this.state = state;
this.isVideoCall = isVideoCall;
this.sessionModificationState = sessionModificationState;
@@ -115,6 +137,8 @@
this.isRemotelyHeld = isRemotelyHeld;
this.isBusinessNumber = isBusinessNumber;
this.supportsCallOnHold = supportsCallOnHold;
+ this.swapToSecondaryButtonState = swapToSecondaryButtonState;
+ this.isAssistedDialed = isAssistedDialed;
}
@Override
diff --git a/java/com/android/incallui/maps/impl/AndroidManifest.xml b/java/com/android/incallui/maps/impl/AndroidManifest.xml
index 4ad0b3b..bc921e9 100644
--- a/java/com/android/incallui/maps/impl/AndroidManifest.xml
+++ b/java/com/android/incallui/maps/impl/AndroidManifest.xml
@@ -19,6 +19,7 @@
package="com.android.incallui.maps.impl">
<application>
+
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
diff --git a/java/com/android/incallui/res/drawable/spam_notification_icon.xml b/java/com/android/incallui/res/drawable/spam_notification_icon.xml
index a26e7d4..a414428 100644
--- a/java/com/android/incallui/res/drawable/spam_notification_icon.xml
+++ b/java/com/android/incallui/res/drawable/spam_notification_icon.xml
@@ -22,8 +22,8 @@
<shape android:shape="oval">
<solid android:color="@color/incall_call_spam_background_color"/>
<size
- android:height="@dimen/notification_large_icon_height"
- android:width="@dimen/notification_large_icon_width"/>
+ android:height="@android:dimen/notification_large_icon_height"
+ android:width="@android:dimen/notification_large_icon_width"/>
</shape>
</item>
@@ -31,4 +31,4 @@
android:drawable="@drawable/quantum_ic_report_white_36"
android:gravity="center"/>
-</layer-list>
\ No newline at end of file
+</layer-list>
diff --git a/java/com/android/incallui/res/drawable/unknown_notification_icon.xml b/java/com/android/incallui/res/drawable/unknown_notification_icon.xml
deleted file mode 100644
index 5ab07ec..0000000
--- a/java/com/android/incallui/res/drawable/unknown_notification_icon.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item>
- <shape android:shape="oval">
- <solid android:color="@color/unknown_number_color"/>
- <size
- android:height="@dimen/notification_large_icon_height"
- android:width="@dimen/notification_large_icon_width"/>
- </shape>
- </item>
-
- <item
- android:drawable="@drawable/ic_question_mark"
- android:gravity="center"/>
-
-</layer-list>
\ No newline at end of file
diff --git a/java/com/android/incallui/res/values-pl/strings.xml b/java/com/android/incallui/res/values-pl/strings.xml
index cb27c73..451c8ba 100644
--- a/java/com/android/incallui/res/values-pl/strings.xml
+++ b/java/com/android/incallui/res/values-pl/strings.xml
@@ -76,7 +76,7 @@
<string name="incall_error_out_of_service" msgid="5027539470868484145">"Sieć komórkowa jest niedostępna."</string>
<string name="incall_error_no_phone_number_supplied" msgid="293343960362630925">"Aby zadzwonić, wybierz prawidłowy numer."</string>
<string name="incall_error_call_failed" msgid="5560521345862514733">"Nie można dzwonić."</string>
- <string name="incall_status_dialed_mmi" msgid="3341365334358686873">"Uruchamiam sekwencję MMI..."</string>
+ <string name="incall_status_dialed_mmi" msgid="3341365334358686873">"Rozpoczynanie sekwencji MMI..."</string>
<string name="incall_error_supp_service_unknown" msgid="3062751096566282959">"Usługa nie jest obsługiwana."</string>
<string name="incall_error_supp_service_switch" msgid="759346040980722884">"Nie można przełączyć połączeń."</string>
<string name="incall_error_supp_service_separate" msgid="5250304200901095519">"Nie można rozdzielić połączenia."</string>
diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml
index 2341da3..26120f1 100644
--- a/java/com/android/incallui/res/values-uz/strings.xml
+++ b/java/com/android/incallui/res/values-uz/strings.xml
@@ -31,7 +31,7 @@
<string name="voicemail_settings_number_label" msgid="8935904934161608885">"Ovozli pochta raqami"</string>
<string name="notification_dialing" msgid="9072177265772083826">"Raqam terilmoqda"</string>
<string name="notification_missedCallTicker" msgid="238492086972857643">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> chaqiruvi javobsiz qoldi"</string>
- <string name="notification_ongoing_call" msgid="8712641937577776125">"Joriy chaqiruv"</string>
+ <string name="notification_ongoing_call" msgid="8712641937577776125">"Joriy qo‘ng‘iroq"</string>
<string name="notification_ongoing_work_call" msgid="3189581218078981547">"Chiquvchi ishchi qo‘ng‘irog‘i"</string>
<string name="notification_ongoing_call_wifi" msgid="4393238962909277019">"Joriy Wi-Fi qo‘ng‘iroq"</string>
<string name="notification_ongoing_work_call_wifi" msgid="3169378605818323964">"Joriy Wi-Fi qo‘ng‘iroq (ish)"</string>
@@ -55,9 +55,9 @@
<string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"Surat, xabar va joy. ax. ega muhim kiruv. chaqiruv"</string>
<string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"Biriktirmalarga ega muhim kiruvchi chaqiruv"</string>
<string name="notification_incoming_work_call" msgid="5291275092734261918">"Kiruvchi ishchi qo‘ng‘irog‘i"</string>
- <string name="notification_incoming_call_wifi" msgid="1020138378061234203">"Kiruvchi Wi-Fi chaqiruv"</string>
- <string name="notification_incoming_work_call_wifi" msgid="3549264481033044684">"Kiruvchi Wi-Fi chaqiruv (ish)"</string>
- <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Kiruvchi chaqiruv: shubhali spam"</string>
+ <string name="notification_incoming_call_wifi" msgid="1020138378061234203">"Kiruvchi Wi-Fi qo‘ng‘iroq"</string>
+ <string name="notification_incoming_work_call_wifi" msgid="3549264481033044684">"Kiruvchi Wi-Fi qo‘ng‘iroq (ish)"</string>
+ <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Shubhali kiruvchi qo‘ng‘iroq"</string>
<string name="notification_requesting_video_call" msgid="1807679328811515758">"Kiruvchi video so\'rovi"</string>
<string name="notification_network_selection_title" msgid="8639159088474275747">"Xizmat mavjud emas"</string>
<string name="notification_network_selection_text" msgid="7190860774239009625">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string>
diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml
index 4113313..22c3c23 100644
--- a/java/com/android/incallui/res/values/strings.xml
+++ b/java/com/android/incallui/res/values/strings.xml
@@ -76,12 +76,21 @@
<string name="notification_ongoing_call">Ongoing call</string>
<!-- The "label" of the in-call Notification for an ongoing work call. [CHAR LIMIT=60] -->
<string name="notification_ongoing_work_call">Ongoing work call</string>
- <!-- The "label" of the in-call Notification for an ongoing call, which is being made over
- Wi-Fi. [CHAR LIMIT=60] -->
- <string name="notification_ongoing_call_wifi">Ongoing Wi\u2011Fi call</string>
- <!-- The "label" of the in-call Notification for an ongoing work call, which is being made
- over Wi-Fi. [CHAR LIMIT=60] -->
- <string name="notification_ongoing_work_call_wifi">Ongoing Wi\u2011Fi work call</string>
+
+ <!-- Template for the label on the in-call Notification for an ongoing call, which is being made
+ over Wi-Fi. The format argument is @string/notification_call_wifi_brand [CHAR LIMIT=20]-->
+ <string name="notification_ongoing_call_wifi_template">Ongoing <xliff:g id="brand_name">%1$s</xliff:g></string>
+
+ <!-- Template for the label of the in-call Notification for an incoming call, which is being made
+ over Wi-Fi. The format argument is @string/notification_call_wifi_brand [CHAR LIMIT=20] -->
+ <string name="notification_incoming_call_wifi_template">Incoming <xliff:g id="brand_name">%1$s</xliff:g></string>
+
+ <!-- "Brand name" for WiFi calls. Will be overridden for specific mcc-mnc combinations [CHAR LIMIT=40]-->
+ <string name="notification_call_wifi_brand">Wi\u2011Fi call</string>
+
+ <!-- "Brand name" for WiFi work calls. Will be overridden for specific mcc-mnc combinations [CHAR LIMIT=40] -->
+ <string name="notification_call_wifi_work_brand">Wi\u2011Fi work call</string>
+
<!-- The "label" of the in-call Notification for a call that's on hold -->
<string name="notification_on_hold">On hold</string>
<!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=60] -->
@@ -124,12 +133,6 @@
<!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=60] -->
<string name="notification_incoming_work_call">Incoming work call</string>
- <!-- The "label" of the in-call Notification for an incoming ringing call,
- which is being made over Wi-Fi. [CHAR LIMIT=60] -->
- <string name="notification_incoming_call_wifi">Incoming Wi\u2011Fi call</string>
- <!-- The "label" of the in-call Notification for an incoming ringing work call,
- which is being made over Wi-Fi. [CHAR LIMIT=60] -->
- <string name="notification_incoming_work_call_wifi">Incoming Wi\u2011Fi work call</string>
<!-- The "label" of the in-call Notification for an incoming ringing spam call. -->
<string name="notification_incoming_spam_call">Incoming suspected spam call</string>
<!-- The "label" of the in-call Notification for upgrading an existing call to a video call. -->
diff --git a/java/com/android/incallui/spam/NumberInCallHistoryTask.java b/java/com/android/incallui/spam/NumberInCallHistoryTask.java
deleted file mode 100644
index 886933f..0000000
--- a/java/com/android/incallui/spam/NumberInCallHistoryTask.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.incallui.spam;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteException;
-import android.os.AsyncTask;
-import android.os.Build.VERSION_CODES;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.incallui.call.DialerCall;
-import com.android.incallui.call.DialerCall.CallHistoryStatus;
-import java.util.Objects;
-
-/** Checks if the number is in the call history. */
-@TargetApi(VERSION_CODES.M)
-public class NumberInCallHistoryTask extends AsyncTask<Void, Void, Integer> {
-
- public static final String TASK_ID = "number_in_call_history_status";
-
- private final Context context;
- private final Listener listener;
- private final String number;
- private final String countryIso;
-
- public NumberInCallHistoryTask(
- @NonNull Context context, @NonNull Listener listener, String number, String countryIso) {
- this.context = Objects.requireNonNull(context);
- this.listener = Objects.requireNonNull(listener);
- this.number = number;
- this.countryIso = countryIso;
- }
-
- public void submitTask() {
- if (!PermissionsUtil.hasPhonePermissions(context)) {
- return;
- }
- AsyncTaskExecutor asyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor();
- asyncTaskExecutor.submit(TASK_ID, this);
- }
-
- @Override
- @CallHistoryStatus
- public Integer doInBackground(Void... params) {
- String numberToQuery = number;
- String fieldToQuery = Calls.NUMBER;
- String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-
- // If we can normalize the number successfully, look in "normalized_number"
- // field instead. Otherwise, look for number in "number" field.
- if (!TextUtils.isEmpty(normalizedNumber)) {
- numberToQuery = normalizedNumber;
- fieldToQuery = Calls.CACHED_NORMALIZED_NUMBER;
- }
- try (Cursor cursor =
- context
- .getContentResolver()
- .query(
- TelecomUtil.getCallLogUri(context),
- new String[] {CallLog.Calls._ID},
- fieldToQuery + " = ?",
- new String[] {numberToQuery},
- null)) {
- return cursor != null && cursor.getCount() > 0
- ? DialerCall.CALL_HISTORY_STATUS_PRESENT
- : DialerCall.CALL_HISTORY_STATUS_NOT_PRESENT;
- } catch (SQLiteException e) {
- LogUtil.e("NumberInCallHistoryTask.doInBackground", "query call log error", e);
- return DialerCall.CALL_HISTORY_STATUS_UNKNOWN;
- }
- }
-
- @Override
- public void onPostExecute(@CallHistoryStatus Integer callHistoryStatus) {
- listener.onComplete(callHistoryStatus);
- }
-
- /** Callback for the async task. */
- public interface Listener {
-
- void onComplete(@CallHistoryStatus int callHistoryStatus);
- }
-}
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index b9c70eb..7ca3fbb 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -16,14 +16,21 @@
package com.android.incallui.spam;
+import android.annotation.TargetApi;
import android.app.Notification;
import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteException;
import android.graphics.drawable.Icon;
+import android.os.Build.VERSION_CODES;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.v4.os.BuildCompat;
import android.telecom.DisconnectCause;
import android.telephony.PhoneNumberUtils;
@@ -31,17 +38,23 @@
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
import com.android.dialer.blocking.FilteredNumberCompat;
import com.android.dialer.blocking.FilteredNumbersUtil;
+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.DialerExecutorFactory;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.logging.ContactLookupResult;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.spam.Spam;
+import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.PermissionsUtil;
import com.android.incallui.R;
import com.android.incallui.call.CallList;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCall.CallHistoryStatus;
+import java.util.Arrays;
import java.util.Random;
/**
@@ -53,15 +66,67 @@
private final Context context;
private final Random random;
+ private final DialerExecutorFactory dialerExecutorFactory;
- public SpamCallListListener(Context context) {
- this.context = context;
- this.random = new Random();
+ public SpamCallListListener(Context context, @NonNull DialerExecutorFactory factory) {
+ this(context, new Random(), factory);
}
- public SpamCallListListener(Context context, Random rand) {
+ public SpamCallListListener(
+ Context context, Random rand, @NonNull DialerExecutorFactory factory) {
this.context = context;
this.random = rand;
+ Assert.isNotNull(factory);
+ this.dialerExecutorFactory = factory;
+ }
+
+ /** Checks if the number is in the call history. */
+ @TargetApi(VERSION_CODES.M)
+ private final class NumberInCallHistoryWorker implements Worker<Void, Integer> {
+
+ private final Context appContext;
+ private final String number;
+ private final String countryIso;
+
+ public NumberInCallHistoryWorker(
+ @NonNull Context appContext, String number, String countryIso) {
+ this.appContext = Assert.isNotNull(appContext);
+ this.number = number;
+ this.countryIso = countryIso;
+ }
+
+ @Override
+ @NonNull
+ @CallHistoryStatus
+ public Integer doInBackground(@Nullable Void input) throws Throwable {
+ String numberToQuery = number;
+ String fieldToQuery = Calls.NUMBER;
+ String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+
+ // If we can normalize the number successfully, look in "normalized_number"
+ // field instead. Otherwise, look for number in "number" field.
+ if (!TextUtils.isEmpty(normalizedNumber)) {
+ numberToQuery = normalizedNumber;
+ fieldToQuery = Calls.CACHED_NORMALIZED_NUMBER;
+ }
+
+ try (Cursor cursor =
+ appContext
+ .getContentResolver()
+ .query(
+ TelecomUtil.getCallLogUri(appContext),
+ new String[] {CallLog.Calls._ID},
+ fieldToQuery + " = ?",
+ new String[] {numberToQuery},
+ null)) {
+ return cursor != null && cursor.getCount() > 0
+ ? DialerCall.CALL_HISTORY_STATUS_PRESENT
+ : DialerCall.CALL_HISTORY_STATUS_NOT_PRESENT;
+ } catch (SQLiteException e) {
+ LogUtil.e("NumberInCallHistoryWorker.doInBackground", "query call log error", e);
+ return DialerCall.CALL_HISTORY_STATUS_UNKNOWN;
+ }
+ }
}
@Override
@@ -70,15 +135,24 @@
if (TextUtils.isEmpty(number)) {
return;
}
- NumberInCallHistoryTask.Listener listener =
- new NumberInCallHistoryTask.Listener() {
- @Override
- public void onComplete(@CallHistoryStatus int callHistoryStatus) {
- call.setCallHistoryStatus(callHistoryStatus);
- }
- };
- new NumberInCallHistoryTask(context, listener, number, GeoUtil.getCurrentCountryIso(context))
- .submitTask();
+
+ String[] deniedPhonePermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ context, PermissionsUtil.allPhoneGroupPermissionsUsedInDialer);
+ if (deniedPhonePermissions.length > 0) {
+ LogUtil.i(
+ "NumberInCallHistoryWorker.submitTask",
+ "Need phone permissions: " + Arrays.toString(deniedPhonePermissions));
+ return;
+ }
+
+ NumberInCallHistoryWorker historyTask =
+ new NumberInCallHistoryWorker(context, number, GeoUtil.getCurrentCountryIso(context));
+ dialerExecutorFactory
+ .createNonUiTaskBuilder(historyTask)
+ .onSuccess((result) -> call.setCallHistoryStatus(result))
+ .build()
+ .executeParallel(null);
}
@Override
@@ -197,7 +271,6 @@
private void showNonSpamCallNotification(DialerCall call) {
Notification.Builder notificationBuilder =
createAfterCallNotificationBuilder(call)
- .setLargeIcon(Icon.createWithResource(context, R.drawable.unknown_notification_icon))
.setContentText(
context.getString(R.string.spam_notification_non_spam_call_collapsed_text))
.setStyle(
diff --git a/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java b/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java
deleted file mode 100644
index 9e5ab3c..0000000
--- a/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.incallui.video.impl;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.DialogFragment;
-import com.android.dialer.common.FragmentUtils;
-
-/** Dialog fragment to ask for camera permission from user. */
-public class CameraPermissionDialogFragment extends DialogFragment {
-
- static CameraPermissionDialogFragment newInstance() {
- CameraPermissionDialogFragment fragment = new CameraPermissionDialogFragment();
- return fragment;
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(Bundle bundle) {
- return new AlertDialog.Builder(getContext())
- .setTitle(R.string.camera_permission_dialog_title)
- .setMessage(R.string.camera_permission_dialog_message)
- .setPositiveButton(
- R.string.camera_permission_dialog_positive_button,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- CameraPermissionDialogCallback fragment =
- FragmentUtils.getParentUnsafe(
- CameraPermissionDialogFragment.this, CameraPermissionDialogCallback.class);
- fragment.onCameraPermissionGranted();
- }
- })
- .setNegativeButton(
- R.string.camera_permission_dialog_negative_button,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- })
- .create();
- }
-
- /** Callback for being granted camera permission. */
- public interface CameraPermissionDialogCallback {
- void onCameraPermissionGranted();
- }
-}
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index 203710e..b0beb77 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -21,7 +21,6 @@
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
-import android.graphics.Matrix;
import android.graphics.Outline;
import android.graphics.Point;
import android.graphics.drawable.Animatable;
@@ -284,7 +283,7 @@
int oldRight,
int oldBottom) {
LogUtil.i("VideoCallFragment.onLayoutChange", "previewTextureView layout changed");
- fixPreviewRotation();
+ updatePreviewVideoScaling();
updatePreviewOffView();
}
});
@@ -689,11 +688,13 @@
@Override
public void onLocalVideoDimensionsChanged() {
LogUtil.i("VideoCallFragment.onLocalVideoDimensionsChanged", null);
+ updatePreviewVideoScaling();
}
@Override
public void onLocalVideoOrientationChanged() {
LogUtil.i("VideoCallFragment.onLocalVideoOrientationChanged", null);
+ updatePreviewVideoScaling();
}
/** Called when the remote video's dimensions change. */
@@ -961,15 +962,31 @@
// Do nothing
}
- private void fixPreviewRotation() {
- int rotationDegrees = getRotationDegrees();
- if (rotationDegrees == 90 || rotationDegrees == 270) {
- int viewWidth = previewTextureView.getWidth();
- int viewHeight = previewTextureView.getHeight();
- Matrix transform = new Matrix();
- // Multiplying by -1 prevents the image from being upside down in landscape mode.
- transform.postRotate(rotationDegrees * -1.0f, viewWidth / 2.0f, viewHeight / 2.0f);
- previewTextureView.setTransform(transform);
+ private void updatePreviewVideoScaling() {
+ if (previewTextureView.getWidth() == 0 || previewTextureView.getHeight() == 0) {
+ LogUtil.i("VideoCallFragment.updatePreviewVideoScaling", "view layout hasn't finished yet");
+ return;
+ }
+ VideoSurfaceTexture localVideoSurfaceTexture =
+ videoCallScreenDelegate.getLocalVideoSurfaceTexture();
+ Point cameraDimensions = localVideoSurfaceTexture.getSurfaceDimensions();
+ if (cameraDimensions == null) {
+ LogUtil.i(
+ "VideoCallFragment.updatePreviewVideoScaling", "camera dimensions haven't been set");
+ return;
+ }
+ if (isLandscape()) {
+ VideoSurfaceBindings.scaleVideoAndFillView(
+ previewTextureView,
+ cameraDimensions.x,
+ cameraDimensions.y,
+ videoCallScreenDelegate.getDeviceOrientation());
+ } else {
+ VideoSurfaceBindings.scaleVideoAndFillView(
+ previewTextureView,
+ cameraDimensions.y,
+ cameraDimensions.x,
+ videoCallScreenDelegate.getDeviceOrientation());
}
}
@@ -1006,22 +1023,6 @@
return rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
}
- private int getRotationDegrees() {
- int rotation = getActivity().getWindowManager().getDefaultDisplay().getRotation();
- switch (rotation) {
- case Surface.ROTATION_0:
- return 0;
- case Surface.ROTATION_90:
- return 90;
- case Surface.ROTATION_180:
- return 180;
- case Surface.ROTATION_270:
- return 270;
- default:
- throw Assert.createAssertionFailException("unsupported rotation: " + rotation);
- }
- }
-
private void enterGreenScreenMode() {
LogUtil.i("VideoCallFragment.enterGreenScreenMode", null);
RelativeLayout.LayoutParams params =
@@ -1148,12 +1149,12 @@
return;
}
- // TODO: When the view is first displayed after a rotation the bitmap is empty
+ // TODO(mdooley): When the view is first displayed after a rotation the bitmap is empty
// and thus this blur has no effect.
// This call can take 100 milliseconds.
blur(getContext(), bitmap, blurRadius);
- // TODO: Figure out why only have to apply the transform in landscape mode
+ // TODO(mdooley): Figure out why only have to apply the transform in landscape mode
if (width > height) {
bitmap =
Bitmap.createBitmap(
diff --git a/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java b/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
index 1af7dff..8cac402 100644
--- a/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
+++ b/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
@@ -67,6 +67,9 @@
"VideoSurfaceTextureImpl.setSurfaceDimensions",
"surfaceDimensions: " + surfaceDimensions + " " + toString());
this.surfaceDimensions = surfaceDimensions;
+ if (surfaceDimensions != null && savedSurfaceTexture != null) {
+ savedSurfaceTexture.setDefaultBufferSize(surfaceDimensions.x, surfaceDimensions.y);
+ }
}
@Override
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 34c3e2c..79a8c60 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.support.annotation.Nullable;
+import com.android.dialer.logging.DialerImpression;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
import com.android.incallui.videotech.utils.SessionModificationState;
@@ -69,6 +70,12 @@
void setDeviceOrientation(int rotation);
+ /**
+ * Called on {@code VideoTechManager.savedTech} when it's first selected and it will always be
+ * used.
+ */
+ void becomePrimary();
+
/** Listener for video call events. */
interface VideoTechListener {
@@ -83,5 +90,7 @@
void onVideoUpgradeRequestReceived();
void onUpgradedToVideo(boolean switchToSpeaker);
+
+ void onImpressionLoggingNeeded(DialerImpression.Type impressionType);
}
}
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index 85eb64e..34dd1bf 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -98,4 +98,7 @@
@Override
public void setDeviceOrientation(int rotation) {}
+
+ @Override
+ public void becomePrimary() {}
}
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 8fa983a..fec05dc 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -42,6 +42,7 @@
SessionModificationState.NO_REQUEST;
private int previousVideoState = VideoProfile.STATE_AUDIO_ONLY;
private boolean paused = false;
+ private String savedCameraId;
// Hold onto a flag of whether or not stopTransmission was called but resumeTransmission has not
// been. This is needed because there is time between calling stopTransmission and
@@ -236,9 +237,25 @@
@Override
public void pause() {
- if (canPause() && !paused) {
+ if (call.getState() != Call.STATE_ACTIVE) {
+ LogUtil.i("ImsVideoTech.pause", "not pausing because call is not active");
+ return;
+ }
+
+ if (!isTransmittingOrReceiving()) {
+ LogUtil.i("ImsVideoTech.pause", "not pausing because this is not a video call");
+ return;
+ }
+
+ if (paused) {
+ LogUtil.i("ImsVideoTech.pause", "already paused");
+ return;
+ }
+
+ paused = true;
+
+ if (canPause()) {
LogUtil.i("ImsVideoTech.pause", "sending pause request");
- paused = true;
int pausedVideoState = call.getDetails().getVideoState() | VideoProfile.STATE_PAUSED;
if (transmissionStopped && VideoProfile.isTransmissionEnabled(pausedVideoState)) {
LogUtil.i("ImsVideoTech.pause", "overriding TX to false due to user request");
@@ -246,19 +263,33 @@
}
call.getVideoCall().sendSessionModifyRequest(new VideoProfile(pausedVideoState));
} else {
- LogUtil.i(
- "ImsVideoTech.pause",
- "not sending request: canPause: %b, paused: %b",
- canPause(),
- paused);
+ // This video call does not support pause so we fall back to disabling the camera
+ LogUtil.i("ImsVideoTech.pause", "disabling camera");
+ call.getVideoCall().setCamera(null);
}
}
@Override
public void unpause() {
- if (canPause() && paused) {
+ if (call.getState() != Call.STATE_ACTIVE) {
+ LogUtil.i("ImsVideoTech.unpause", "not unpausing because call is not active");
+ return;
+ }
+
+ if (!isTransmittingOrReceiving()) {
+ LogUtil.i("ImsVideoTech.unpause", "not unpausing because this is not a video call");
+ return;
+ }
+
+ if (!paused) {
+ LogUtil.i("ImsVideoTech.unpause", "already unpaused");
+ return;
+ }
+
+ paused = false;
+
+ if (canPause()) {
LogUtil.i("ImsVideoTech.unpause", "sending unpause request");
- paused = false;
int unpausedVideoState = getUnpausedVideoState(call.getDetails().getVideoState());
if (transmissionStopped && VideoProfile.isTransmissionEnabled(unpausedVideoState)) {
LogUtil.i("ImsVideoTech.unpause", "overriding TX to false due to user request");
@@ -266,16 +297,15 @@
}
call.getVideoCall().sendSessionModifyRequest(new VideoProfile(unpausedVideoState));
} else {
- LogUtil.i(
- "ImsVideoTech.unpause",
- "not sending request: canPause: %b, paused: %b",
- canPause(),
- paused);
+ // This video call does not support pause so we fall back to re-enabling the camera
+ LogUtil.i("ImsVideoTech.pause", "re-enabling camera");
+ setCamera(savedCameraId);
}
}
@Override
public void setCamera(@Nullable String cameraId) {
+ savedCameraId = cameraId;
call.getVideoCall().setCamera(cameraId);
call.getVideoCall().requestCameraCapabilities();
}
@@ -285,10 +315,14 @@
call.getVideoCall().setDeviceOrientation(rotation);
}
+ @Override
+ public void becomePrimary() {
+ listener.onImpressionLoggingNeeded(
+ DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS);
+ }
+
private boolean canPause() {
- return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO)
- && call.getState() == Call.STATE_ACTIVE
- && isTransmittingOrReceiving();
+ return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO);
}
static int getUnpausedVideoState(int videoState) {
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index 961de9e..26d6347 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -26,6 +26,7 @@
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerListener;
+import com.android.dialer.logging.DialerImpression;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
import com.android.incallui.videotech.VideoTech;
@@ -102,6 +103,7 @@
@Override
public void upgradeToVideo() {
+ listener.onImpressionLoggingNeeded(DialerImpression.Type.LIGHTBRINGER_UPGRADE_REQUESTED);
lightbringer.requestUpgrade(call);
}
@@ -147,6 +149,12 @@
}
@Override
+ public void becomePrimary() {
+ listener.onImpressionLoggingNeeded(
+ DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER);
+ }
+
+ @Override
public void setDeviceOrientation(int rotation) {
throw Assert.createUnsupportedOperationFailException();
}
diff --git a/java/com/android/voicemail/impl/ActivationTask.java b/java/com/android/voicemail/impl/ActivationTask.java
index 6e27b50..320ea2a 100644
--- a/java/com/android/voicemail/impl/ActivationTask.java
+++ b/java/com/android/voicemail/impl/ActivationTask.java
@@ -36,7 +36,6 @@
import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
import com.android.voicemail.impl.sms.StatusMessage;
import com.android.voicemail.impl.sms.StatusSmsFetcher;
-import com.android.voicemail.impl.sync.OmtpVvmSyncService;
import com.android.voicemail.impl.sync.SyncTask;
import com.android.voicemail.impl.sync.VvmAccountManager;
import com.android.voicemail.impl.utils.LoggerUtils;
@@ -258,7 +257,7 @@
VoicemailStatus.edit(context, phoneAccountHandle),
OmtpEvents.CONFIG_REQUEST_STATUS_SUCCESS);
clearLegacyVoicemailNotification(context, phoneAccountHandle);
- SyncTask.start(context, phoneAccountHandle, OmtpVvmSyncService.SYNC_FULL_SYNC);
+ SyncTask.start(context, phoneAccountHandle);
}
/** Sends a broadcast to the dialer UI to clear legacy voicemail notifications if any. */
diff --git a/java/com/android/voicemail/impl/AndroidManifest.xml b/java/com/android/voicemail/impl/AndroidManifest.xml
index 49d93f5..1abc96d 100644
--- a/java/com/android/voicemail/impl/AndroidManifest.xml
+++ b/java/com/android/voicemail/impl/AndroidManifest.xml
@@ -18,7 +18,6 @@
package="com.android.voicemail.impl">
<application
- android:allowBackup="false"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:defaultToDeviceProtectedStorage="true"
@@ -117,6 +116,13 @@
android:windowSoftInputMode="stateVisible|adjustResize">
</activity>
+ <receiver android:name="com.android.voicemail.impl.PackageReplacedReceiver"
+ android:exported="false">
+ <intent-filter>
+ <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
+ </intent-filter>
+ </receiver>
+
<receiver android:name="com.android.voicemail.impl.CarrierVvmPackageInstalledReceiver"
android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
android:exported="true">
diff --git a/java/com/android/voicemail/impl/PackageReplacedReceiver.java b/java/com/android/voicemail/impl/PackageReplacedReceiver.java
new file mode 100644
index 0000000..6a7ca4a
--- /dev/null
+++ b/java/com/android/voicemail/impl/PackageReplacedReceiver.java
@@ -0,0 +1,43 @@
+/*
+ * 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.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import com.android.voicemail.VoicemailComponent;
+
+/** Receives MY_PACKAGE_REPLACED to trigger VVM activation. */
+public class PackageReplacedReceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ VvmLog.i("PackageReplacedReceiver.onReceive", "package replaced, starting activation");
+
+ if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
+ VvmLog.e("PackageReplacedReceiver.onReceive", "module disabled");
+ return;
+ }
+
+ for (PhoneAccountHandle phoneAccountHandle :
+ context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
+ ActivationTask.start(context, phoneAccountHandle, null);
+ }
+ }
+}
diff --git a/java/com/android/voicemail/impl/VoicemailBootReceiver.java b/java/com/android/voicemail/impl/VoicemailBootReceiver.java
deleted file mode 100644
index 0a3e61a..0000000
--- a/java/com/android/voicemail/impl/VoicemailBootReceiver.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (C) 2017 The Android Open Source Project
- *
- * <p>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
- *
- * <p>http://www.apache.org/licenses/LICENSE-2.0
- *
- * <p>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.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import com.android.voicemail.VoicemailComponent;
-
-/** Receives {@link Intent#ACTION_BOOT_COMPLETED} for the voicemail module. */
-public class VoicemailBootReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
- return;
- }
- StatusCheckJobService.schedule(context);
- }
-}
diff --git a/java/com/android/voicemail/impl/VoicemailStatus.java b/java/com/android/voicemail/impl/VoicemailStatus.java
index ec1ab4e..5553cf5 100644
--- a/java/com/android/voicemail/impl/VoicemailStatus.java
+++ b/java/com/android/voicemail/impl/VoicemailStatus.java
@@ -24,6 +24,7 @@
import android.provider.VoicemailContract.Status;
import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
+import com.android.dialer.strictmode.DialerStrictMode;
public class VoicemailStatus {
@@ -99,7 +100,7 @@
ContentResolver contentResolver = mContext.getContentResolver();
Uri statusUri = VoicemailContract.Status.buildSourceUri(mContext.getPackageName());
try {
- contentResolver.insert(statusUri, mValues);
+ DialerStrictMode.bypass(() -> contentResolver.insert(statusUri, mValues));
} catch (IllegalArgumentException iae) {
VvmLog.e(TAG, "apply :: failed to insert content resolver ", iae);
mValues.clear();
diff --git a/java/com/android/voicemail/impl/VvmPhoneStateListener.java b/java/com/android/voicemail/impl/VvmPhoneStateListener.java
index 48b7204..00c1358 100644
--- a/java/com/android/voicemail/impl/VvmPhoneStateListener.java
+++ b/java/com/android/voicemail/impl/VvmPhoneStateListener.java
@@ -19,7 +19,6 @@
import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
-import com.android.voicemail.impl.sync.OmtpVvmSyncService;
import com.android.voicemail.impl.sync.SyncTask;
import com.android.voicemail.impl.sync.VoicemailStatusQueryHelper;
import com.android.voicemail.impl.sync.VvmAccountManager;
@@ -37,7 +36,7 @@
private int mPreviousState = -1;
public VvmPhoneStateListener(Context context, PhoneAccountHandle accountHandle) {
- // TODO: b/32637799 too much trouble to call super constructor through reflection,
+ // TODO(twyen): b/32637799 too much trouble to call super constructor through reflection,
// just use non-phoneAccountHandle version for now.
super();
mContext = context;
@@ -82,7 +81,7 @@
VvmLog.v(TAG, "Signal returned: requesting resync for " + mPhoneAccount);
// If the source is already registered, run a full sync in case something was missed
// while signal was down.
- SyncTask.start(mContext, mPhoneAccount, OmtpVvmSyncService.SYNC_FULL_SYNC);
+ SyncTask.start(mContext, mPhoneAccount);
} else {
VvmLog.v(TAG, "Signal returned: reattempting activation for " + mPhoneAccount);
// Otherwise initiate an activation because this means that an OMTP source was
diff --git a/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java b/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
deleted file mode 100644
index 448c693..0000000
--- a/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * 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.google.internal.communications.voicemailtranscription.v1;
-
-import static io.grpc.stub.ClientCalls.asyncUnaryCall;
-import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
-import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
-import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
-import static io.grpc.stub.ClientCalls.blockingUnaryCall;
-import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
-import static io.grpc.stub.ClientCalls.futureUnaryCall;
-import static io.grpc.MethodDescriptor.generateFullMethodName;
-import static io.grpc.stub.ServerCalls.asyncUnaryCall;
-import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
-import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
-
-/**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
-@javax.annotation.Generated(
- value = "by gRPC proto compiler (version 1.0.3)",
- comments = "Source: voicemail_transcription.proto")
-public class VoicemailTranscriptionServiceGrpc {
-
- private VoicemailTranscriptionServiceGrpc() {}
-
- public static final String SERVICE_NAME = "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService";
-
- // Static method descriptors that strictly reflect the proto.
- @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
- public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
- com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> METHOD_TRANSCRIBE_VOICEMAIL =
- io.grpc.MethodDescriptor.create(
- io.grpc.MethodDescriptor.MethodType.UNARY,
- generateFullMethodName(
- "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "TranscribeVoicemail"),
- io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest.getDefaultInstance()),
- io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse.getDefaultInstance()));
-
- /**
- * Creates a new async stub that supports all call types for the service
- */
- public static VoicemailTranscriptionServiceStub newStub(io.grpc.Channel channel) {
- return new VoicemailTranscriptionServiceStub(channel);
- }
-
- /**
- * Creates a new blocking-style stub that supports unary and streaming output calls on the service
- */
- public static VoicemailTranscriptionServiceBlockingStub newBlockingStub(
- io.grpc.Channel channel) {
- return new VoicemailTranscriptionServiceBlockingStub(channel);
- }
-
- /**
- * Creates a new ListenableFuture-style stub that supports unary and streaming output calls on the service
- */
- public static VoicemailTranscriptionServiceFutureStub newFutureStub(
- io.grpc.Channel channel) {
- return new VoicemailTranscriptionServiceFutureStub(channel);
- }
-
- /**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
- public static abstract class VoicemailTranscriptionServiceImplBase implements io.grpc.BindableService {
-
- /**
- * <pre>
- * Returns a transcript of the given voicemail.
- * </pre>
- */
- public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
- io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
- asyncUnimplementedUnaryCall(METHOD_TRANSCRIBE_VOICEMAIL, responseObserver);
- }
-
- @java.lang.Override public io.grpc.ServerServiceDefinition bindService() {
- return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
- .addMethod(
- METHOD_TRANSCRIBE_VOICEMAIL,
- asyncUnaryCall(
- new MethodHandlers<
- com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
- com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>(
- this, METHODID_TRANSCRIBE_VOICEMAIL)))
- .build();
- }
- }
-
- /**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
- public static final class VoicemailTranscriptionServiceStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceStub> {
- private VoicemailTranscriptionServiceStub(io.grpc.Channel channel) {
- super(channel);
- }
-
- private VoicemailTranscriptionServiceStub(io.grpc.Channel channel,
- io.grpc.CallOptions callOptions) {
- super(channel, callOptions);
- }
-
- @java.lang.Override
- protected VoicemailTranscriptionServiceStub build(io.grpc.Channel channel,
- io.grpc.CallOptions callOptions) {
- return new VoicemailTranscriptionServiceStub(channel, callOptions);
- }
-
- /**
- * <pre>
- * Returns a transcript of the given voicemail.
- * </pre>
- */
- public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
- io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
- asyncUnaryCall(
- getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request, responseObserver);
- }
- }
-
- /**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
- public static final class VoicemailTranscriptionServiceBlockingStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceBlockingStub> {
- private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel) {
- super(channel);
- }
-
- private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel,
- io.grpc.CallOptions callOptions) {
- super(channel, callOptions);
- }
-
- @java.lang.Override
- protected VoicemailTranscriptionServiceBlockingStub build(io.grpc.Channel channel,
- io.grpc.CallOptions callOptions) {
- return new VoicemailTranscriptionServiceBlockingStub(channel, callOptions);
- }
-
- /**
- * <pre>
- * Returns a transcript of the given voicemail.
- * </pre>
- */
- public com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
- return blockingUnaryCall(
- getChannel(), METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions(), request);
- }
- }
-
- /**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
- public static final class VoicemailTranscriptionServiceFutureStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceFutureStub> {
- private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel) {
- super(channel);
- }
-
- private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel,
- io.grpc.CallOptions callOptions) {
- super(channel, callOptions);
- }
-
- @java.lang.Override
- protected VoicemailTranscriptionServiceFutureStub build(io.grpc.Channel channel,
- io.grpc.CallOptions callOptions) {
- return new VoicemailTranscriptionServiceFutureStub(channel, callOptions);
- }
-
- /**
- * <pre>
- * Returns a transcript of the given voicemail.
- * </pre>
- */
- public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> transcribeVoicemail(
- com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
- return futureUnaryCall(
- getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request);
- }
- }
-
- private static final int METHODID_TRANSCRIBE_VOICEMAIL = 0;
-
- private static class MethodHandlers<Req, Resp> implements
- io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
- io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
- io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
- io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
- private final VoicemailTranscriptionServiceImplBase serviceImpl;
- private final int methodId;
-
- public MethodHandlers(VoicemailTranscriptionServiceImplBase serviceImpl, int methodId) {
- this.serviceImpl = serviceImpl;
- this.methodId = methodId;
- }
-
- @java.lang.Override
- @java.lang.SuppressWarnings("unchecked")
- public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
- switch (methodId) {
- case METHODID_TRANSCRIBE_VOICEMAIL:
- serviceImpl.transcribeVoicemail((com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest) request,
- (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>) responseObserver);
- break;
- default:
- throw new AssertionError();
- }
- }
-
- @java.lang.Override
- @java.lang.SuppressWarnings("unchecked")
- public io.grpc.stub.StreamObserver<Req> invoke(
- io.grpc.stub.StreamObserver<Resp> responseObserver) {
- switch (methodId) {
- default:
- throw new AssertionError();
- }
- }
- }
-
- public static io.grpc.ServiceDescriptor getServiceDescriptor() {
- return new io.grpc.ServiceDescriptor(SERVICE_NAME,
- METHOD_TRANSCRIBE_VOICEMAIL);
- }
-
-}
diff --git a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
index 18b2b92..1624ce5 100644
--- a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
+++ b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
@@ -35,6 +35,7 @@
import android.text.TextUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.strictmode.DialerStrictMode;
import com.android.voicemail.VoicemailComponent;
/**
@@ -126,8 +127,10 @@
}
public static boolean isOverridden(Context context) {
- return PreferenceManager.getDefaultSharedPreferences(context)
- .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false);
+ return DialerStrictMode.bypass(
+ () ->
+ PreferenceManager.getDefaultSharedPreferences(context)
+ .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false));
}
public static PersistableBundle getConfig(Context context) {
diff --git a/java/com/android/voicemail/impl/configui/res/values-af/strings.xml b/java/com/android/voicemail/impl/configui/res/values-af/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-af/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-am/strings.xml b/java/com/android/voicemail/impl/configui/res/values-am/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-am/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ar/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ar/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ar/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-az/strings.xml b/java/com/android/voicemail/impl/configui/res/values-az/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-az/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-b+sr+Latn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-be/strings.xml b/java/com/android/voicemail/impl/configui/res/values-be/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-be/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-bg/strings.xml b/java/com/android/voicemail/impl/configui/res/values-bg/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-bg/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-bn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-bn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-bn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-bs/strings.xml b/java/com/android/voicemail/impl/configui/res/values-bs/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-bs/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ca/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ca/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ca/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-cs/strings.xml b/java/com/android/voicemail/impl/configui/res/values-cs/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-cs/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-da/strings.xml b/java/com/android/voicemail/impl/configui/res/values-da/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-da/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-de/strings.xml b/java/com/android/voicemail/impl/configui/res/values-de/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-de/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-el/strings.xml b/java/com/android/voicemail/impl/configui/res/values-el/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-el/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-en-rAU/strings.xml b/java/com/android/voicemail/impl/configui/res/values-en-rAU/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-en-rGB/strings.xml b/java/com/android/voicemail/impl/configui/res/values-en-rGB/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-en-rIN/strings.xml b/java/com/android/voicemail/impl/configui/res/values-en-rIN/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-es-rUS/strings.xml b/java/com/android/voicemail/impl/configui/res/values-es-rUS/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-es/strings.xml b/java/com/android/voicemail/impl/configui/res/values-es/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-es/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-et/strings.xml b/java/com/android/voicemail/impl/configui/res/values-et/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-et/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-eu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-eu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-eu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fa/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fa/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fa/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fi/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fi/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fi/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fr-rCA/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-gl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-gl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-gl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-gu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-gu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-gu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hi/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hi/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hi/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hy/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hy/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hy/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-in/strings.xml b/java/com/android/voicemail/impl/configui/res/values-in/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-in/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-is/strings.xml b/java/com/android/voicemail/impl/configui/res/values-is/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-is/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-it/strings.xml b/java/com/android/voicemail/impl/configui/res/values-it/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-it/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-iw/strings.xml b/java/com/android/voicemail/impl/configui/res/values-iw/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-iw/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ja/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ja/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ja/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ka/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ka/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ka/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-kk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-kk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-kk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-km/strings.xml b/java/com/android/voicemail/impl/configui/res/values-km/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-km/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-kn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-kn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-kn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ko/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ko/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ko/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ky/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ky/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ky/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-lo/strings.xml b/java/com/android/voicemail/impl/configui/res/values-lo/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-lo/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-lt/strings.xml b/java/com/android/voicemail/impl/configui/res/values-lt/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-lt/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-lv/strings.xml b/java/com/android/voicemail/impl/configui/res/values-lv/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-lv/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-mk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-mk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-mk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ml/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ml/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ml/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-mn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-mn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-mn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-mr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-mr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-mr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ms/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ms/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ms/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-my/strings.xml b/java/com/android/voicemail/impl/configui/res/values-my/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-my/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-nb/strings.xml b/java/com/android/voicemail/impl/configui/res/values-nb/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ne/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ne/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ne/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-nl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-nl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-nl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-no/strings.xml b/java/com/android/voicemail/impl/configui/res/values-no/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-no/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pa/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pa/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pa/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pt-rBR/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pt-rPT/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pt/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pt/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pt/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ro/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ro/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ro/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ru/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ru/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ru/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-si/strings.xml b/java/com/android/voicemail/impl/configui/res/values-si/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-si/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sq/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sq/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sq/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sv/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sv/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sv/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sw/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sw/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sw/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ta/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ta/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ta/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-te/strings.xml b/java/com/android/voicemail/impl/configui/res/values-te/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-te/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-th/strings.xml b/java/com/android/voicemail/impl/configui/res/values-th/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-th/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-tl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-tl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-tl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-tr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-tr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-tr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-uk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-uk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-uk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ur/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ur/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ur/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-uz/strings.xml b/java/com/android/voicemail/impl/configui/res/values-uz/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-uz/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-vi/strings.xml b/java/com/android/voicemail/impl/configui/res/values-vi/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-vi/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zh-rCN/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zh-rHK/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zh-rTW/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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">
-</resources>
diff --git a/java/com/android/voicemail/impl/mail/MailTransport.java b/java/com/android/voicemail/impl/mail/MailTransport.java
index 00339f0..c35e414 100644
--- a/java/com/android/voicemail/impl/mail/MailTransport.java
+++ b/java/com/android/voicemail/impl/mail/MailTransport.java
@@ -195,6 +195,8 @@
} catch (IOException ioe) {
LogUtils.d(TAG, ioe.toString());
throw new MessagingException(MessagingException.IOERROR, ioe.toString());
+ } finally {
+ TrafficStats.clearThreadStatsTag();
}
}
diff --git a/java/com/android/voicemail/impl/proguard.flags b/java/com/android/voicemail/impl/proguard.flags
new file mode 100644
index 0000000..9379df3
--- /dev/null
+++ b/java/com/android/voicemail/impl/proguard.flags
@@ -0,0 +1,4 @@
+-assumenosideeffects class com.android.voicemail.impl.VvmLog {
+ public static void v(...);
+ public static void d(...);
+}
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 2bac66b..c7ed5ca 100644
--- a/java/com/android/voicemail/impl/res/xml/vvm_config.xml
+++ b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
@@ -21,6 +21,7 @@
<item value="TEST"/>
</string-array>
</pbundle_as_map>
+
<pbundle_as_map>
<!-- T-Mobile USA-->
<string-array name="mccmnc">
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
index 107234e..baf5804 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -30,6 +30,7 @@
import android.preference.PreferenceManager;
import android.support.annotation.MainThread;
import com.android.dialer.constants.ScheduledJobIds;
+import com.android.dialer.strictmode.DialerStrictMode;
import com.android.voicemail.impl.Assert;
import com.android.voicemail.impl.VvmLog;
import java.util.ArrayList;
@@ -58,7 +59,8 @@
public boolean onStartJob(JobParameters params) {
int jobId = params.getTransientExtras().getInt(EXTRA_JOB_ID);
int expectedJobId =
- PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0);
+ DialerStrictMode.bypass(
+ () -> PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0));
if (jobId != expectedJobId) {
VvmLog.e(
TAG, "Job " + jobId + " is not the last scheduled job " + expectedJobId + ", ignoring");
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
index 1cf3737..4383527 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
@@ -35,7 +35,6 @@
import com.android.voicemail.impl.VvmLog;
import com.android.voicemail.impl.protocol.VisualVoicemailProtocol;
import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
-import com.android.voicemail.impl.sync.OmtpVvmSyncService;
import com.android.voicemail.impl.sync.SyncOneTask;
import com.android.voicemail.impl.sync.SyncTask;
import com.android.voicemail.impl.sync.VoicemailsQueryHelper;
@@ -152,7 +151,7 @@
}
break;
case OmtpConstants.MAILBOX_UPDATE:
- SyncTask.start(mContext, phone, OmtpVvmSyncService.SYNC_DOWNLOAD_ONLY);
+ SyncTask.start(mContext, phone);
break;
case OmtpConstants.GREETINGS_UPDATE:
// Not implemented in V1
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
index e9d145c..19661e9 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
@@ -22,6 +22,7 @@
import android.telephony.SmsManager;
import com.android.voicemail.impl.OmtpConstants;
import com.android.voicemail.impl.TelephonyMangerCompat;
+import com.android.voicemail.impl.VvmLog;
/**
* Send client originated OMTP messages to the OMTP server.
@@ -75,6 +76,11 @@
public void requestVvmStatus(@Nullable PendingIntent sentIntent) {}
protected void sendSms(String text, PendingIntent sentIntent) {
+
+ VvmLog.v(
+ TAG,
+ String.format("Sending sms '%s' to %s:%d", text, mDestinationNumber, mApplicationPort));
+
TelephonyMangerCompat.sendVisualVoicemailSms(
mContext, mPhoneAccountHandle, mDestinationNumber, mApplicationPort, text, sentIntent);
}
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
index b2ec49e..1b59ecc 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
@@ -52,7 +52,7 @@
VvmLog.i(TAG, "Unactivated account " + phoneAccount + " found, activating");
ActivationTask.start(context, phoneAccount, null);
} else {
- SyncTask.start(context, phoneAccount, OmtpVvmSyncService.SYNC_FULL_SYNC);
+ SyncTask.start(context, phoneAccount);
}
}
}
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
index 7933883..5b5d6b0 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
@@ -43,6 +43,7 @@
import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
import com.android.voicemail.impl.utils.LoggerUtils;
import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -50,22 +51,13 @@
@TargetApi(VERSION_CODES.O)
public class OmtpVvmSyncService {
- private static final String TAG = OmtpVvmSyncService.class.getSimpleName();
+ private static final String TAG = "OmtpVvmSyncService";
- /** Signifies a sync with both uploading to the server and downloading from the server. */
- public static final String SYNC_FULL_SYNC = "full_sync";
- /** Only upload to the server. */
- public static final String SYNC_UPLOAD_ONLY = "upload_only";
- /** Only download from the server. */
- public static final String SYNC_DOWNLOAD_ONLY = "download_only";
- /** Only download single voicemail transcription. */
- public static final String SYNC_DOWNLOAD_ONE_TRANSCRIPTION = "download_one_transcription";
/** Threshold for whether we should archive and delete voicemails from the remote VM server. */
private static final float AUTO_DELETE_ARCHIVE_VM_THRESHOLD = 0.75f;
private final Context mContext;
-
- private VoicemailsQueryHelper mQueryHelper;
+ private final VoicemailsQueryHelper mQueryHelper;
public OmtpVvmSyncService(Context context) {
mContext = context;
@@ -74,23 +66,21 @@
public void sync(
BaseTask task,
- String action,
PhoneAccountHandle phoneAccount,
Voicemail voicemail,
VoicemailStatus.Editor status) {
Assert.isTrue(phoneAccount != null);
- VvmLog.v(TAG, "Sync requested: " + action + " - for account: " + phoneAccount);
- setupAndSendRequest(task, phoneAccount, voicemail, action, status);
+ VvmLog.v(TAG, "Sync requested for account: " + phoneAccount);
+ setupAndSendRequest(task, phoneAccount, voicemail, status);
}
private void setupAndSendRequest(
BaseTask task,
PhoneAccountHandle phoneAccount,
Voicemail voicemail,
- String action,
VoicemailStatus.Editor status) {
if (!VisualVoicemailSettingsUtil.isEnabled(mContext, phoneAccount)) {
- VvmLog.v(TAG, "Sync requested for disabled account");
+ VvmLog.e(TAG, "Sync requested for disabled account");
return;
}
if (!VvmAccountManager.isAccountActivated(mContext, phoneAccount)) {
@@ -102,7 +92,7 @@
LoggerUtils.logImpressionOnMainThread(mContext, DialerImpression.Type.VVM_SYNC_STARTED);
// DATA_IMAP_OPERATION_STARTED posting should not be deferred. This event clears all data
// channel errors, which should happen when the task starts, not when it ends. It is the
- // "Sync in progress..." status.
+ // "Sync in progress..." status, which is currently displayed to the user as no error.
config.handleEvent(
VoicemailStatus.edit(mContext, phoneAccount), OmtpEvents.DATA_IMAP_OPERATION_STARTED);
try (NetworkWrapper network = VvmNetworkRequest.getNetwork(config, phoneAccount, status)) {
@@ -111,7 +101,7 @@
task.fail();
return;
}
- doSync(task, network.get(), phoneAccount, voicemail, action, status);
+ doSync(task, network.get(), phoneAccount, voicemail, status);
} catch (RequestFailedException e) {
config.handleEvent(status, OmtpEvents.DATA_NO_CONNECTION_CELLULAR_REQUIRED);
task.fail();
@@ -123,14 +113,13 @@
Network network,
PhoneAccountHandle phoneAccount,
Voicemail voicemail,
- String action,
VoicemailStatus.Editor status) {
try (ImapHelper imapHelper = new ImapHelper(mContext, phoneAccount, network, status)) {
boolean success;
if (voicemail == null) {
- success = syncAll(action, imapHelper, phoneAccount);
+ success = syncAll(imapHelper, phoneAccount);
} else {
- success = syncOne(imapHelper, voicemail, phoneAccount);
+ success = downloadOneVoicemail(imapHelper, voicemail, phoneAccount);
}
if (success) {
// TODO: b/30569269 failure should interrupt all subsequent task via exceptions
@@ -219,79 +208,33 @@
}
}
- private boolean syncAll(String action, ImapHelper imapHelper, PhoneAccountHandle account) {
- boolean uploadSuccess = true;
- boolean downloadSuccess = true;
+ private boolean syncAll(ImapHelper imapHelper, PhoneAccountHandle account) {
- if (SYNC_FULL_SYNC.equals(action) || SYNC_UPLOAD_ONLY.equals(action)) {
- uploadSuccess = upload(account, imapHelper);
- }
- if (SYNC_FULL_SYNC.equals(action) || SYNC_DOWNLOAD_ONLY.equals(action)) {
- downloadSuccess = download(imapHelper, account);
- }
-
- VvmLog.v(
- TAG,
- "upload succeeded: ["
- + String.valueOf(uploadSuccess)
- + "] download succeeded: ["
- + String.valueOf(downloadSuccess)
- + "]");
-
- return uploadSuccess && downloadSuccess;
- }
-
- private boolean syncOne(ImapHelper imapHelper, Voicemail voicemail, PhoneAccountHandle account) {
- if (shouldPerformPrefetch(account, imapHelper)) {
- VoicemailFetchedCallback callback =
- new VoicemailFetchedCallback(mContext, voicemail.getUri(), account);
- imapHelper.fetchVoicemailPayload(callback, voicemail.getSourceData());
- }
-
- return imapHelper.fetchTranscription(
- new TranscriptionFetchedCallback(mContext, voicemail), voicemail.getSourceData());
- }
-
- private boolean upload(PhoneAccountHandle phoneAccountHandle, ImapHelper imapHelper) {
- List<Voicemail> readVoicemails = mQueryHelper.getReadVoicemails(phoneAccountHandle);
- List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails(phoneAccountHandle);
-
- boolean success = true;
-
- if (deletedVoicemails.size() > 0) {
- if (imapHelper.markMessagesAsDeleted(deletedVoicemails)) {
- // We want to delete selectively instead of all the voicemails for this provider
- // in case the state changed since the IMAP query was completed.
- mQueryHelper.deleteFromDatabase(deletedVoicemails);
- } else {
- success = false;
- }
- }
-
- if (readVoicemails.size() > 0) {
- VvmLog.i(TAG, "Marking voicemails as read");
- if (imapHelper.markMessagesAsRead(readVoicemails)) {
- VvmLog.i(TAG, "Marking voicemails as clean");
- mQueryHelper.markCleanInDatabase(readVoicemails);
- } else {
- success = false;
- }
- }
-
- return success;
- }
-
- private boolean download(ImapHelper imapHelper, PhoneAccountHandle account) {
List<Voicemail> serverVoicemails = imapHelper.fetchAllVoicemails();
List<Voicemail> localVoicemails = mQueryHelper.getAllVoicemails(account);
+ List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails(account);
+ boolean succeeded = true;
if (localVoicemails == null || serverVoicemails == null) {
// Null value means the query failed.
+ VvmLog.e(TAG, "syncAll: query failed");
return false;
}
+ if (deletedVoicemails.size() > 0) {
+ if (imapHelper.markMessagesAsDeleted(deletedVoicemails)) {
+ // Delete only the voicemails that was deleted on the server, in case more are deleted
+ // since the IMAP query was completed.
+ mQueryHelper.deleteFromDatabase(deletedVoicemails);
+ } else {
+ succeeded = false;
+ }
+ }
+
Map<String, Voicemail> remoteMap = buildMap(serverVoicemails);
+ List<Voicemail> localReadVoicemails = new ArrayList<>();
+
// Go through all the local voicemails and check if they are on the server.
// They may be read or deleted on the server but not locally. Perform the
// appropriate local operation if the status differs from the server. Remove
@@ -310,6 +253,8 @@
} else {
if (remoteVoicemail.isRead() && !localVoicemail.isRead()) {
mQueryHelper.markReadInDatabase(localVoicemail);
+ } else if (localVoicemail.isRead() && !remoteVoicemail.isRead()) {
+ localReadVoicemails.add(localVoicemail);
}
if (!TextUtils.isEmpty(remoteVoicemail.getTranscription())
@@ -321,6 +266,16 @@
}
}
+ if (localReadVoicemails.size() > 0) {
+ VvmLog.i(TAG, "Marking voicemails as read");
+ if (imapHelper.markMessagesAsRead(localReadVoicemails)) {
+ VvmLog.i(TAG, "Marking voicemails as clean");
+ mQueryHelper.markCleanInDatabase(localReadVoicemails);
+ } else {
+ return false;
+ }
+ }
+
// The leftover messages are messages that exist on the server but not locally.
boolean prefetchEnabled = shouldPerformPrefetch(account, imapHelper);
for (Voicemail remoteVoicemail : remoteMap.values()) {
@@ -336,7 +291,19 @@
}
}
- return true;
+ return succeeded;
+ }
+
+ private boolean downloadOneVoicemail(
+ ImapHelper imapHelper, Voicemail voicemail, PhoneAccountHandle account) {
+ if (shouldPerformPrefetch(account, imapHelper)) {
+ VoicemailFetchedCallback callback =
+ new VoicemailFetchedCallback(mContext, voicemail.getUri(), account);
+ imapHelper.fetchVoicemailPayload(callback, voicemail.getSourceData());
+ }
+
+ return imapHelper.fetchTranscription(
+ new TranscriptionFetchedCallback(mContext, voicemail), voicemail.getSourceData());
}
private boolean shouldPerformPrefetch(PhoneAccountHandle account, ImapHelper imapHelper) {
diff --git a/java/com/android/voicemail/impl/sync/SyncOneTask.java b/java/com/android/voicemail/impl/sync/SyncOneTask.java
index cd2782a..70c6bd8 100644
--- a/java/com/android/voicemail/impl/sync/SyncOneTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncOneTask.java
@@ -39,17 +39,14 @@
private static final int RETRY_INTERVAL_MILLIS = 5_000;
private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
- private static final String EXTRA_SYNC_TYPE = "extra_sync_type";
private static final String EXTRA_VOICEMAIL = "extra_voicemail";
private PhoneAccountHandle mPhone;
- private String mSyncType;
private Voicemail mVoicemail;
public static void start(Context context, PhoneAccountHandle phone, Voicemail voicemail) {
Intent intent = BaseTask.createIntent(context, SyncOneTask.class, phone);
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
- intent.putExtra(EXTRA_SYNC_TYPE, OmtpVvmSyncService.SYNC_DOWNLOAD_ONE_TRANSCRIPTION);
intent.putExtra(EXTRA_VOICEMAIL, voicemail);
context.sendBroadcast(intent);
}
@@ -63,14 +60,13 @@
public void onCreate(Context context, Bundle extras) {
super.onCreate(context, extras);
mPhone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
- mSyncType = extras.getString(EXTRA_SYNC_TYPE);
mVoicemail = extras.getParcelable(EXTRA_VOICEMAIL);
}
@Override
public void onExecuteInBackgroundThread() {
OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
- service.sync(this, mSyncType, mPhone, mVoicemail, VoicemailStatus.edit(getContext(), mPhone));
+ service.sync(this, mPhone, mVoicemail, VoicemailStatus.edit(getContext(), mPhone));
}
@Override
@@ -78,7 +74,6 @@
LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
Intent intent = super.createRestartIntent();
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
- intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
intent.putExtra(EXTRA_VOICEMAIL, mVoicemail);
return intent;
}
diff --git a/java/com/android/voicemail/impl/sync/SyncTask.java b/java/com/android/voicemail/impl/sync/SyncTask.java
index 0b3e090..68ce012 100644
--- a/java/com/android/voicemail/impl/sync/SyncTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncTask.java
@@ -37,17 +37,14 @@
private static final int MINIMAL_INTERVAL_MILLIS = 60_000;
private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
- private static final String EXTRA_SYNC_TYPE = "extra_sync_type";
private final RetryPolicy mRetryPolicy;
private PhoneAccountHandle mPhone;
- private String mSyncType;
- public static void start(Context context, PhoneAccountHandle phone, String syncType) {
+ public static void start(Context context, PhoneAccountHandle phone) {
Intent intent = BaseTask.createIntent(context, SyncTask.class, phone);
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
- intent.putExtra(EXTRA_SYNC_TYPE, syncType);
context.sendBroadcast(intent);
}
@@ -62,13 +59,12 @@
public void onCreate(Context context, Bundle extras) {
super.onCreate(context, extras);
mPhone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
- mSyncType = extras.getString(EXTRA_SYNC_TYPE);
}
@Override
public void onExecuteInBackgroundThread() {
OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
- service.sync(this, mSyncType, mPhone, null, mRetryPolicy.getVoicemailStatusEditor());
+ service.sync(this, mPhone, null, mRetryPolicy.getVoicemailStatusEditor());
}
@Override
@@ -76,7 +72,6 @@
LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
Intent intent = super.createRestartIntent();
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
- intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
return intent;
}
}
diff --git a/java/com/android/voicemail/impl/sync/UploadTask.java b/java/com/android/voicemail/impl/sync/UploadTask.java
index f2b2036..d8f06db 100644
--- a/java/com/android/voicemail/impl/sync/UploadTask.java
+++ b/java/com/android/voicemail/impl/sync/UploadTask.java
@@ -63,10 +63,6 @@
return;
}
service.sync(
- this,
- OmtpVvmSyncService.SYNC_UPLOAD_ONLY,
- phoneAccountHandle,
- null,
- VoicemailStatus.edit(getContext(), phoneAccountHandle));
+ this, phoneAccountHandle, null, VoicemailStatus.edit(getContext(), phoneAccountHandle));
}
}
diff --git a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
index 9b295db..316e1ca 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
@@ -49,8 +49,6 @@
public static final int DELETED = 3;
public static final int TRANSCRIPTION = 4;
- static final String READ_SELECTION =
- Voicemails.DIRTY + "=1 AND " + Voicemails.DELETED + "!=1 AND " + Voicemails.IS_READ + "=1";
static final String DELETED_SELECTION = Voicemails.DELETED + "=1";
static final String ARCHIVED_SELECTION = Voicemails.ARCHIVED + "=0";
@@ -65,15 +63,6 @@
}
/**
- * Get all the local read voicemails that have not been synced to the server.
- *
- * @return A list of read voicemails.
- */
- public List<Voicemail> getReadVoicemails(@NonNull PhoneAccountHandle phoneAccountHandle) {
- return getLocalVoicemails(phoneAccountHandle, READ_SELECTION);
- }
-
- /**
* Get all the locally deleted voicemails that have not been synced to the server.
*
* @return A list of deleted voicemails.
diff --git a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
index 067eff8..068b19b 100644
--- a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
+++ b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
@@ -128,7 +128,7 @@
@CallSuper
public void onUnavailable() {
- // TODO: b/32637799 this is hidden, do we really need this?
+ // TODO(twyen): b/32637799 this is hidden, do we really need this?
mResultReceived = true;
onFailed(NETWORK_REQUEST_FAILED_TIMEOUT);
}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
index 3e80a7f..9a781e6 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
@@ -24,7 +24,6 @@
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.os.StrictMode;
import android.support.annotation.MainThread;
import android.support.annotation.VisibleForTesting;
import android.support.v4.os.BuildCompat;
@@ -32,6 +31,7 @@
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.constants.ScheduledJobIds;
+import com.android.dialer.strictmode.DialerStrictMode;
import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -48,7 +48,6 @@
private JobParameters jobParameters;
private TranscriptionClientFactory clientFactory;
private TranscriptionConfigProvider configProvider;
- private StrictMode.VmPolicy originalPolicy;
/** Callback used by a task to indicate it has finished processing its work item */
interface JobCallback {
@@ -111,8 +110,7 @@
LogUtil.i(
"TranscriptionService.onStartJob",
"transcription server address: " + configProvider.getServerAddress());
- originalPolicy = StrictMode.getVmPolicy();
- StrictMode.enableDefaults();
+ DialerStrictMode.disableDeathPenalty(); // Re-enabled in cleanup.
jobParameters = params;
return checkForWork();
}
@@ -142,10 +140,7 @@
executorService.shutdownNow();
executorService = null;
}
- if (originalPolicy != null) {
- StrictMode.setVmPolicy(originalPolicy);
- originalPolicy = null;
- }
+ DialerStrictMode.enableDeathPenalty();
}
@MainThread
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto b/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
index 4b1e19b..dd2170a 100644
--- a/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
+++ b/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
@@ -5,9 +5,10 @@
package google.internal.communications.voicemailtranscription.v1;
option java_multiple_files = true;
-option java_package = "com.google.internal.communications.voicemailtranscription.v1";
option optimize_for = LITE_RUNTIME;
+option java_package = "com.google.internal.communications.voicemailtranscription.v1";
+
// Enum that specifies supported audio formats.
enum AudioFormat {
// Default but invalid value.