[automerger skipped] Import translations. DO NOT MERGE ANYWHERE am: bb21539057 -s ours
am skip reason: contains skip directive
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Contacts/+/26323513
Change-Id: Iad5f8bbd76e554d1c8d462c74f2980b69414877f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index de90412..36923ab 100644
--- a/Android.bp
+++ b/Android.bp
@@ -25,6 +25,7 @@
srcs: [
"src/**/*.java",
+ "src/**/*.kt",
"src-bind/**/*.java",
],
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0bd96cd..66d5767 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -20,14 +20,15 @@
android:versionName="1.7.34">
<uses-sdk
- android:minSdkVersion="33"
- android:targetSdkVersion="33"/>
+ android:minSdkVersion="34"
+ android:targetSdkVersion="34"/>
<original-package android:name="com.android.contacts"/>
<!-- Contacts permission listed first because order determines
order that permissions are requested with some OEMs -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
+ <uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
@@ -56,6 +57,8 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+ <!-- Required in U to run Service.startForeground() under DATA_SYNC type -->
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<uses-feature
android:name="android.hardware.telephony"
@@ -630,6 +633,17 @@
android:name="android.nfc.disable_beam_default"
android:value="true"/>
+ <provider
+ android:name="com.android.contacts.sdn.SdnProvider"
+ android:authorities="@string/contacts_sdn_provider_authority"
+ android:enabled="true"
+ android:exported="true"
+ android:readPermission="android.permission.BIND_DIRECTORY_SEARCH">
+ <meta-data
+ android:name="android.content.ContactDirectory"
+ android:value="true" />
+ </provider>
+
</application>
<!-- Allows the contacts app to see the activities and services needed
diff --git a/lint-baseline.xml b/lint-baseline.xml
deleted file mode 100644
index 659b24d..0000000
--- a/lint-baseline.xml
+++ /dev/null
@@ -1,664 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 7.1.0-dev" type="baseline" client="" dependencies="true" name="" variant="all" version="7.1.0-dev">
-
- <issue
- id="NewApi"
- message="Call requires API level S (current min is 21): `android.provider.ContactsContract.SimContacts#getSimAccounts`"
- errorLine1=" ContactsContract.SimContacts.getSimAccounts(mContext.getContentResolver());"
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/model/AccountTypeManager.java"
- line="541"
- column="54"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level S (current min is 21): `android.provider.ContactsContract.SimAccount#getAccountName`"
- errorLine1=" simAccountWithDataSets.add(new AccountWithDataSet(simAccount.getAccountName(),"
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/model/AccountTypeManager.java"
- line="543"
- column="82"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level S (current min is 21): `android.provider.ContactsContract.SimAccount#getAccountType`"
- errorLine1=" simAccount.getAccountType(), null));"
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/model/AccountTypeManager.java"
- line="544"
- column="40"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Cast from `PhoneAccountHandle` to `Parcelable` requires API level 23 (current min is 21)"
- errorLine1=" arguments.putParcelable(ARG_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/dialog/CallSubjectDialog.java"
- line="249"
- column="59"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Cast from `PhoneAccountHandle` to `Parcelable` requires API level 23 (current min is 21)"
- errorLine1=" intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="87"
- column="72"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.TelecomManager#getCallCapablePhoneAccounts`"
- errorLine1=" List<PhoneAccountHandle> accountHandles = telecommMgr.getCallCapablePhoneAccounts();"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="164"
- column="67"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.TelecomManager#getPhoneAccount`"
- errorLine1=" PhoneAccount account = telecommMgr.getPhoneAccount(accountHandle);"
- errorLine2=" ~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="166"
- column="52"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#hasCapabilities`"
- errorLine1=" if (account.hasCapabilities(PhoneAccount.CAPABILITY_VIDEO_CALLING)) {"
- errorLine2=" ~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="168"
- column="33"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#hasCapabilities`"
- errorLine1=" if (account.hasCapabilities(PhoneAccountSdkCompat"
- errorLine2=" ~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="175"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.TelecomManager#getCallCapablePhoneAccounts`"
- errorLine1=" List<PhoneAccountHandle> accountHandles = telecommMgr.getCallCapablePhoneAccounts();"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="211"
- column="67"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.TelecomManager#getPhoneAccount`"
- errorLine1=" PhoneAccount account = telecommMgr.getPhoneAccount(accountHandle);"
- errorLine2=" ~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="213"
- column="52"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#hasCapabilities`"
- errorLine1=" if (account != null && account.hasCapabilities(PhoneAccount.CAPABILITY_CALL_SUBJECT)) {"
- errorLine2=" ~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/CallUtil.java"
- line="214"
- column="48"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.content.ContentProviderOperation#isInsert`"
- errorLine1=" return cpoWrapper.getOperation().isInsert();"
- errorLine2=" ~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/CompatUtils.java"
- line="48"
- column="46"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.content.ContentProviderOperation#isUpdate`"
- errorLine1=" return cpoWrapper.getOperation().isUpdate();"
- errorLine2=" ~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/CompatUtils.java"
- line="58"
- column="46"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.content.ContentProviderOperation#isDelete`"
- errorLine1=" return cpoWrapper.getOperation().isDelete();"
- errorLine2=" ~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/CompatUtils.java"
- line="68"
- column="46"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.content.ContentProviderOperation#isAssertQuery`"
- errorLine1=" return cpoWrapper.getOperation().isAssertQuery();"
- errorLine2=" ~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/CompatUtils.java"
- line="77"
- column="46"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/interactions/ContactDeletionInteraction.java"
- line="360"
- column="43"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.widget.QuickContactBadge#setPrioritizedMimeType`"
- errorLine1=" quickContact.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/ContactEntryListAdapter.java"
- line="721"
- column="26"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/ContactSaveService.java"
- line="1221"
- column="39"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/DefaultContactBrowseListFragment.java"
- line="1129"
- column="39"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level S (current min is 21): `android.provider.ContactsContract.SimContacts#getSimAccounts`"
- errorLine1=" ContactsContract.SimContacts.getSimAccounts("
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/util/DeviceLocalAccountTypeFactory.java"
- line="74"
- column="50"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level S (current min is 21): `android.provider.ContactsContract.SimAccount#getAccountType`"
- errorLine1=" simAccount.getAccountType())) {"
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/util/DeviceLocalAccountTypeFactory.java"
- line="77"
- column="36"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Field requires API level 24 (current min is 21): `android.provider.ContactsContract.Directory#ENTERPRISE_CONTENT_URI`"
- errorLine1=" public static final Uri ENTERPRISE_CONTENT_URI = Directory.ENTERPRISE_CONTENT_URI;"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/DirectorySdkCompat.java"
- line="26"
- column="54"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java"
- line="436"
- column="43"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 28 (current min is 21): `android.content.pm.PackageInfo#getLongVersionCode`"
- errorLine1=" sCachedVersionCode = Long.toString(info.getLongVersionCode());"
- errorLine2=" ~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/util/HelpUtils.java"
- line="125"
- column="57"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/interactions/ImportDialogFragment.java"
- line="178"
- column="47"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/interactions/ImportDialogFragment.java"
- line="187"
- column="47"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 26 (current min is 21): `android.graphics.drawable.AdaptiveIconDrawable#getExtraInsetFraction`"
- errorLine1=" return 1 / (1 + (2 * AdaptiveIconDrawable.getExtraInsetFraction()));"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/lettertiles/LetterTileDrawable.java"
- line="293"
- column="51"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/MultiSelectContactsListFragment.java"
- line="357"
- column="39"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/MultiSelectContactsListFragment.java"
- line="362"
- column="39"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#getIcon`"
- errorLine1=" return phoneAccount.getIcon();"
- errorLine2=" ~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/PhoneAccountCompat.java"
- line="45"
- column="33"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.graphics.drawable.Icon#loadDrawable`"
- errorLine1=" return accountIcon.loadDrawable(context);"
- errorLine2=" ~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/PhoneAccountCompat.java"
- line="84"
- column="28"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Class requires API level 23 (current min is 21): `android.telecom.PhoneAccount`"
- errorLine1=" return (Drawable) PhoneAccount.class.getMethod("createIconDrawable", Context.class)"
- errorLine2=" ~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/PhoneAccountCompat.java"
- line="91"
- column="31"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.PhoneNumberUtils#createTtsSpannable`"
- errorLine1=" return PhoneNumberUtils.createTtsSpannable(phoneNumber);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/PhoneNumberUtilsCompat.java"
- line="85"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.PhoneNumberUtils#createTtsSpan`"
- errorLine1=" return PhoneNumberUtils.createTtsSpan(phoneNumber);"
- errorLine2=" ~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/PhoneNumberUtilsCompat.java"
- line="93"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.PhoneNumberUtils#addTtsSpan`"
- errorLine1=" PhoneNumberUtils.addTtsSpan(s, start, endExclusive);"
- errorLine2=" ~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/PhoneNumberUtilsCompat.java"
- line="118"
- column="30"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Field requires API level 23 (current min is 21): `android.provider.ContactsContract.ProviderStatus#CONTENT_URI`"
- errorLine1=" .registerContentObserver(ProviderStatus.CONTENT_URI, false, this);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/ProviderStatusWatcher.java"
- line="132"
- column="42"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Field requires API level 23 (current min is 21): `android.provider.ContactsContract.ProviderStatus#CONTENT_URI`"
- errorLine1=" Cursor cursor = mContext.getContentResolver().query(ProviderStatus.CONTENT_URI,"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/ProviderStatusWatcher.java"
- line="219"
- column="69"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Field requires API level 23 (current min is 21): `android.provider.ContactsContract.ProviderStatus#CONTENT_URI`"
- errorLine1=" if (!ProviderStatus.CONTENT_URI.equals(uri)) return;"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/list/ProviderStatusWatcher.java"
- line="270"
- column="14"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 22 (current min is 21): `android.app.Activity#getReferrer`"
- errorLine1=" if (mReferrer == null && CompatUtils.isLollipopMr1Compatible() && getReferrer() != null) {"
- errorLine2=" ~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/quickcontact/QuickContactActivity.java"
- line="654"
- column="75"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 22 (current min is 21): `android.app.Activity#getReferrer`"
- errorLine1=" mReferrer = getReferrer().getAuthority();"
- errorLine2=" ~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/quickcontact/QuickContactActivity.java"
- line="655"
- column="25"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 24 (current min is 21): `new android.icu.text.MessageFormat`"
- errorLine1=" MessageFormat msgFormat = new MessageFormat("
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/quickcontact/QuickContactActivity.java"
- line="2226"
- column="35"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Class requires API level 23 (current min is 21): `android.telecom.PhoneAccountHandle`"
- errorLine1=" (PhoneAccountHandle) resultData.getParcelable("
- errorLine2=" ~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="130"
- column="26"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Cast from `PhoneAccountHandle` to `Parcelable` requires API level 23 (current min is 21)"
- errorLine1=" selectedAccountHandle);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="171"
- column="25"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.TelecomManager#getPhoneAccount`"
- errorLine1=" PhoneAccount account = mTelecomManager.getPhoneAccount(accountHandle);"
- errorLine2=" ~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="247"
- column="52"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#getLabel`"
- errorLine1=" holder.labelTextView.setText(account.getLabel());"
- errorLine2=" ~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="251"
- column="50"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#getAddress`"
- errorLine1=" if (account.getAddress() == null ||"
- errorLine2=" ~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="252"
- column="25"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#getAddress`"
- errorLine1=" TextUtils.isEmpty(account.getAddress().getSchemeSpecificPart())) {"
- errorLine2=" ~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="253"
- column="47"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.PhoneAccount#getAddress`"
- errorLine1=" account.getAddress().getSchemeSpecificPart()));"
- errorLine2=" ~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/widget/SelectPhoneAccountDialogFragment.java"
- line="259"
- column="41"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 30 (current min is 21): `android.telephony.TelephonyManager#getSubscriptionId`"
- errorLine1=" return new SimCard(telephony.getSimSerialNumber(), telephony.getSubscriptionId(),"
- errorLine2=" ~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/model/SimCard.java"
- line="244"
- column="74"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level S (current min is 21): `android.provider.SimPhonebookContract.SimRecords#getContentUri`"
- errorLine1=" SimRecords.getContentUri("
- errorLine2=" ~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/database/SimContactDaoImpl.java"
- line="130"
- column="28"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 26 (current min is 21): `android.content.ContentResolver#query`"
- errorLine1=" final Cursor cursor = mResolver.query(uri,"
- errorLine2=" ~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/database/SimContactDaoImpl.java"
- line="265"
- column="45"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telecom.TelecomManager#placeCall`"
- errorLine1=" telecomManager.placeCall(intent.getData(), intent.getExtras());"
- errorLine2=" ~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/telecom/TelecomManagerCompat.java"
- line="43"
- column="28"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 22 (current min is 21): `android.telephony.TelephonyManager#isVoiceCapable`"
- errorLine1=" return telephonyManager.isVoiceCapable();"
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/TelephonyManagerCompat.java"
- line="49"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.TelephonyManager#getPhoneCount`"
- errorLine1=" return telephonyManager.getPhoneCount();"
- errorLine2=" ~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/TelephonyManagerCompat.java"
- line="71"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.TelephonyManager#getDeviceId`"
- errorLine1=" return telephonyManager.getDeviceId(slotId);"
- errorLine2=" ~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/TelephonyManagerCompat.java"
- line="93"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.TelephonyManager#isTtyModeSupported`"
- errorLine1=" return telephonyManager.isTtyModeSupported();"
- errorLine2=" ~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/TelephonyManagerCompat.java"
- line="111"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.telephony.TelephonyManager#isHearingAidCompatibilitySupported`"
- errorLine1=" return telephonyManager.isHearingAidCompatibilitySupported();"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/TelephonyManagerCompat.java"
- line="131"
- column="37"/>
- </issue>
-
- <issue
- id="NewApi"
- message="Call requires API level 23 (current min is 21): `android.provider.Telephony.Threads#getOrCreateThreadId`"
- errorLine1=" return Telephony.Threads.getOrCreateThreadId(context, recipient);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/src/com/android/contacts/compat/TelephonyThreadsCompat.java"
- line="51"
- column="38"/>
- </issue>
-
- <issue
- id="NewApi"
- message="`android:contentInsetStartWithNavigation` requires API level 24 (current min is 21)"
- errorLine1=" <item name="android:contentInsetStartWithNavigation">72dp</item>"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="packages/apps/Contacts/res/values/styles.xml"
- line="215"
- column="15"/>
- </issue>
-
-</issues>
diff --git a/res/layout/contact_editor_fields.xml b/res/layout/contact_editor_fields.xml
index b9bda16..dd4e499 100644
--- a/res/layout/contact_editor_fields.xml
+++ b/res/layout/contact_editor_fields.xml
@@ -48,4 +48,29 @@
</LinearLayout>
+ <LinearLayout
+ android:id="@+id/legacy_fields_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:orientation="vertical"
+ android:visibility="gone">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAllCaps="true"
+ android:layout_marginStart="16dp"
+ android:textAppearance="?attr/textAppearanceOverline"
+ android:singleLine="true"
+ android:layout_marginBottom="24dp"
+ android:textSize="11sp"
+ android:text="@string/editor_uneditable_section_title" />
+
+ <LinearLayout
+ android:id="@+id/legacy_section_views"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
+ </LinearLayout>
+
</merge>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 1642b82..7f7e304 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Soek tans…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiket"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Kan nie hierdie inligting opdateer nie"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Kanselleer"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Terug"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"maak toe"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Kennisgewings"</string>
<string name="yes_button" msgid="1120514817091581293">"Ja"</string>
<string name="no_button" msgid="8965841385742548947">"Nee"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Diensverskafferdiensnommers"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 03a8fab..01a09bd 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"በመፈለግ ላይ…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"ቀን"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"መሰየሚያ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ይህን መረጃ ማዘመን አልተቻለም"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ይቅር"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ተመለስ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ዝጋ"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"ማሳወቂያዎች"</string>
<string name="yes_button" msgid="1120514817091581293">"አዎ"</string>
<string name="no_button" msgid="8965841385742548947">"አይ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"የአገልግሎት አቅራቢ አገልግሎት ቁጥሮች"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0e830e9..e30046a 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"جارٍ البحث..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"التاريخ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"التصنيف"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"لا يمكن تعديل هذه المعلومات"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"إلغاء"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"رجوع"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"إغلاق"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"الإشعارات"</string>
<string name="yes_button" msgid="1120514817091581293">"نعم"</string>
<string name="no_button" msgid="8965841385742548947">"لا"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"أرقام خدمات مشغّلي شبكة الجوّال"</string>
</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 18c1684..cf3a1e7 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"সন্ধান কৰি থকা হৈছে…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"তাৰিখ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"লেবেল"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"এই তথ্য আপডে’ট কৰিব নোৱাৰি"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"বাতিল কৰক"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"উভতি যাওক"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"বন্ধ কৰক"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"জাননীসমূহ"</string>
<string name="yes_button" msgid="1120514817091581293">"হয়"</string>
<string name="no_button" msgid="8965841385742548947">"নহয়"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"বাহকৰ সেৱাৰ নম্বৰ"</string>
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index fc47eb1..3f207cf 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Axtarılır..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Tarix"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiket"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Bu məlumatları yeniləmək mümkün deyil"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Ləğv edin"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Geri"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"qapadın"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Bildirişlər"</string>
<string name="yes_button" msgid="1120514817091581293">"Hə"</string>
<string name="no_button" msgid="8965841385742548947">"Yox"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operatorun xidmət nömrələri"</string>
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index a976a43..9ac0f8e 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Pretražuje se..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Oznaka"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Ne možete da ažurirate ove informacije"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Otkaži"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Nazad"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zatvorite"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Obaveštenja"</string>
<string name="yes_button" msgid="1120514817091581293">"Da"</string>
<string name="no_button" msgid="8965841385742548947">"Ne"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Uslužni brojevi mobilnog operatera"</string>
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index fdf5078..d406a8d 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Пошук..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Метка"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Гэту інфармацыю немагчыма абнавіць"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Скасаваць"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Назад"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"закрыць"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Апавяшчэнні"</string>
<string name="yes_button" msgid="1120514817091581293">"Так"</string>
<string name="no_button" msgid="8965841385742548947">"Не"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Сэрвісныя нумары аператара"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 157236e..4eaa6ca 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Търси се..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Етикет"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Тази информация не може да се актуализира"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Отказ"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Назад"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"затваряне"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Известия"</string>
<string name="yes_button" msgid="1120514817091581293">"Да"</string>
<string name="no_button" msgid="8965841385742548947">"Не"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Номера за обслужване от оператора"</string>
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 9e2c696..117e908 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"সার্চ করছে..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"তারিখ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"লেবেল"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"এই তথ্য আপডেট করতে পারবেন না"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"বাতিল করুন"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ফিরুন"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"বন্ধ করুন"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"বিজ্ঞপ্তি"</string>
<string name="yes_button" msgid="1120514817091581293">"হ্যাঁ"</string>
<string name="no_button" msgid="8965841385742548947">"না"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"পরিষেবা প্রদানকারীর অপারেটরের নম্বর"</string>
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 937dac0..eb12dfa 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Pretraživanje…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Oznaka"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Nije moguće ažurirati ove informacije"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Otkaži"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Nazad"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zatvori"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Obavještenja"</string>
<string name="yes_button" msgid="1120514817091581293">"Da"</string>
<string name="no_button" msgid="8965841385742548947">"Ne"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Uslužni brojevi mobilnog operatera"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index a301de0..8b5bf86 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"S\'està cercant..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiqueta"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"No es pot actualitzar aquesta informació"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancel·la"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Enrere"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"tanca"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificacions"</string>
<string name="yes_button" msgid="1120514817091581293">"Sí"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de servei de l\'operador"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f59107f..d80a877 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Vyhledávání..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Štítek"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Tyto informace nemůžete upravit"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Zrušit"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Zpět"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zavřít"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Oznámení"</string>
<string name="yes_button" msgid="1120514817091581293">"Ano"</string>
<string name="no_button" msgid="8965841385742548947">"Ne"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Čísla služeb operátorů"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 07cdcf9..9271157 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Søger..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Dato"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiket"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"DIsse oplysninger kan ikke opdateres"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Annuller"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Tilbage"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"luk"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifikationer"</string>
<string name="yes_button" msgid="1120514817091581293">"Ja"</string>
<string name="no_button" msgid="8965841385742548947">"Nej"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Mobilselskabs servicenumre"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 99820d1..c9d2962 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Suche..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Diese Informationen können nicht aktualisiert werden"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Abbrechen"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Zurück"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"Schließen"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Benachrichtigungen"</string>
<string name="yes_button" msgid="1120514817091581293">"Ja"</string>
<string name="no_button" msgid="8965841385742548947">"Nein"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Servicenummern des Mobilfunkanbieters"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index bc1826c..0aaa069 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Αναζήτηση…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Ημερομηνία"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Ετικέτα"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Δεν είναι δυνατή η ενημέρωση αυτής της πληροφορίας"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Ακύρωση"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Πίσω"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"κλείσιμο"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Ειδοποιήσεις"</string>
<string name="yes_button" msgid="1120514817091581293">"Ναι"</string>
<string name="no_button" msgid="8965841385742548947">"Όχι"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Αριθμοί εταιρείας κινητής τηλεφωνίας"</string>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 26c26f4..e4d3500 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Searching…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Can\'t update this info"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancel"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Back"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"close"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifications"</string>
<string name="yes_button" msgid="1120514817091581293">"Yes"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operator service numbers"</string>
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 7a2e95e..ff4bb7b 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Searching…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Can’t update this info"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancel"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Back"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"close"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifications"</string>
<string name="yes_button" msgid="1120514817091581293">"Yes"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Carrier service numbers"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 26c26f4..e4d3500 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Searching…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Can\'t update this info"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancel"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Back"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"close"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifications"</string>
<string name="yes_button" msgid="1120514817091581293">"Yes"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operator service numbers"</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 26c26f4..e4d3500 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Searching…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Can\'t update this info"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancel"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Back"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"close"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifications"</string>
<string name="yes_button" msgid="1120514817091581293">"Yes"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operator service numbers"</string>
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index b5dc952..616b323 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Searching…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Can’t update this info"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancel"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Back"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"close"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifications"</string>
<string name="yes_button" msgid="1120514817091581293">"Yes"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Carrier service numbers"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 5135ef4..eb4d4ce 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Buscando..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Fecha"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiqueta"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"No se puede actualizar esta información"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancelar"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Atrás"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"cerrar"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificaciones."</string>
<string name="yes_button" msgid="1120514817091581293">"Sí"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de servicio del operador"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 8f316e8..ac394fd 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Buscando..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Fecha"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiqueta"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Esta información no se puede actualizar"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancelar"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Atrás"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"cerrar"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificaciones"</string>
<string name="yes_button" msgid="1120514817091581293">"Sí"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de servicios del operador"</string>
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 0f52a23..e49a0fb 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Otsimine ..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Kuupäev"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Silt"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Seda teavet ei saa värskendada"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Tühista"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Tagasi"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"sule"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Märguanded"</string>
<string name="yes_button" msgid="1120514817091581293">"Jah"</string>
<string name="no_button" msgid="8965841385742548947">"Ei"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operaatori klienditeeninduse numbrid"</string>
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 85aadbf..780a30a 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Bilatzen…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiketa"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Ezin da eguneratu informazioa"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Utzi"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Atzera"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"itxi"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Jakinarazpenak"</string>
<string name="yes_button" msgid="1120514817091581293">"Bai"</string>
<string name="no_button" msgid="8965841385742548947">"Ez"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operadorearen zerbitzu-zenbakiak"</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 0dd668d..946a47f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"در حال جستجو..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"تاریخ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"برچسب"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"این اطلاعات بهروز نمیشود"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"لغو"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"برگشت"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"بستن"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"اعلانها"</string>
<string name="yes_button" msgid="1120514817091581293">"بله"</string>
<string name="no_button" msgid="8965841385742548947">"نه"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"شمارههای سرویس شرکت مخابراتی"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 43da3b6..df0753a 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Haetaan..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Päivämäärä"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Tunniste"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Tietoja ei voi päivittää"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Peru"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Takaisin"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"sulje"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Ilmoitukset"</string>
<string name="yes_button" msgid="1120514817091581293">"Kyllä"</string>
<string name="no_button" msgid="8965841385742548947">"Ei"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operaattorin palvelunumerot"</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 021f981..0d06d89 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Recherche…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Étiquette"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Impossible de mettre à jour ces renseignements"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Annuler"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Précédent"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"fermer"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Avis"</string>
<string name="yes_button" msgid="1120514817091581293">"Oui"</string>
<string name="no_button" msgid="8965841385742548947">"Non"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Numéros de service du fournisseur"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 83cd256..5d14038 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Recherche…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Date"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Ajouter libellé"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Informations non modifiables"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Annuler"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Retour"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"fermer"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifications"</string>
<string name="yes_button" msgid="1120514817091581293">"Oui"</string>
<string name="no_button" msgid="8965841385742548947">"Non"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Numéros de service de l\'opérateur"</string>
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index f1d8c95..9be98dd 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Buscando..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiqueta"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Non se pode actualizar esta información"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancelar"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Volver"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"pechar"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificacións"</string>
<string name="yes_button" msgid="1120514817091581293">"Si"</string>
<string name="no_button" msgid="8965841385742548947">"Non"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de servizo do operador"</string>
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index b56493c..62d7ea3 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"શોધી રહ્યું છે..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"તારીખ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"લેબલ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"આ માહિતી અપડેટ કરી શકાતી નથી"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"રદ કરો"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"પાછળ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"બંધ કરો"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"સૂચનાઓ"</string>
<string name="yes_button" msgid="1120514817091581293">"હા"</string>
<string name="no_button" msgid="8965841385742548947">"ના"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"મોબાઇલ ઑપરેટરના ફોન નંબર"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 268493f..4303906 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"खोज रहा है…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"तारीख"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"लेबल"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"इस जानकारी में बदलाव नहीं किया जा सकता"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"रद्द करें"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"वापस जाएं"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"बंद करें"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"सूचनाएं"</string>
<string name="yes_button" msgid="1120514817091581293">"हां"</string>
<string name="no_button" msgid="8965841385742548947">"नहीं"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"मोबाइल और इंटरनेट सेवा वाली कंपनी के नंबर"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 6557812..03a6557 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Pretraživanje..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Oznaka"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Ti se podaci ne mogu ažurirati"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Odustani"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Natrag"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zatvaranje"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Obavijesti"</string>
<string name="yes_button" msgid="1120514817091581293">"Da"</string>
<string name="no_button" msgid="8965841385742548947">"Ne"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Servisni brojevi operatera"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 3d562b7..80fa653 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Keresés..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Dátum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Címke"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Ez az információ nem módosítható"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Mégse"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Vissza"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"bezárás"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Értesítések"</string>
<string name="yes_button" msgid="1120514817091581293">"Igen"</string>
<string name="no_button" msgid="8965841385742548947">"Nem"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Szolgáltatói számok"</string>
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 9762b8c..4089d4d 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Որոնում..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Ամսաթիվ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Պիտակ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Այս տվյալները հնարավոր չէ թարմացնել"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Չեղարկել"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Հետ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"փակել"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Ծանուցումներ"</string>
<string name="yes_button" msgid="1120514817091581293">"Այո"</string>
<string name="no_button" msgid="8965841385742548947">"Ոչ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Օպերատորի ծառայության հեռախոսահամարներ"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 731f79a..6f2495b 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Menelusuri..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Tanggal"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Beri Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Tidak dapat memperbarui info ini"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Batal"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Kembali"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"tutup"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifikasi"</string>
<string name="yes_button" msgid="1120514817091581293">"Ya"</string>
<string name="no_button" msgid="8965841385742548947">"Tidak"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Nomor layanan operator"</string>
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 87cb54e..7aca09a 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Leitar…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Dagsetning"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Flokkur"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Ekki er hægt að uppfæra þessar upplýsingar"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Hætta við"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Til baka"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"loka"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Tilkynningar"</string>
<string name="yes_button" msgid="1120514817091581293">"Já"</string>
<string name="no_button" msgid="8965841385742548947">"Nei"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Þjónustunúmer símafyrirtækis"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 7517bda..a17a424 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Ricerca..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etichetta"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Impossibile aggiornare queste informazioni"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Annulla"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Indietro"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"chiudi"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notifiche"</string>
<string name="yes_button" msgid="1120514817091581293">"Sì"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Numeri di servizio degli operatori"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index cdefb2e..d868cea 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"מחפש..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"תאריך"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"תווית"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"אי אפשר לשנות את המידע הזה"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ביטול"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"הקודם"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"סגירה"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"הודעות"</string>
<string name="yes_button" msgid="1120514817091581293">"כן"</string>
<string name="no_button" msgid="8965841385742548947">"לא"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"מספרי השירות של ספק הסלולר"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 7d7cac5..97b7c29 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"検索しています..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"日付"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ラベル"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"この情報は更新できません"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"キャンセル"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"戻る"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"閉じる"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"通知"</string>
<string name="yes_button" msgid="1120514817091581293">"はい"</string>
<string name="no_button" msgid="8965841385742548947">"いいえ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"携帯通信会社のサービス番号"</string>
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 2a2152e..eb6821c 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"ძიება..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"თარიღი"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ლეიბლი"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ამ ინფორმაციის განახლება შეუძლებელია"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"გაუქმება"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"უკან"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"დახურვა"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"შეტყობინებები"</string>
<string name="yes_button" msgid="1120514817091581293">"დიახ"</string>
<string name="no_button" msgid="8965841385742548947">"არა"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"ოპერატორის სერვისის ნომრები"</string>
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 4563946..ea0ee62 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Іздеуде…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Күні"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Белгі"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Бұл ақпаратты жаңарту мүмкін емес"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Жабу"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Артқа"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"жабу"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Хабарландырулар"</string>
<string name="yes_button" msgid="1120514817091581293">"Иә"</string>
<string name="no_button" msgid="8965841385742548947">"Жоқ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Оператордың қызмет көрсету нөмірлері"</string>
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index b788464..be57b04 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"កំពុងរក..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"កាលបរិច្ឆេទ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ស្លាក"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"មិនអាចធ្វើបច្ចុប្បន្នភាពព័ត៌មាននេះបានទេ"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"បោះបង់"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ថយក្រោយ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"បិទ"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"ការជូនដំណឹង"</string>
<string name="yes_button" msgid="1120514817091581293">"បាទ/ចាស"</string>
<string name="no_button" msgid="8965841385742548947">"ទេ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"លេខក្រុមហ៊ុនសេវាទូរសព្ទ"</string>
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 361ecc2..c7f349f 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"ಹುಡುಕಲಾಗುತ್ತಿದೆ…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"ದಿನಾಂಕ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ಲೇಬಲ್"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ಈ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ರದ್ದುಮಾಡಿ"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ಹಿಂದೆ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ಮುಚ್ಚು"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"ಅಧಿಸೂಚನೆಗಳು"</string>
<string name="yes_button" msgid="1120514817091581293">"ಹೌದು"</string>
<string name="no_button" msgid="8965841385742548947">"ಇಲ್ಲ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"ವಾಹಕ ಸೇವೆಗಳ ಸಂಖ್ಯೆಗಳು"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 5554707..1a5ac8e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"검색 중…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"날짜"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"라벨"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"아래의 정보는 업데이트할 수 없습니다"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"취소"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"뒤로"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"닫기"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"알림"</string>
<string name="yes_button" msgid="1120514817091581293">"예"</string>
<string name="no_button" msgid="8965841385742548947">"아니요"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"이동통신사 서비스 전화번호"</string>
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 990f24e..9343407 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Изделүүдө…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Энбелги"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Бул маалымат жаңыртылбай жатат"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Жок"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Артка"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"жабуу"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Билдирмелер"</string>
<string name="yes_button" msgid="1120514817091581293">"Ооба"</string>
<string name="no_button" msgid="8965841385742548947">"Жок"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Оператордун кызмат номерлери"</string>
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 3af69d8..9cc1b76 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"ກຳລັງຊອກຫາ..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"ວັນທີ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ປ້າຍກຳກັບ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ບໍ່ສາມາດອັບເດດຂໍ້ມູນນີ້ໄດ້"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ຍົກເລີກ"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ກັບຄືນ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ປິດ"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"ການແຈ້ງເຕືອນ"</string>
<string name="yes_button" msgid="1120514817091581293">"ແມ່ນ"</string>
<string name="no_button" msgid="8965841385742548947">"ບໍ່"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"ໝາຍເລກບໍລິການຂອງຜູ້ໃຫ້ບໍລິການ"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index ab8972e..ea79f2f 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Ieškoma…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiketė"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Negalima atnaujinti šios informacijos"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Atšaukti"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Atgal"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"uždaryti"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Pranešimai"</string>
<string name="yes_button" msgid="1120514817091581293">"Taip"</string>
<string name="no_button" msgid="8965841385742548947">"Ne"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operatoriaus paslaugų numeriai"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index f7406b4..7df5b4e 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Notiek meklēšana..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datums"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Iezīme"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Nevar atjaunināt šo informāciju"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Atcelt"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Atpakaļ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"aizvērt"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Paziņojumi"</string>
<string name="yes_button" msgid="1120514817091581293">"Jā"</string>
<string name="no_button" msgid="8965841385742548947">"Nē"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operatora dienesta tālruņa numuri"</string>
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 1124e11..959e2e2 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Се пребарува..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Датум"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Етикета"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Информацииве не може да се ажурираат"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Откажи"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Назад"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"затвори"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Известувања"</string>
<string name="yes_button" msgid="1120514817091581293">"Да"</string>
<string name="no_button" msgid="8965841385742548947">"Не"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Броеви за услуги на операторот"</string>
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 02e4bc6..063e8d2 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"തിരയുന്നു…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"തീയതി"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ലേബൽ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ഈ വിവരങ്ങൾ അപ്ഡേറ്റ് ചെയ്യാനാകില്ല"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"റദ്ദാക്കുക"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"മടങ്ങുക"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"അടയ്ക്കുക"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"അറിയിപ്പുകൾ"</string>
<string name="yes_button" msgid="1120514817091581293">"അതെ"</string>
<string name="no_button" msgid="8965841385742548947">"ഇല്ല"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Carrier Service നമ്പറുകൾ"</string>
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 6de8f8a..eb84601 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Хайж байна..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Огноо"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Шошго"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Энэ мэдээллийг шинэчлэх боломжгүй байна"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Цуцлах"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Буцах"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"хаах"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Мэдэгдэл"</string>
<string name="yes_button" msgid="1120514817091581293">"Тийм"</string>
<string name="no_button" msgid="8965841385742548947">"Үгүй"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Оператор компанийн үйлчилгээний дугаар"</string>
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index ac65941..c3fde66 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"शोधत आहे..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"तारीख"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"लेबल"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ही माहिती अपडेट करू शकत नाही"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"रद्द करा"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"परत"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"बंद करा"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"सूचना"</string>
<string name="yes_button" msgid="1120514817091581293">"होय"</string>
<string name="no_button" msgid="8965841385742548947">"नाही"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"वाहक सेवा नंबर"</string>
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 876ca57..287ea0c 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Mencari..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Tarikh"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Tidak dapat mengemaskinikan maklumat ini"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Batal"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Kembali"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"tutup"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Pemberitahuan"</string>
<string name="yes_button" msgid="1120514817091581293">"Ya"</string>
<string name="no_button" msgid="8965841385742548947">"Tidak"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Nombor perkhidmatan operator"</string>
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index b8dfd3a..2d53f9a 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"ရှာဖွေနေသည်…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"ရက်စွဲ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"အညွှန်း"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ဤအချက်အလက်ကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"မလုပ်တော့"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"နောက်သို့"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ပိတ်ရန်"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"အကြောင်းကြားချက်များ"</string>
<string name="yes_button" msgid="1120514817091581293">"Yes"</string>
<string name="no_button" msgid="8965841385742548947">"No"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"မိုဘိုင်းဖုန်းကုမ္ပဏီနံပါတ်များ"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 017fbf6..9b649ec 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Søker …"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Dato"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etikett"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Kan ikke oppdatere denne informasjonen"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Avbryt"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Tilbake"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"lukk"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Varsler"</string>
<string name="yes_button" msgid="1120514817091581293">"Ja"</string>
<string name="no_button" msgid="8965841385742548947">"Nei"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operatørtjenestenumre"</string>
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index ba033aa..aa91ddf 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"खोजिँदै छ..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"मिति"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"लेबल"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"यो जानकारी सम्पादन गर्न सकिँदैन"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"रद्द गर्नुहोस्"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"पछाडि"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"बन्द गर्नुहोस्"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"सूचनाहरू"</string>
<string name="yes_button" msgid="1120514817091581293">"हुन्छ"</string>
<string name="no_button" msgid="8965841385742548947">"हुँदैन"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"मोबाइल सेवा प्रदायकका सर्भिस नम्बरहरू"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d19567a..e9fe9b1 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Zoeken..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Labelen"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"U kunt deze informatie niet updaten"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Annuleren"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Terug"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"sluiten"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Meldingen"</string>
<string name="yes_button" msgid="1120514817091581293">"Ja"</string>
<string name="no_button" msgid="8965841385742548947">"Nee"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Providerservicenummers"</string>
</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index dd2e50e..95c97ac 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"ସର୍ଚ୍ଚ କରାଯାଉଛି…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"ତାରିଖ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ଲେବଲ୍"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ଏହି ସୂଚନା ଅପଡେଟ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ବାତିଲ୍ କରନ୍ତୁ"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ପଛକୁ ଫେରନ୍ତୁ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ବନ୍ଦ କରନ୍ତୁ"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"ବିଜ୍ଞପ୍ତି"</string>
<string name="yes_button" msgid="1120514817091581293">"ହଁ"</string>
<string name="no_button" msgid="8965841385742548947">"ନାହିଁ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"କ୍ୟାରିଅର୍ ସେବା ନମ୍ବର"</string>
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 790bec6..0e74029 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"ਖੋਜ ਰਿਹਾ ਹੈ..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"ਤਾਰੀਖ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ਲੇਬਲ ਲਗਾਓ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ਇਸ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ਰੱਦ ਕਰੋ"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ਪਿੱਛੇ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ਬੰਦ ਕਰੋ"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"ਸੂਚਨਾਵਾਂ"</string>
<string name="yes_button" msgid="1120514817091581293">"ਹਾਂ"</string>
<string name="no_button" msgid="8965841385742548947">"ਨਹੀਂ"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"ਕੈਰੀਅਰ ਸੇਵਾ ਨੰਬਰ"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index b179715..8c228df 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Wyszukiwanie…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Dodaj etykietę"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Nie można zaktualizować tych informacji"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Anuluj"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Wstecz"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zamknij"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Powiadomienia"</string>
<string name="yes_button" msgid="1120514817091581293">"Tak"</string>
<string name="no_button" msgid="8965841385742548947">"Nie"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Numery obsługi klienta u operatora"</string>
</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index a39207b..f63a988 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Pesquisando..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Marcador"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Não é possível atualizar a informação"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancelar"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Voltar"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"fechar"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificações"</string>
<string name="yes_button" msgid="1120514817091581293">"Sim"</string>
<string name="no_button" msgid="8965841385742548947">"Não"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de serviço da operadora"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 2fb9814..2cc5aba 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"A pesquisar..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiqueta"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Não é possível atualizar estas informações"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancelar"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Anterior"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"fechar"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificações"</string>
<string name="yes_button" msgid="1120514817091581293">"Sim"</string>
<string name="no_button" msgid="8965841385742548947">"Não"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de serviço do operador"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index a39207b..f63a988 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Pesquisando..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Marcador"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Não é possível atualizar a informação"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Cancelar"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Voltar"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"fechar"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificações"</string>
<string name="yes_button" msgid="1120514817091581293">"Sim"</string>
<string name="no_button" msgid="8965841385742548947">"Não"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Números de serviço da operadora"</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 3f29e11..aa9fa60 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Se caută..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Dată"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etichetă"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Aceste informații nu pot fi actualizate"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Anulați"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Înapoi"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"închideți"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Notificări"</string>
<string name="yes_button" msgid="1120514817091581293">"Da"</string>
<string name="no_button" msgid="8965841385742548947">"Nu"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Numere pentru servicii ale operatorului"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index ccfdcd3..586207f 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Поиск…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Ярлык"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Эти данные невозможно обновить"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Отмена"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Назад"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"закрыть"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Уведомления"</string>
<string name="yes_button" msgid="1120514817091581293">"Да"</string>
<string name="no_button" msgid="8965841385742548947">"Нет"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Сервисные номера оператора"</string>
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index af04fa2..9ceb420 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"සොයමින්..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"දිනය"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ලේබලය"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"මෙම තතු යාවත්කාලීන කළ නොහැක"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"අවලංගු කරන්න"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"ආපසු"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"වසන්න"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"දැනුම් දීම්"</string>
<string name="yes_button" msgid="1120514817091581293">"ඔව්"</string>
<string name="no_button" msgid="8965841385742548947">"නැත"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"වාහක සේවා අංක"</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 8ec5369..d9823b9 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Hľadá sa…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Dátum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Štítok"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Tieto údaje nemôžete aktualizovať"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Zrušiť"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Späť"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zavrieť"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Upozornenia"</string>
<string name="yes_button" msgid="1120514817091581293">"Áno"</string>
<string name="no_button" msgid="8965841385742548947">"Nie"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Služobné čísla operátorov"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 1c5c3d3..a232ab2 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Iskanje ..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Dodaj oznako"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Teh podatkov ni mogoče posodobiti"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Prekliči"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Nazaj"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"zapri"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Obvestila"</string>
<string name="yes_button" msgid="1120514817091581293">"Da"</string>
<string name="no_button" msgid="8965841385742548947">"Ne"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operaterjeve številke za storitve"</string>
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 039dfa5..91e3885 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Po kërkon..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Data"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiketa"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Këto informacione nuk mund të përditësohen"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Anulo"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Prapa"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"mbyll"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Njoftime"</string>
<string name="yes_button" msgid="1120514817091581293">"Po"</string>
<string name="no_button" msgid="8965841385742548947">"Jo"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Numrat e shërbimit të operatorit celular"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index f1558ac..96df34e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Претражује се..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Датум"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Ознака"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Не можете да ажурирате ове информације"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Откажи"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Назад"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"затворите"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Обавештења"</string>
<string name="yes_button" msgid="1120514817091581293">"Да"</string>
<string name="no_button" msgid="8965841385742548947">"Не"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Услужни бројеви мобилног оператера"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 057492c..12263d0 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Söker …"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etikett"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Det går inte att uppdatera den här informationen"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Avbryt"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Tillbaka"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"stäng"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Meddelanden"</string>
<string name="yes_button" msgid="1120514817091581293">"Ja"</string>
<string name="no_button" msgid="8965841385742548947">"Nej"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operatörens tjänstenummer"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 5b04626..ae6be25 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Inatafuta…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Tarehe"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Lebo"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Huwezi kusasisha maelezo haya"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Ghairi"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Rudi nyuma"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"funga"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Arifa"</string>
<string name="yes_button" msgid="1120514817091581293">"Ndiyo"</string>
<string name="no_button" msgid="8965841385742548947">"La"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Nambari za mtoa huduma"</string>
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index ae2829a..491f246 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"தேடுகிறது..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"தேதி"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"லேபிளைச் சேர்"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"இந்தத் தகவலை மாற்ற முடியாது"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ரத்துசெய்யும் பட்டன்"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"முந்தையதற்குச் செல்லும் பட்டன்"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"மூடும்"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"அறிவிப்புகள்"</string>
<string name="yes_button" msgid="1120514817091581293">"ஆம்"</string>
<string name="no_button" msgid="8965841385742548947">"இல்லை"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"மொபைல் நிறுவனத்தின் சேவை எண்கள்"</string>
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index a65218d..66db022 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"శోధిస్తోంది..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"తేదీ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"లేబుల్"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"ఈ సమాచారాన్ని అప్డేట్ చేయడం సాధ్యం కాదు"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"రద్దు చేస్తుంది"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"వెనుకకు వెళ్తుంది"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"మూసివేస్తుంది"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"నోటిఫికేషన్లు"</string>
<string name="yes_button" msgid="1120514817091581293">"అవును"</string>
<string name="no_button" msgid="8965841385742548947">"కాదు"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"క్యారియర్ సర్వీస్ నంబర్లు"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 4b6dbfa..df03f15 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"กำลังค้นหา..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"วันที่"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"ป้ายกำกับ"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"อัปเดตข้อมูลนี้ไม่ได้"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"ยกเลิก"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"กลับ"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"ปิด"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"การแจ้งเตือน"</string>
<string name="yes_button" msgid="1120514817091581293">"ใช่"</string>
<string name="no_button" msgid="8965841385742548947">"ไม่"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"หมายเลขบริการของผู้ให้บริการ"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index d2e4531..66694db 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Naghahanap…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Petsa"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Lagyan ng label"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Hindi ma-update ang impormasyong ito"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Kanselahin"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Bumalik"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"isara"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Mga Notification"</string>
<string name="yes_button" msgid="1120514817091581293">"Oo"</string>
<string name="no_button" msgid="8965841385742548947">"Hindi"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Mga numero ng serbisyo ng carrier"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 3f74c89..4e67f70 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Aranıyor…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Tarih"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Etiket"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Bu bilgiler güncellenemez"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"İptal edilir"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Geri"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"kapatın"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Bildirimler"</string>
<string name="yes_button" msgid="1120514817091581293">"Evet"</string>
<string name="no_button" msgid="8965841385742548947">"Hayır"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operatör hizmet numaraları"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 43a099a..1b3173a 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Пошук..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Мітка"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Неможливо оновити цю інформацію"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Скасувати"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Назад"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"закрити"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Сповіщення"</string>
<string name="yes_button" msgid="1120514817091581293">"Так"</string>
<string name="no_button" msgid="8965841385742548947">"Ні"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Сервісні номери оператора"</string>
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 3ba641b..5617e22 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"تلاش کر رہا ہے…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"تاریخ"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"لیبل"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"اس معلومات کو اپ ڈیٹ نہیں کر سکتے"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"منسوخ کریں"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"پیچھے"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"بند کریں"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"اطلاعات"</string>
<string name="yes_button" msgid="1120514817091581293">"ہاں"</string>
<string name="no_button" msgid="8965841385742548947">"نہیں"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"کیرئیر سروس نمبرز"</string>
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 4cfcc20..80b2dc7 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Qidirilmoqda…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Sana"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Yorliq"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Bu axborotni yangilash imkonsiz"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Bekor qilish"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Orqaga"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"yopish"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Bildirishnomalar"</string>
<string name="yes_button" msgid="1120514817091581293">"Ha"</string>
<string name="no_button" msgid="8965841385742548947">"Yo‘q"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Operator xizmat raqamlari"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 7c1c724..d6a3783 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Đang tìm kiếm…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Ngày"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Nhãn"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Không thể cập nhật thông tin này"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Hủy"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Quay lại"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"đóng"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Thông báo"</string>
<string name="yes_button" msgid="1120514817091581293">"Có"</string>
<string name="no_button" msgid="8965841385742548947">"Không"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Số dịch vụ của nhà mạng"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 55c18be..cf30f0c 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"正在搜索..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"日期"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"标签"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"无法更新此信息"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"取消"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"返回"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"关闭"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"通知"</string>
<string name="yes_button" msgid="1120514817091581293">"是"</string>
<string name="no_button" msgid="8965841385742548947">"否"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"运营商服务号码"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index b0d1a20..14bceb9 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"正在搜尋..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"日期"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"標籤"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"無法更新此資料"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"取消"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"返回"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"關閉"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"通知"</string>
<string name="yes_button" msgid="1120514817091581293">"是"</string>
<string name="no_button" msgid="8965841385742548947">"否"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"流動網絡供應商服務電話號碼"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 80b8941..f0b06a3 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"搜尋中…"</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"日期"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"標籤"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"無法更新這項資訊"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"取消"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"返回"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"關閉"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"通知"</string>
<string name="yes_button" msgid="1120514817091581293">"是"</string>
<string name="no_button" msgid="8965841385742548947">"否"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"電信業者服務電話號碼"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index e578e4b..d5432a1 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -144,6 +144,7 @@
<string name="search_results_searching" msgid="1373859095361975648">"Iyasesha..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Idethi"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Ilebula"</string>
+ <string name="editor_uneditable_section_title" msgid="4022820593578859556">"Ayikwazi ukubuyekeza lolu lwazi"</string>
<string name="cancel_button_content_description" msgid="7407595608883650004">"Khansela"</string>
<string name="back_arrow_content_description" msgid="6727142616775523605">"Phindela emuva"</string>
<string name="action_menu_back_from_edit_select" msgid="7911226757462657242">"vala"</string>
@@ -492,4 +493,5 @@
<string name="contacts_default_notification_channel" msgid="5116916969874075866">"Izaziso"</string>
<string name="yes_button" msgid="1120514817091581293">"Yebo"</string>
<string name="no_button" msgid="8965841385742548947">"Cha"</string>
+ <string name="sdn_contacts_directory_search_label" msgid="9146122809408008443">"Izinombolo zesevisi zenkampani yenethiwekhi"</string>
</resources>
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index 2dd0e73..c4c0152 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -28,6 +28,10 @@
<!-- File Authority for AOSP Contacts files -->
<string name="contacts_file_provider_authority">com.android.contacts.files</string>
+
+ <!-- SDN Authority for carrier SDN -->
+ <string name="contacts_sdn_provider_authority">com.android.contacts.sdn</string>
+
<!-- Flag indicating whether Contacts app is allowed to import contacts -->
<bool name="config_allow_import_from_vcf_file">true</bool>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index a4b8b4b..f22eaba 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -44,6 +44,9 @@
<!-- An ID to be used for contents of a custom dialog so that its state be preserved -->
<item type="id" name="custom_dialog_content" />
+ <!-- An ID to be used for tagging text for copy in legacy fields. -->
+ <item name="text_to_copy" type="id"/>
+
<!-- Menu group ID for settings and help & feedback -->
<item type="id" name="nav_misc" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d87be0b..fc24b10 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -425,6 +425,9 @@
<!-- The button to add an label field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
<string name="group_edit_field_hint_text">Label</string>
+ <!-- Editor section title to show below shown editor fields are not editable. Users are only allowed to delete them. [CHAR LIMIT=NONE] -->
+ <string name="editor_uneditable_section_title">Can’t update this info</string>
+
<!-- Content description for a cancel button. [CHAR LIMIT=NONE] -->
<string name="cancel_button_content_description">Cancel</string>
@@ -1549,4 +1552,7 @@
<!-- Text of Negative Button in dialog -->
<string name="no_button">No</string>
+ <!-- The label to display as a section header in the contact list for an SDN directory [CHAR LIMIT=40] -->
+ <string name="sdn_contacts_directory_search_label">Carrier service numbers</string>
+
</resources>
\ No newline at end of file
diff --git a/src/com/android/contacts/activities/RequestPermissionsActivity.java b/src/com/android/contacts/activities/RequestPermissionsActivity.java
index ebcd9b3..7994e98 100644
--- a/src/com/android/contacts/activities/RequestPermissionsActivity.java
+++ b/src/com/android/contacts/activities/RequestPermissionsActivity.java
@@ -70,6 +70,7 @@
permissions.add(permission.CALL_PHONE);
permissions.add(permission.READ_PHONE_NUMBERS);
permissions.add(permission.READ_PHONE_STATE);
+ permissions.add(permission.READ_CALL_LOG);
}
sRequiredPermissions = permissions.toArray(new String[0]);
}
diff --git a/src/com/android/contacts/editor/Editor.java b/src/com/android/contacts/editor/Editor.java
index c02816a..6ab06bd 100644
--- a/src/com/android/contacts/editor/Editor.java
+++ b/src/com/android/contacts/editor/Editor.java
@@ -114,4 +114,10 @@
*/
public void editNewlyAddedField();
+ /**
+ * Marks the Editor field as a legacy field. Legacy fields are deprecated MIME types
+ * which are not fully supported in the editor.
+ * Adding or editing legacy field are not supported.
+ */
+ void setLegacyField(boolean isLegacyField);
}
diff --git a/src/com/android/contacts/editor/EditorUiUtils.java b/src/com/android/contacts/editor/EditorUiUtils.java
index 35f107e..3dac5bb 100644
--- a/src/com/android/contacts/editor/EditorUiUtils.java
+++ b/src/com/android/contacts/editor/EditorUiUtils.java
@@ -57,6 +57,7 @@
import com.android.contacts.util.MaterialColorMapUtils.MaterialPalette;
import com.android.contacts.widget.QuickContactImageView;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import java.io.FileNotFoundException;
@@ -95,6 +96,9 @@
mimetypeLayoutMap.put(Event.CONTENT_ITEM_TYPE, R.layout.event_field_editor_view);
}
+ public static final ImmutableList<String> LEGACY_MIME_TYPE =
+ ImmutableList.of(Im.CONTENT_ITEM_TYPE, SipAddress.CONTENT_ITEM_TYPE);
+
/**
* Fetches a layout for a given mimetype.
*
diff --git a/src/com/android/contacts/editor/KindSectionView.java b/src/com/android/contacts/editor/KindSectionView.java
index 5d49064..28eeaf2 100644
--- a/src/com/android/contacts/editor/KindSectionView.java
+++ b/src/com/android/contacts/editor/KindSectionView.java
@@ -48,6 +48,13 @@
*/
public class KindSectionView extends LinearLayout {
+ /** Callbacks for hosts of {@link KindSectionView}s. */
+ public interface Listener {
+
+ /** Invoked when all fields in a legacy {@link KindSectionView} are removed. */
+ void onEmptyLegacyKindSectionView();
+ }
+
/**
* Marks a name as super primary when it is changed.
*
@@ -58,21 +65,21 @@
private final ValuesDelta mValuesDelta;
private final long mRawContactId;
- private final RawContactEditorView.Listener mListener;
+ private final RawContactEditorView.Listener mEditorViewListener;
public StructuredNameEditorListener(ValuesDelta valuesDelta, long rawContactId,
- RawContactEditorView.Listener listener) {
+ RawContactEditorView.Listener editorViewListener) {
mValuesDelta = valuesDelta;
mRawContactId = rawContactId;
- mListener = listener;
+ mEditorViewListener = editorViewListener;
}
@Override
public void onRequest(int request) {
if (request == Editor.EditorListener.FIELD_CHANGED) {
mValuesDelta.setSuperPrimary(true);
- if (mListener != null) {
- mListener.onNameFieldChanged(mRawContactId, mValuesDelta);
+ if (mEditorViewListener != null) {
+ mEditorViewListener.onNameFieldChanged(mRawContactId, mValuesDelta);
}
} else if (request == Editor.EditorListener.FIELD_TURNED_EMPTY) {
mValuesDelta.setSuperPrimary(false);
@@ -119,6 +126,11 @@
@Override
public void onDeleteRequested(Editor editor) {
+ if (mIsLegacyField && mEditors.getChildCount() == 1) {
+ editor.deleteEditor();
+ mListener.onEmptyLegacyKindSectionView();
+ return;
+ }
if (mShowOneEmptyEditor && mEditors.getChildCount() == 1) {
// If there is only 1 editor in the section, then don't allow the user to
// delete it. Just clear the fields in the editor.
@@ -152,11 +164,13 @@
private KindSectionData mKindSectionData;
private ViewIdGenerator mViewIdGenerator;
- private RawContactEditorView.Listener mListener;
+ private RawContactEditorView.Listener mEditorViewListener;
+ private Listener mListener;
private boolean mIsUserProfile;
private boolean mShowOneEmptyEditor = false;
private boolean mHideIfEmpty = true;
+ private boolean mIsLegacyField = false;
private LayoutInflater mLayoutInflater;
private ViewGroup mEditors;
@@ -227,6 +241,13 @@
}
/**
+ * When {@code isLegacyField} is true, prevent users from editing the field.
+ */
+ void setLegacyField(boolean isLegacyField) {
+ this.mIsLegacyField = isLegacyField;
+ }
+
+ /**
* Whether this is a name kind section view and all name fields (structured, phonetic,
* and nicknames) are empty.
*/
@@ -277,10 +298,14 @@
* Empty name editors are never added and at least one structured name editor is always
* displayed, even if it is empty.
*/
- public void setState(KindSectionData kindSectionData,
- ViewIdGenerator viewIdGenerator, RawContactEditorView.Listener listener) {
+ public void setState(
+ KindSectionData kindSectionData,
+ ViewIdGenerator viewIdGenerator,
+ RawContactEditorView.Listener editorViewListener,
+ Listener listener) {
mKindSectionData = kindSectionData;
mViewIdGenerator = viewIdGenerator;
+ mEditorViewListener = editorViewListener;
mListener = listener;
// Set the icon using the DataKind
@@ -292,6 +317,9 @@
mIcon.setContentDescription(dataKind.titleRes == -1 || dataKind.titleRes == 0
? "" : getResources().getString(dataKind.titleRes));
}
+ if (mIsLegacyField) {
+ mIcon.setEnabled(false);
+ }
}
rebuildFromState();
@@ -359,7 +387,7 @@
if (!mIsUserProfile) {
// Don't set super primary for the me contact
nameView.setEditorListener(new StructuredNameEditorListener(
- nameValuesDelta, rawContactDelta.getRawContactId(), mListener));
+ nameValuesDelta, rawContactDelta.getRawContactId(), mEditorViewListener));
}
nameView.setDeletable(false);
nameView.setValues(accountType.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_NAME),
@@ -414,6 +442,7 @@
view.setEnabled(isEnabled());
if (view instanceof Editor) {
final Editor editor = (Editor) view;
+ editor.setLegacyField(mIsLegacyField);
editor.setDeletable(true);
editor.setEditorListener(editorListener);
editor.setValues(dataKind, valuesDelta, rawContactDelta, !dataKind.editable,
@@ -593,4 +622,8 @@
}
return emptyEditors;
}
+
+ public boolean isEditorEmpty() {
+ return mKindSectionData.getVisibleValuesDeltas().isEmpty();
+ }
}
diff --git a/src/com/android/contacts/editor/LabeledEditorView.java b/src/com/android/contacts/editor/LabeledEditorView.java
index df4c5f9..3df3222 100644
--- a/src/com/android/contacts/editor/LabeledEditorView.java
+++ b/src/com/android/contacts/editor/LabeledEditorView.java
@@ -81,6 +81,8 @@
private boolean mIsDeletable = true;
private boolean mIsAttachedToWindow;
+ protected boolean mIsLegacyField;
+
private EditType mType;
private ViewIdGenerator mViewIdGenerator;
@@ -264,8 +266,8 @@
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
- mLabel.setEnabled(!mReadOnly && enabled);
- mDelete.setEnabled(!mReadOnly && enabled);
+ mLabel.setEnabled(!mReadOnly && enabled && !mIsLegacyField);
+ mDelete.setEnabled((!mReadOnly && enabled) || mIsLegacyField);
}
public Spinner getLabel() {
@@ -342,6 +344,10 @@
return "";
}
+ public void setLegacyField(boolean mIsLegacyField) {
+ this.mIsLegacyField = mIsLegacyField;
+ }
+
protected void saveValue(String column, String value) {
mEntry.put(column, value);
}
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 19da5bc..755800a 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -50,6 +50,7 @@
import android.widget.ListPopupWindow;
import android.widget.TextView;
+import com.android.contacts.editor.KindSectionView;
import com.android.contacts.GeoUtil;
import com.android.contacts.R;
import com.android.contacts.compat.PhoneNumberUtilsCompat;
@@ -80,7 +81,8 @@
/**
* View to display information from multiple {@link RawContactDelta}s grouped together.
*/
-public class RawContactEditorView extends LinearLayout implements View.OnClickListener {
+public class RawContactEditorView extends LinearLayout implements View.OnClickListener,
+ KindSectionView.Listener {
static final String TAG = "RawContactEditorView";
@@ -218,6 +220,8 @@
private PhotoEditorView mPhotoView;
private ViewGroup mKindSectionViews;
+ private LinearLayout mLegacySectionLinearLayout;
+ private ViewGroup mLegacyKindSectionViews;
private Map<String, KindSectionView> mKindSectionViewMap = new HashMap<>();
private View mMoreFields;
@@ -259,6 +263,8 @@
mPhotoView = (PhotoEditorView) findViewById(R.id.photo_editor);
mKindSectionViews = (LinearLayout) findViewById(R.id.kind_section_views);
+ mLegacySectionLinearLayout = (LinearLayout) findViewById(R.id.legacy_fields_container);
+ mLegacyKindSectionViews = (LinearLayout) findViewById(R.id.legacy_section_views);
mMoreFields = findViewById(R.id.more_fields);
mMoreFields.setOnClickListener(this);
}
@@ -277,6 +283,10 @@
for (int i = 0; i < childCount; i++) {
mKindSectionViews.getChildAt(i).setEnabled(enabled);
}
+ final int legacyChildCount = mLegacyKindSectionViews.getChildCount();
+ for (int i = 0; i < legacyChildCount; i++) {
+ mLegacyKindSectionViews.getChildAt(i).setEnabled(false);
+ }
}
@Override
@@ -447,6 +457,8 @@
mKindSectionViewMap.clear();
mKindSectionViews.removeAllViews();
+ mLegacySectionLinearLayout.setVisibility(View.GONE);
+ mLegacyKindSectionViews.removeAllViews();
mMoreFields.setVisibility(View.VISIBLE);
mMaterialPalette = materialPalette;
@@ -531,7 +543,7 @@
addKindSectionViews();
mMoreFields.setVisibility(hasMoreFields() ? View.VISIBLE : View.GONE);
-
+ addLegacyKindSectionViews();
if (mIsExpanded) showAllFields();
}
@@ -874,6 +886,9 @@
int i = -1;
for (String mimeType : mSortedMimetypes) {
+ if(EditorUiUtils.LEGACY_MIME_TYPE.contains(mimeType)) {
+ continue;
+ }
i++;
// Ignore mime types that we've already handled
if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
@@ -910,7 +925,7 @@
// they will be the only types you add new values to initially for new contacts
kindSectionView.setShowOneEmptyEditor(true);
- kindSectionView.setState(kindSectionData, mViewIdGenerator, mListener);
+ kindSectionView.setState(kindSectionData, mViewIdGenerator, mListener, this);
return kindSectionView;
}
@@ -938,6 +953,55 @@
return false;
}
+ private void addLegacyKindSectionViews() {
+ boolean hasLegacyData = false;
+ for (String mimeType : EditorUiUtils.LEGACY_MIME_TYPE) {
+
+ KindSectionData kindSectionData = mKindSectionDataMap.get(mimeType);
+ if (kindSectionData != null && !kindSectionData.getVisibleValuesDeltas().isEmpty()) {
+ hasLegacyData = true;
+ KindSectionView kindSectionView =
+ inflateLegacyKindSectionView(mKindSectionViews, kindSectionData);
+ mLegacyKindSectionViews.addView(kindSectionView);
+
+ // Keep a pointer to the KindSectionView for each mimeType
+ mKindSectionViewMap.put(mimeType, kindSectionView);
+ }
+ }
+
+ if (hasLegacyData) {
+ mLegacySectionLinearLayout.setVisibility(View.VISIBLE);
+ }
+ }
+
+ private KindSectionView inflateLegacyKindSectionView(
+ ViewGroup viewGroup, KindSectionData kindSectionData) {
+ KindSectionView kindSectionView =
+ (KindSectionView)
+ mLayoutInflater.inflate(
+ R.layout.item_kind_section, viewGroup, /* attachToRoot =*/ false);
+ kindSectionView.setLegacyField(true);
+
+ kindSectionView.setState(kindSectionData, mViewIdGenerator, mListener, this);
+
+ return kindSectionView;
+ }
+
+ @Override
+ public void onEmptyLegacyKindSectionView() {
+ for (int i = mLegacyKindSectionViews.getChildCount() - 1; i >= 0; i--) {
+ View childView = mLegacyKindSectionViews.getChildAt(i);
+ if (childView instanceof KindSectionView
+ && ((KindSectionView) childView).isEditorEmpty()) {
+ mLegacyKindSectionViews.removeViewAt(i);
+ }
+ }
+
+ if (mLegacyKindSectionViews.getChildCount() == 0) {
+ mLegacySectionLinearLayout.setVisibility(View.GONE);
+ }
+ }
+
private static void wlog(String message) {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, message);
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index 28fe87f..d7f9545 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -22,6 +22,8 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.text.Editable;
import android.text.InputType;
@@ -49,6 +51,7 @@
import com.android.contacts.model.account.AccountType.EditField;
import com.android.contacts.model.dataitem.DataKind;
import com.android.contacts.util.PhoneNumberFormatter;
+import com.android.contacts.ClipboardUtils;
/**
* Simple editor that handles labels and any {@link EditField} defined for the
@@ -57,7 +60,6 @@
*/
public class TextFieldsEditorView extends LabeledEditorView {
private static final String TAG = TextFieldsEditorView.class.getSimpleName();
-
private EditText[] mFieldEditTexts = null;
private ViewGroup mFields = null;
protected View mExpansionViewContainer;
@@ -75,6 +77,12 @@
private String mFixedDisplayName = "";
private boolean needInputInitialize;
+ private final OnLongClickListener mOnLongClickListener =
+ v -> {
+ ClipboardUtils.copyText(
+ getContext(), /* label= */ null, (CharSequence) v.getTag(R.id.text_to_copy), true);
+ return true;
+ };
public TextFieldsEditorView(Context context) {
super(context);
@@ -164,7 +172,15 @@
if (mFieldEditTexts != null) {
for (int index = 0; index < mFieldEditTexts.length; index++) {
- mFieldEditTexts[index].setEnabled(!isReadOnly() && enabled);
+ mFieldEditTexts[index].setEnabled(!isReadOnly() && enabled && !mIsLegacyField);
+ if (mIsLegacyField) {
+ mFieldEditTexts[index].setFocusable(false);
+ mFieldEditTexts[index].setClickable(false);
+ mFieldEditTexts[index].setLongClickable(false);
+ }
+ }
+ if (mIsLegacyField && mFieldEditTexts.length > 0) {
+ setOnLongClickListenerOnContainer();
}
}
if (mExpansionView != null) {
@@ -172,6 +188,18 @@
}
}
+ /**
+ * Attaches OnLongClickLister to fields LinearLayout that allow user copy the EditText text on
+ * long press.
+ */
+ private void setOnLongClickListenerOnContainer() {
+ mFields.setFocusable(true);
+ mFields.setLongClickable(true);
+ // Current legacy mimetypes support exactly 1 field
+ mFields.setTag(R.id.text_to_copy, mFieldEditTexts[0].getText().toString());
+ mFields.setOnLongClickListener(mOnLongClickListener);
+ }
+
private OnFocusChangeListener mTextFocusChangeListener = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
diff --git a/src/com/android/contacts/sdn/SdnProvider.kt b/src/com/android/contacts/sdn/SdnProvider.kt
new file mode 100644
index 0000000..4dd3578
--- /dev/null
+++ b/src/com/android/contacts/sdn/SdnProvider.kt
@@ -0,0 +1,296 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.sdn
+
+import android.content.ContentProvider
+import android.content.ContentValues
+import android.content.Context.TELECOM_SERVICE
+import android.content.UriMatcher
+import android.database.Cursor
+import android.database.MatrixCursor
+import android.net.Uri
+import android.provider.ContactsContract
+import android.provider.ContactsContract.CommonDataKinds.Phone
+import android.provider.ContactsContract.CommonDataKinds.StructuredName
+import android.provider.ContactsContract.Contacts
+import android.provider.ContactsContract.Data
+import android.provider.ContactsContract.Directory
+import android.provider.ContactsContract.RawContacts
+import android.telecom.TelecomManager
+import android.util.Log
+import com.android.contacts.R
+
+/** Provides a way to show SDN data in search suggestions and caller id lookup. */
+class SdnProvider : ContentProvider() {
+
+ private lateinit var sdnRepository: SdnRepository
+ private lateinit var uriMatcher: UriMatcher
+
+ override fun onCreate(): Boolean {
+ Log.i(TAG, "onCreate")
+ val sdnProviderAuthority = requireContext().getString(R.string.contacts_sdn_provider_authority)
+
+ uriMatcher =
+ UriMatcher(UriMatcher.NO_MATCH).apply {
+ addURI(sdnProviderAuthority, "directories", DIRECTORIES)
+ addURI(sdnProviderAuthority, "contacts/filter/*", FILTER)
+ addURI(sdnProviderAuthority, "data/phones/filter/*", FILTER)
+ addURI(sdnProviderAuthority, "contacts/lookup/*/entities", CONTACT_LOOKUP)
+ addURI(
+ sdnProviderAuthority,
+ "contacts/lookup/*/#/entities",
+ CONTACT_LOOKUP_WITH_CONTACT_ID,
+ )
+ addURI(sdnProviderAuthority, "phone_lookup/*", PHONE_LOOKUP)
+ }
+ sdnRepository = SdnRepository(requireContext())
+ return true
+ }
+
+ override fun query(
+ uri: Uri,
+ projection: Array<out String>?,
+ selection: String?,
+ selectionArgs: Array<out String>?,
+ sortOrder: String?,
+ ): Cursor? {
+ if (projection == null) return null
+
+ val match = uriMatcher.match(uri)
+
+ if (match == DIRECTORIES) {
+ return handleDirectories(projection)
+ }
+
+ if (
+ !isCallerAllowed(uri.getQueryParameter(Directory.CALLER_PACKAGE_PARAM_KEY)) ||
+ !sdnRepository.isSdnPresent()
+ ) {
+ return null
+ }
+
+ val accountName = uri.getQueryParameter(RawContacts.ACCOUNT_NAME)
+ val accountType = uri.getQueryParameter(RawContacts.ACCOUNT_TYPE)
+ if (ACCOUNT_NAME != accountName || ACCOUNT_TYPE != accountType) {
+ Log.e(TAG, "Received an invalid account")
+ return null
+ }
+
+ return when (match) {
+ FILTER -> handleFilter(projection, uri)
+ CONTACT_LOOKUP -> handleLookup(projection, uri.pathSegments[2])
+ CONTACT_LOOKUP_WITH_CONTACT_ID ->
+ handleLookup(projection, uri.pathSegments[2], uri.pathSegments[3])
+ PHONE_LOOKUP -> handlePhoneLookup(projection, uri.pathSegments[1])
+ else -> null
+ }
+ }
+
+ override fun getType(uri: Uri) = Contacts.CONTENT_ITEM_TYPE
+
+ override fun insert(uri: Uri, values: ContentValues?): Uri? {
+ throw UnsupportedOperationException("Insert is not supported.")
+ }
+
+ override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int {
+ throw UnsupportedOperationException("Delete is not supported.")
+ }
+
+ override fun update(
+ uri: Uri,
+ values: ContentValues?,
+ selection: String?,
+ selectionArgs: Array<out String>?,
+ ): Int {
+ throw UnsupportedOperationException("Update is not supported.")
+ }
+
+ private fun handleDirectories(projection: Array<out String>): Cursor {
+ // logger.atInfo().log("Creating directory cursor")
+
+ return MatrixCursor(projection).apply {
+ addRow(
+ projection.map { column ->
+ when (column) {
+ Directory.ACCOUNT_NAME -> ACCOUNT_NAME
+ Directory.ACCOUNT_TYPE -> ACCOUNT_TYPE
+ Directory.DISPLAY_NAME -> ACCOUNT_NAME
+ Directory.TYPE_RESOURCE_ID -> R.string.sdn_contacts_directory_search_label
+ Directory.EXPORT_SUPPORT -> Directory.EXPORT_SUPPORT_NONE
+ Directory.SHORTCUT_SUPPORT -> Directory.SHORTCUT_SUPPORT_NONE
+ Directory.PHOTO_SUPPORT -> Directory.PHOTO_SUPPORT_THUMBNAIL_ONLY
+ else -> null
+ }
+ },
+ )
+ }
+ }
+
+ private fun handleFilter(projection: Array<out String>, uri: Uri): Cursor? {
+ val filter = uri.lastPathSegment ?: return null
+ val cursor = MatrixCursor(projection)
+
+ val results =
+ sdnRepository.fetchSdn().filter {
+ it.serviceName.contains(filter, ignoreCase = true) || it.serviceNumber.contains(filter)
+ }
+
+ if (results.isEmpty()) return cursor
+
+ val maxResult = getQueryLimit(uri)
+
+ results.take(maxResult).forEachIndexed { index, data ->
+ cursor.addRow(
+ projection.map { column ->
+ when (column) {
+ Contacts._ID -> index
+ Contacts.DISPLAY_NAME -> data.serviceName
+ Data.DATA1 -> data.serviceNumber
+ Contacts.LOOKUP_KEY -> data.lookupKey()
+ else -> null
+ }
+ },
+ )
+ }
+
+ return cursor
+ }
+
+ private fun handleLookup(
+ projection: Array<out String>,
+ lookupKey: String?,
+ contactIdFromUri: String? = "1",
+ ): Cursor? {
+ if (lookupKey.isNullOrEmpty()) {
+ Log.i(TAG, "handleLookup did not receive a lookup key")
+ return null
+ }
+
+ val cursor = MatrixCursor(projection)
+ val contactId =
+ try {
+ contactIdFromUri?.toLong() ?: 1L
+ } catch (_: NumberFormatException) {
+ 1L
+ }
+
+ val result = sdnRepository.fetchSdn().find { it.lookupKey() == lookupKey } ?: return cursor
+
+ // Adding first row for name
+ cursor.addRow(
+ projection.map { column ->
+ when (column) {
+ Contacts.Entity.CONTACT_ID -> contactId
+ Contacts.Entity.RAW_CONTACT_ID -> contactId
+ Contacts.Entity.DATA_ID -> 1
+ Data.MIMETYPE -> StructuredName.CONTENT_ITEM_TYPE
+ StructuredName.DISPLAY_NAME -> result.serviceName
+ StructuredName.GIVEN_NAME -> result.serviceName
+ Contacts.DISPLAY_NAME -> result.serviceName
+ Contacts.DISPLAY_NAME_ALTERNATIVE -> result.serviceName
+ RawContacts.ACCOUNT_NAME -> ACCOUNT_NAME
+ RawContacts.ACCOUNT_TYPE -> ACCOUNT_TYPE
+ RawContacts.RAW_CONTACT_IS_READ_ONLY -> 1
+ Contacts.LOOKUP_KEY -> result.lookupKey()
+ else -> null
+ }
+ }
+ )
+
+ // Adding second row for number
+ cursor.addRow(
+ projection.map { column ->
+ when (column) {
+ Contacts.Entity.CONTACT_ID -> contactId
+ Contacts.Entity.RAW_CONTACT_ID -> contactId
+ Contacts.Entity.DATA_ID -> 2
+ Data.MIMETYPE -> Phone.CONTENT_ITEM_TYPE
+ Phone.NUMBER -> result.serviceNumber
+ Data.IS_PRIMARY -> 1
+ Phone.TYPE -> Phone.TYPE_MAIN
+ else -> null
+ }
+ }
+ )
+
+ return cursor
+ }
+
+ private fun handlePhoneLookup(
+ projection: Array<out String>,
+ phoneNumber: String?,
+ ): Cursor? {
+ if (phoneNumber.isNullOrEmpty()) {
+ Log.i(TAG, "handlePhoneLookup did not receive a phoneNumber")
+ return null
+ }
+
+ val cursor = MatrixCursor(projection)
+
+ val result = sdnRepository.fetchSdn().find { it.serviceNumber == phoneNumber } ?: return cursor
+
+ cursor.addRow(
+ projection.map { column ->
+ when (column) {
+ Contacts.DISPLAY_NAME -> result.serviceName
+ Phone.NUMBER -> result.serviceNumber
+ else -> null
+ }
+ },
+ )
+
+ return cursor
+ }
+
+ private fun isCallerAllowed(callingPackage: String?): Boolean {
+ if (callingPackage.isNullOrEmpty()) {
+ Log.i(TAG, "Calling package is null or empty.")
+ return false
+ }
+
+ if (callingPackage == requireContext().packageName) {
+ return true
+ }
+
+ // Check if the calling package is default dialer app or not
+ val context = context ?: return false
+ val tm = context.getSystemService(TELECOM_SERVICE) as TelecomManager
+ return tm.defaultDialerPackage == callingPackage
+ }
+
+ private fun getQueryLimit(uri: Uri): Int {
+ return try {
+ uri.getQueryParameter(ContactsContract.LIMIT_PARAM_KEY)?.toInt() ?: DEFAULT_MAX_RESULTS
+ } catch (e: NumberFormatException) {
+ DEFAULT_MAX_RESULTS
+ }
+ }
+
+ companion object {
+ private val TAG = SdnProvider::class.java.simpleName
+
+ private const val DIRECTORIES = 0
+ private const val FILTER = 1
+ private const val CONTACT_LOOKUP = 2
+ private const val CONTACT_LOOKUP_WITH_CONTACT_ID = 3
+ private const val PHONE_LOOKUP = 4
+
+ private const val ACCOUNT_NAME = "Carrier service numbers"
+ private const val ACCOUNT_TYPE = "com.android.contacts.sdn"
+
+ private const val DEFAULT_MAX_RESULTS = 20
+ }
+}
diff --git a/src/com/android/contacts/sdn/SdnRepository.kt b/src/com/android/contacts/sdn/SdnRepository.kt
new file mode 100644
index 0000000..0759127
--- /dev/null
+++ b/src/com/android/contacts/sdn/SdnRepository.kt
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.sdn
+
+import android.Manifest.permission
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.pm.PackageManager
+import android.telephony.CarrierConfigManager
+import android.telephony.SubscriptionManager
+import android.util.Log
+import com.android.contacts.model.SimCard
+import com.android.contacts.util.PermissionsUtil
+import com.android.contacts.util.PhoneNumberHelper
+
+/** Repository to fetch Sdn data from [CarrierConfigManager]. */
+class SdnRepository constructor(private val context: Context) {
+
+ fun isSdnPresent(): Boolean {
+ if (
+ !hasTelephony() ||
+ !PermissionsUtil.hasPermission(context, permission.READ_PHONE_STATE) ||
+ !PermissionsUtil.hasPermission(context, permission.READ_PHONE_NUMBERS) ||
+ !PermissionsUtil.hasPermission(context, permission.READ_CALL_LOG)
+ ) {
+ return false
+ }
+
+ val simCardList = getSimCardInformation()
+
+ for (simCard in simCardList) {
+ if (fetchSdnFromCarrierConfig(simCard).isNotEmpty()) {
+ Log.i(TAG, "Found SDN list from CarrierConfig")
+ return true
+ }
+ }
+ return false
+ }
+
+ fun fetchSdn(): List<Sdn> {
+ val simCardList = getSimCardInformation()
+
+ return simCardList
+ .flatMap { fetchSdnFromCarrierConfig(it) }
+ .distinct()
+ .sortedBy { it.serviceName }
+ }
+
+ // Permission check isn't recognized by the linter.
+ @SuppressLint("MissingPermission")
+ fun getSimCardInformation(): List<SimCard> {
+ val subscriptionManager = context.getSystemService(SubscriptionManager::class.java)
+ return subscriptionManager?.activeSubscriptionInfoList?.filterNotNull()?.mapNotNull {
+ if (it.subscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ null
+ } else {
+ SimCard.create(it)
+ }
+ }
+ ?: emptyList()
+ }
+
+ @Suppress("Deprecation", "MissingPermission")
+ private fun fetchSdnFromCarrierConfig(simCard: SimCard): List<Sdn> {
+ val carrierConfigManager = context.getSystemService(CarrierConfigManager::class.java)
+ val carrierConfig =
+ carrierConfigManager?.getConfigForSubId(simCard.subscriptionId) ?: return emptyList()
+ val nameList: List<String> =
+ carrierConfig
+ .getStringArray(CarrierConfigManager.KEY_CARRIER_SERVICE_NAME_STRING_ARRAY)
+ ?.map { it?.trim() ?: "" }
+ ?: return emptyList()
+ val numberList: List<String> =
+ carrierConfig
+ .getStringArray(CarrierConfigManager.KEY_CARRIER_SERVICE_NUMBER_STRING_ARRAY)
+ ?.map { it?.trim() ?: "" }
+ ?: return emptyList()
+ if (nameList.isEmpty() || nameList.size != numberList.size) return emptyList()
+
+ val sdnList = mutableListOf<Sdn>()
+ nameList.zip(numberList).forEach { (sdnServiceName, sdnNumber) ->
+ if (sdnServiceName.isNotBlank() && PhoneNumberHelper.isDialablePhoneNumber(sdnNumber)) {
+ sdnList.add(Sdn(sdnServiceName, sdnNumber))
+ }
+ }
+ return sdnList
+ }
+
+ private fun hasTelephony(): Boolean {
+ return context.packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ }
+
+ companion object {
+ private val TAG = SdnRepository::class.java.simpleName
+ }
+}
+
+/** Hold the Service dialing number information to be displayed in SdnActivity. */
+data class Sdn(
+ val serviceName: String,
+ val serviceNumber: String,
+) {
+
+ /** Generate lookup key that will help identify SDN when Opening QuickContact. */
+ fun lookupKey(): String {
+ return "non-sim-sdn-" + hashCode()
+ }
+}
diff --git a/src/com/android/contacts/util/PhoneNumberHelper.java b/src/com/android/contacts/util/PhoneNumberHelper.java
index eb070b2..2f1a5b0 100644
--- a/src/com/android/contacts/util/PhoneNumberHelper.java
+++ b/src/com/android/contacts/util/PhoneNumberHelper.java
@@ -16,6 +16,7 @@
package com.android.contacts.util;
import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
import android.util.Log;
/**
@@ -95,4 +96,24 @@
}
return number.substring(0, delimiterIndex);
}
+
+ /** Returns true if the given string is dialable by the user from Phone/Dialer app. */
+ public static boolean isDialablePhoneNumber(String str) {
+ if (TextUtils.isEmpty(str)) {
+ return false;
+ }
+
+ for (int i = 0, count = str.length(); i < count; i++) {
+ if (!(PhoneNumberUtils.isDialable(str.charAt(i))
+ || str.charAt(i) == ' '
+ || str.charAt(i) == '-'
+ || str.charAt(i) == '('
+ || str.charAt(i) == ')'
+ || str.charAt(i) == '.'
+ || str.charAt(i) == '/')) {
+ return false;
+ }
+ }
+ return true;
+ }
}
diff --git a/src/com/android/contacts/vcard/ExportProcessor.java b/src/com/android/contacts/vcard/ExportProcessor.java
index 0b96ea1..fd5134c 100755
--- a/src/com/android/contacts/vcard/ExportProcessor.java
+++ b/src/com/android/contacts/vcard/ExportProcessor.java
@@ -81,6 +81,12 @@
mExportRequest = exportRequest;
mJobId = jobId;
mCallingActivity = callingActivity;
+ try {
+ mResolver.takePersistableUriPermission(exportRequest.destUri,
+ Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+ } catch (SecurityException e) {
+ Log.w(LOG_TAG, "SecurityException error", e);
+ }
}
@Override
diff --git a/src/com/android/contacts/vcard/NotificationImportExportListener.java b/src/com/android/contacts/vcard/NotificationImportExportListener.java
index 3b4dc5e..cc60668 100755
--- a/src/com/android/contacts/vcard/NotificationImportExportListener.java
+++ b/src/com/android/contacts/vcard/NotificationImportExportListener.java
@@ -112,6 +112,7 @@
final String description = mContext.getString(R.string.importing_vcard_description,
entry.getDisplayName());
+ ContactsNotificationChannelsUtil.createDefaultChannel(mContext);
return constructProgressNotification(mContext.getApplicationContext(),
VCardService.TYPE_IMPORT, description, tickerText, jobId, request.displayName,
totalCount, currentCount);
diff --git a/tests/Android.bp b/tests/Android.bp
index 647fee7..2912673 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -29,7 +29,7 @@
"androidx.test.ext.junit",
"hamcrest-library",
"mockito-target-minus-junit4",
- "ub-uiautomator",
+ "androidx.test.uiautomator_uiautomator",
],
libs: [
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index f22f92c..9ccfa3f 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -20,6 +20,7 @@
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
+ <uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
diff --git a/tests/src/com/android/contacts/ContactsUtilsTests.java b/tests/src/com/android/contacts/ContactsUtilsTests.java
index 114ce67..7c497eb 100644
--- a/tests/src/com/android/contacts/ContactsUtilsTests.java
+++ b/tests/src/com/android/contacts/ContactsUtilsTests.java
@@ -22,9 +22,10 @@
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.Pair;
+import androidx.test.filters.SmallTest;
+
import com.android.contacts.model.dataitem.DataItem;
import com.android.contacts.model.dataitem.EmailDataItem;
import com.android.contacts.model.dataitem.ImDataItem;
diff --git a/tests/src/com/android/contacts/DynamicShortcutsTests.java b/tests/src/com/android/contacts/DynamicShortcutsTests.java
index 199e2c9..8673c5e 100644
--- a/tests/src/com/android/contacts/DynamicShortcutsTests.java
+++ b/tests/src/com/android/contacts/DynamicShortcutsTests.java
@@ -38,9 +38,9 @@
import android.provider.ContactsContract.Contacts;
import android.test.AndroidTestCase;
import android.test.mock.MockContentResolver;
-import android.test.suitebuilder.annotation.SmallTest;
import androidx.test.filters.SdkSuppress;
+import androidx.test.filters.SmallTest;
import com.android.contacts.test.mocks.MockContentProvider;
diff --git a/tests/src/com/android/contacts/GroupsDaoIntegrationTests.java b/tests/src/com/android/contacts/GroupsDaoIntegrationTests.java
index 4057ee8..179a51e 100644
--- a/tests/src/com/android/contacts/GroupsDaoIntegrationTests.java
+++ b/tests/src/com/android/contacts/GroupsDaoIntegrationTests.java
@@ -30,7 +30,8 @@
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.Data;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
import com.android.contacts.model.account.AccountWithDataSet;
diff --git a/tests/src/com/android/contacts/MoreContactUtilsTest.java b/tests/src/com/android/contacts/MoreContactUtilsTest.java
index 6c9d541..3639e06 100644
--- a/tests/src/com/android/contacts/MoreContactUtilsTest.java
+++ b/tests/src/com/android/contacts/MoreContactUtilsTest.java
@@ -1,7 +1,8 @@
package com.android.contacts;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/tests/src/com/android/contacts/NoPermissionsLaunchSmokeTest.java b/tests/src/com/android/contacts/NoPermissionsLaunchSmokeTest.java
index fac9c85..59f8147 100644
--- a/tests/src/com/android/contacts/NoPermissionsLaunchSmokeTest.java
+++ b/tests/src/com/android/contacts/NoPermissionsLaunchSmokeTest.java
@@ -8,15 +8,15 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.MediumTest;
import androidx.test.filters.Suppress;
import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.Until;
import org.junit.Before;
import org.junit.Test;
@@ -54,6 +54,7 @@
assumeTrue(!hasPermission(mTargetContext, Manifest.permission.GET_ACCOUNTS));
assumeTrue(!hasPermission(mTargetContext, Manifest.permission.READ_PHONE_STATE));
assumeTrue(!hasPermission(mTargetContext, Manifest.permission.CALL_PHONE));
+ assumeTrue(!hasPermission(mTargetContext, Manifest.permission.READ_CALL_LOG));
// remove state that might exist outside of the app
// (e.g. launcher shortcuts and scheduled jobs)
@@ -72,14 +73,20 @@
device.waitForIdle();
- device.wait(Until.hasObject(By.textStartsWith("Allow Contacts")), TIMEOUT);
+ final PackageManager packageManager = mTargetContext.getPackageManager();
+ if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ device.wait(Until.hasObject(By.textEndsWith("your phone call logs?")), TIMEOUT);
+ final UiObject2 grantCallLogPermissionButton = device.findObject(By.text("ALLOW"));
+ grantCallLogPermissionButton.click();
+ }
+
+ device.wait(Until.hasObject(By.textEndsWith("access your contacts?")), TIMEOUT);
final UiObject2 grantContactsPermissionButton = device.findObject(By.text("ALLOW"));
grantContactsPermissionButton.click();
device.wait(Until.hasObject(By.textEndsWith("make and manage phone calls?")), TIMEOUT);
- final PackageManager packageManager = mTargetContext.getPackageManager();
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
device.waitForIdle();
return;
diff --git a/tests/src/com/android/contacts/activities/PeopleActivityTest.java b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
index 4e57969..3d70f3f 100644
--- a/tests/src/com/android/contacts/activities/PeopleActivityTest.java
+++ b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
@@ -25,7 +25,8 @@
import android.provider.ContactsContract.Groups;
import android.provider.ContactsContract.ProviderStatus;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.ContactPhotoManager;
import com.android.contacts.ContactsApplication;
diff --git a/tests/src/com/android/contacts/activities/SimImportActivityTest.java b/tests/src/com/android/contacts/activities/SimImportActivityTest.java
index 250ce4b..9e2f73b 100644
--- a/tests/src/com/android/contacts/activities/SimImportActivityTest.java
+++ b/tests/src/com/android/contacts/activities/SimImportActivityTest.java
@@ -42,9 +42,6 @@
import android.provider.ContactsContract.Data;
import android.provider.SimPhonebookContract;
import android.provider.SimPhonebookContract.SimRecords;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.Until;
import android.telephony.TelephonyManager;
import android.test.mock.MockContentResolver;
@@ -53,6 +50,9 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.filters.SdkSuppress;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.Until;
import com.android.contacts.SimImportService;
import com.android.contacts.database.SimContactDao;
diff --git a/tests/src/com/android/contacts/compat/CompatUtilsTest.java b/tests/src/com/android/contacts/compat/CompatUtilsTest.java
index 22694cb..d698ae7 100644
--- a/tests/src/com/android/contacts/compat/CompatUtilsTest.java
+++ b/tests/src/com/android/contacts/compat/CompatUtilsTest.java
@@ -17,7 +17,8 @@
package com.android.contacts.compat;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
@SmallTest
public class CompatUtilsTest extends AndroidTestCase {
diff --git a/tests/src/com/android/contacts/database/NoNullCursorAsyncQueryHandlerTest.java b/tests/src/com/android/contacts/database/NoNullCursorAsyncQueryHandlerTest.java
index 987882b..24feb0d 100644
--- a/tests/src/com/android/contacts/database/NoNullCursorAsyncQueryHandlerTest.java
+++ b/tests/src/com/android/contacts/database/NoNullCursorAsyncQueryHandlerTest.java
@@ -21,7 +21,8 @@
import android.test.InstrumentationTestCase;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
diff --git a/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java b/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java
index 9eea4d1..870f3b5 100644
--- a/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java
+++ b/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java
@@ -22,7 +22,8 @@
import android.os.Build;
import android.provider.Settings;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.R;
import com.android.contacts.model.account.AccountDisplayInfo;
diff --git a/tests/src/com/android/contacts/format/FormatUtilsTests.java b/tests/src/com/android/contacts/format/FormatUtilsTests.java
index febed74..5c2d180 100644
--- a/tests/src/com/android/contacts/format/FormatUtilsTests.java
+++ b/tests/src/com/android/contacts/format/FormatUtilsTests.java
@@ -18,7 +18,8 @@
import android.database.CharArrayBuffer;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
/**
* Test cases for format utility methods.
diff --git a/tests/src/com/android/contacts/format/TextHighlighterTest.java b/tests/src/com/android/contacts/format/TextHighlighterTest.java
index 211d944..670cd0b 100644
--- a/tests/src/com/android/contacts/format/TextHighlighterTest.java
+++ b/tests/src/com/android/contacts/format/TextHighlighterTest.java
@@ -17,9 +17,10 @@
package com.android.contacts.format;
import android.graphics.Typeface;
-import android.test.suitebuilder.annotation.SmallTest;
import android.text.SpannableString;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
/**
diff --git a/tests/src/com/android/contacts/group/GroupUtilTest.java b/tests/src/com/android/contacts/group/GroupUtilTest.java
index 5f72e9d..569979f 100644
--- a/tests/src/com/android/contacts/group/GroupUtilTest.java
+++ b/tests/src/com/android/contacts/group/GroupUtilTest.java
@@ -20,7 +20,8 @@
import android.provider.ContactsContract.Contacts;
import android.test.AndroidTestCase;
import android.test.MoreAsserts;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.list.ContactsSectionIndexer;
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index 258b818..0ad8d6d 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -21,7 +21,8 @@
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.Entity;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
import com.android.contacts.ContactsApplication;
import com.android.contacts.R;
diff --git a/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java b/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java
index 654533b..43efb6f 100644
--- a/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java
@@ -16,9 +16,8 @@
package com.android.contacts.interactions;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import java.util.Calendar;
-import java.util.Locale;
+
+import androidx.test.filters.SmallTest;
/**
* Tests for utility functions in {@link ContactInteractionUtil}
diff --git a/tests/src/com/android/contacts/list/ContactListItemViewTest.java b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
index 09c2f36..e36334d 100644
--- a/tests/src/com/android/contacts/list/ContactListItemViewTest.java
+++ b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
@@ -20,9 +20,10 @@
import android.database.MatrixCursor;
import android.test.ActivityInstrumentationTestCase2;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
import android.widget.TextView;
+import androidx.test.filters.LargeTest;
+
import com.android.contacts.format.SpannedTestUtils;
import com.android.contacts.preference.ContactsPreferences;
diff --git a/tests/src/com/android/contacts/model/AccountTypeManagerTest.java b/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
index dfcb390..1ccfd82 100644
--- a/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
+++ b/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
@@ -16,16 +16,20 @@
package com.android.contacts.model;
+import static org.mockito.Mockito.when;
+
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.SharedPreferences;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.model.account.AccountType;
import com.android.contacts.model.account.AccountTypeWithDataSet;
import com.android.contacts.model.account.AccountWithDataSet;
import com.android.contacts.model.account.GoogleAccountType;
+
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -38,8 +42,6 @@
import java.util.List;
import java.util.Map;
-import static org.mockito.Mockito.when;
-
/**
* Test case for {@link com.android.contacts.model.AccountTypeManager}.
*
diff --git a/tests/src/com/android/contacts/model/AccountWithDataSetTest.java b/tests/src/com/android/contacts/model/AccountWithDataSetTest.java
index 7d6dfa3..6cac274 100644
--- a/tests/src/com/android/contacts/model/AccountWithDataSetTest.java
+++ b/tests/src/com/android/contacts/model/AccountWithDataSetTest.java
@@ -19,7 +19,8 @@
import android.os.Bundle;
import android.test.AndroidTestCase;
import android.test.MoreAsserts;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.model.account.AccountWithDataSet;
diff --git a/tests/src/com/android/contacts/model/ContactLoaderTest.java b/tests/src/com/android/contacts/model/ContactLoaderTest.java
index 8aa078b..37a33d8 100644
--- a/tests/src/com/android/contacts/model/ContactLoaderTest.java
+++ b/tests/src/com/android/contacts/model/ContactLoaderTest.java
@@ -27,7 +27,9 @@
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.StatusUpdates;
import android.test.LoaderTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
+
import com.android.contacts.compat.CompatUtils;
import com.android.contacts.model.account.AccountType;
import com.android.contacts.model.account.AccountWithDataSet;
@@ -37,11 +39,14 @@
import com.android.contacts.test.mocks.MockContentProvider;
import com.android.contacts.testing.InjectedServices;
import com.android.contacts.util.Constants;
+
import com.google.common.collect.Lists;
-import java.util.List;
+
import org.json.JSONException;
import org.json.JSONObject;
+import java.util.List;
+
/**
* Runs ContactLoader tests for the the contact-detail and editor view.
*/
diff --git a/tests/src/com/android/contacts/model/RawContactDeltaListTests.java b/tests/src/com/android/contacts/model/RawContactDeltaListTests.java
index d9ff184..9853870 100644
--- a/tests/src/com/android/contacts/model/RawContactDeltaListTests.java
+++ b/tests/src/com/android/contacts/model/RawContactDeltaListTests.java
@@ -29,7 +29,8 @@
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.android.contacts.compat.CompatUtils;
import com.android.contacts.model.account.AccountType;
diff --git a/tests/src/com/android/contacts/model/RawContactDeltaTests.java b/tests/src/com/android/contacts/model/RawContactDeltaTests.java
index f5d4181..4c2c174 100644
--- a/tests/src/com/android/contacts/model/RawContactDeltaTests.java
+++ b/tests/src/com/android/contacts/model/RawContactDeltaTests.java
@@ -25,7 +25,8 @@
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.android.contacts.compat.CompatUtils;
diff --git a/tests/src/com/android/contacts/model/RawContactModifierTests.java b/tests/src/com/android/contacts/model/RawContactModifierTests.java
index 594bb44..3cf1224 100644
--- a/tests/src/com/android/contacts/model/RawContactModifierTests.java
+++ b/tests/src/com/android/contacts/model/RawContactModifierTests.java
@@ -30,7 +30,8 @@
import android.provider.ContactsContract.Intents.Insert;
import android.provider.ContactsContract.RawContacts;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.android.contacts.R;
import com.android.contacts.compat.CompatUtils;
diff --git a/tests/src/com/android/contacts/model/RawContactTest.java b/tests/src/com/android/contacts/model/RawContactTest.java
index d9f05c9..9af655c 100644
--- a/tests/src/com/android/contacts/model/RawContactTest.java
+++ b/tests/src/com/android/contacts/model/RawContactTest.java
@@ -20,7 +20,8 @@
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/tests/src/com/android/contacts/model/ValuesDeltaTests.java b/tests/src/com/android/contacts/model/ValuesDeltaTests.java
index b7161d7..f8febd7 100644
--- a/tests/src/com/android/contacts/model/ValuesDeltaTests.java
+++ b/tests/src/com/android/contacts/model/ValuesDeltaTests.java
@@ -21,7 +21,8 @@
import android.os.Build;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Data;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.compat.CompatUtils;
diff --git a/tests/src/com/android/contacts/model/account/AccountTypeTest.java b/tests/src/com/android/contacts/model/account/AccountTypeTest.java
index 7c74b21..b9a11ee 100644
--- a/tests/src/com/android/contacts/model/account/AccountTypeTest.java
+++ b/tests/src/com/android/contacts/model/account/AccountTypeTest.java
@@ -18,7 +18,8 @@
import android.content.Context;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.tests.R;
diff --git a/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java b/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
index 17d815e..71b01f3 100644
--- a/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
+++ b/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
@@ -29,11 +29,12 @@
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
-import com.android.contacts.tests.R;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+
import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.tests.R;
import com.google.common.base.Objects;
diff --git a/tests/src/com/android/contacts/model/dataitem/DataItemTests.java b/tests/src/com/android/contacts/model/dataitem/DataItemTests.java
index 4b76d0c..f169e29 100644
--- a/tests/src/com/android/contacts/model/dataitem/DataItemTests.java
+++ b/tests/src/com/android/contacts/model/dataitem/DataItemTests.java
@@ -30,11 +30,14 @@
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.provider.ContactsContract.Contacts.Data;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
+
import com.android.contacts.Collapser;
import com.android.contacts.model.account.AccountType.EditType;
import com.android.contacts.model.account.BaseAccountType;
import com.android.contacts.model.account.GoogleAccountType;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java b/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
index d7f34ee..d2fd13e 100644
--- a/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
+++ b/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
@@ -20,9 +20,9 @@
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
import com.android.contacts.model.account.AccountWithDataSet;
diff --git a/tests/src/com/android/contacts/util/AccountDisplayInfoFactoryTests.java b/tests/src/com/android/contacts/util/AccountDisplayInfoFactoryTests.java
index ca6d165..be27bcf 100644
--- a/tests/src/com/android/contacts/util/AccountDisplayInfoFactoryTests.java
+++ b/tests/src/com/android/contacts/util/AccountDisplayInfoFactoryTests.java
@@ -20,7 +20,8 @@
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.model.AccountTypeManager;
import com.android.contacts.model.account.AccountDisplayInfo;
diff --git a/tests/src/com/android/contacts/util/BitmapUtilTests.java b/tests/src/com/android/contacts/util/BitmapUtilTests.java
index ee7ebc0..ffbc170 100644
--- a/tests/src/com/android/contacts/util/BitmapUtilTests.java
+++ b/tests/src/com/android/contacts/util/BitmapUtilTests.java
@@ -18,7 +18,8 @@
import android.graphics.Bitmap;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
diff --git a/tests/src/com/android/contacts/util/ContactDisplayUtilTests.java b/tests/src/com/android/contacts/util/ContactDisplayUtilTests.java
index 1503215..3f4dc6c 100644
--- a/tests/src/com/android/contacts/util/ContactDisplayUtilTests.java
+++ b/tests/src/com/android/contacts/util/ContactDisplayUtilTests.java
@@ -19,7 +19,8 @@
import static android.provider.ContactsContract.CommonDataKinds.Phone;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.contacts.R;
import com.android.contacts.preference.ContactsPreferences;
diff --git a/tests/src/com/android/contacts/util/ContactPhotoUtilsTest.java b/tests/src/com/android/contacts/util/ContactPhotoUtilsTest.java
index d17b98c..8a01c31 100644
--- a/tests/src/com/android/contacts/util/ContactPhotoUtilsTest.java
+++ b/tests/src/com/android/contacts/util/ContactPhotoUtilsTest.java
@@ -2,7 +2,8 @@
import android.net.Uri;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
/**
* Test cases for {@link ContactPhotoUtils}.
diff --git a/tests/src/com/android/contacts/util/SearchUtilTest.java b/tests/src/com/android/contacts/util/SearchUtilTest.java
index e2156ca..f957a6a 100644
--- a/tests/src/com/android/contacts/util/SearchUtilTest.java
+++ b/tests/src/com/android/contacts/util/SearchUtilTest.java
@@ -16,7 +16,7 @@
package com.android.contacts.util;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/tests/src/com/android/contacts/util/SyncUtilTests.java b/tests/src/com/android/contacts/util/SyncUtilTests.java
index 508ff04..b8c8dae 100644
--- a/tests/src/com/android/contacts/util/SyncUtilTests.java
+++ b/tests/src/com/android/contacts/util/SyncUtilTests.java
@@ -17,7 +17,8 @@
import android.accounts.Account;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
/**
* Tests for SyncUtil.
diff --git a/tests/src/com/android/contacts/widget/CompositeListAdapterTest.java b/tests/src/com/android/contacts/widget/CompositeListAdapterTest.java
index a46a17c..306aa45 100644
--- a/tests/src/com/android/contacts/widget/CompositeListAdapterTest.java
+++ b/tests/src/com/android/contacts/widget/CompositeListAdapterTest.java
@@ -18,11 +18,12 @@
import android.content.Context;
import android.database.DataSetObserver;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
+import androidx.test.filters.SmallTest;
+
import com.google.common.collect.Lists;
import java.util.ArrayList;