Split TeleService into a client apk and a lib.
The client apk has the manifest and the lib has the code
and resources. This is being done so that the apk can run
under the phone shareduid, while the lib can be part of telephony
mainline module and be updatable.
Test: basic telephony sanity & atest TeleServiceTests
Test: manually verified that earlier bugs b/146087645, b/146034680,
b/146109167 are not seen
Bug: 144806641
Change-Id: If9f7bd6a50fce2b8e819479c2765240c5292a251
diff --git a/client/Android.bp b/client/Android.bp
new file mode 100644
index 0000000..4b832f7
--- /dev/null
+++ b/client/Android.bp
@@ -0,0 +1,45 @@
+// Copyright 2019 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Build the Phone app which includes the emergency dialer. See Contacts
+// for the 'other' dialer.
+
+android_app {
+ name: "TeleService",
+
+ libs: [
+ "telephony-common",
+ "voip-common",
+ "ims-common",
+ "libprotobuf-java-lite",
+ "TeleServiceLib",
+ ],
+
+ srcs: [
+ "src/**/*.java"
+ ],
+
+ required: ["TeleServiceLib"],
+
+ platform_apis: true,
+
+ certificate: "platform",
+ privileged: true,
+
+ defaults: ["SettingsLibDefaults"],
+
+ proto: {
+ type: "lite",
+ },
+}
diff --git a/client/AndroidManifest.xml b/client/AndroidManifest.xml
new file mode 100644
index 0000000..e1d29c3
--- /dev/null
+++ b/client/AndroidManifest.xml
@@ -0,0 +1,671 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ package="com.android.phone"
+ coreApp="true"
+ android:sharedUserId="android.uid.phone"
+ android:sharedUserLabel="@string/phoneAppLabel"
+>
+
+ <original-package android:name="com.android.phone" />
+
+ <protected-broadcast android:name="android.telecom.action.TTY_PREFERRED_MODE_CHANGED" />
+ <protected-broadcast android:name="android.telecom.action.CURRENT_TTY_MODE_CHANGED" />
+ <protected-broadcast android:name="android.intent.action.SERVICE_STATE" />
+ <protected-broadcast android:name="android.intent.action.RADIO_TECHNOLOGY" />
+ <protected-broadcast android:name="android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED" />
+ <protected-broadcast android:name="android.intent.action.EMERGENCY_CALL_STATE_CHANGED" />
+ <protected-broadcast android:name="android.intent.action.SIG_STR" />
+ <protected-broadcast android:name="android.intent.action.ANY_DATA_STATE" />
+ <protected-broadcast android:name="android.intent.action.DATA_STALL_DETECTED" />
+ <protected-broadcast android:name="android.intent.action.SIM_STATE_CHANGED" />
+ <protected-broadcast android:name="android.intent.action.USER_ACTIVITY_NOTIFICATION" />
+ <protected-broadcast android:name="android.telephony.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
+ <protected-broadcast android:name="android.intent.action.ACTION_MDN_STATE_CHANGED" />
+ <protected-broadcast android:name="android.provider.Telephony.SPN_STRINGS_UPDATED" />
+ <protected-broadcast android:name="android.provider.Telephony.SIM_FULL" />
+ <protected-broadcast android:name="com.android.internal.telephony.data-restart-trysetup" />
+ <protected-broadcast android:name="com.android.internal.telephony.data-stall" />
+ <protected-broadcast android:name="android.intent.action.DATA_SMS_RECEIVED" />
+ <protected-broadcast android:name="android.provider.Telephony.SMS_RECEIVED" />
+ <protected-broadcast android:name="android.provider.Telephony.SMS_DELIVER" />
+ <protected-broadcast android:name="android.provider.Telephony.SMS_REJECTED" />
+ <protected-broadcast android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
+ <protected-broadcast android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
+ <protected-broadcast android:name="android.provider.Telephony.SMS_CB_RECEIVED" />
+ <protected-broadcast android:name="android.provider.action.SMS_EMERGENCY_CB_RECEIVED" />
+ <protected-broadcast android:name="android.provider.Telephony.SECRET_CODE" />
+ <protected-broadcast android:name= "com.android.internal.stk.command" />
+ <protected-broadcast android:name= "com.android.internal.stk.session_end" />
+ <protected-broadcast android:name= "com.android.internal.stk.icc_status_change" />
+ <protected-broadcast android:name= "com.android.internal.stk.alpha_notify" />
+ <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED" />
+ <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED" />
+ <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_PCO_VALUE" />
+ <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_RESET" />
+ <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE" />
+ <protected-broadcast android:name= "com.android.internal.telephony.ACTION_LINE1_NUMBER_ERROR_DETECTED" />
+ <protected-broadcast android:name= "com.android.internal.provider.action.VOICEMAIL_SMS_RECEIVED" />
+ <protected-broadcast android:name= "com.android.intent.isim_refresh" />
+ <protected-broadcast android:name= "com.android.ims.ACTION_RCS_SERVICE_AVAILABLE" />
+ <protected-broadcast android:name= "com.android.ims.ACTION_RCS_SERVICE_UNAVAILABLE" />
+ <protected-broadcast android:name= "com.android.ims.ACTION_RCS_SERVICE_DIED" />
+ <protected-broadcast android:name= "com.android.ims.ACTION_PRESENCE_CHANGED" />
+ <protected-broadcast android:name= "com.android.ims.ACTION_PUBLISH_STATUS_CHANGED" />
+ <protected-broadcast android:name= "com.android.ims.IMS_SERVICE_UP" />
+ <protected-broadcast android:name= "com.android.ims.IMS_SERVICE_DOWN" />
+ <protected-broadcast android:name= "com.android.ims.IMS_INCOMING_CALL" />
+ <protected-broadcast android:name= "com.android.ims.internal.uce.UCE_SERVICE_UP" />
+ <protected-broadcast android:name= "com.android.ims.internal.uce.UCE_SERVICE_DOWN" />
+ <protected-broadcast android:name= "com.android.imsconnection.DISCONNECTED" />
+ <protected-broadcast android:name= "com.android.intent.action.IMS_FEATURE_CHANGED" />
+ <protected-broadcast android:name= "com.android.intent.action.IMS_CONFIG_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR" />
+ <protected-broadcast android:name= "com.android.phone.vvm.omtp.sms.REQUEST_SENT" />
+ <protected-broadcast android:name= "com.android.phone.vvm.ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT" />
+ <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED" />
+ <protected-broadcast android:name= "com.android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO" />
+ <protected-broadcast android:name= "com.android.internal.telephony.ACTION_CARRIER_CERTIFICATE_DOWNLOAD" />
+ <protected-broadcast android:name= "com.android.internal.telephony.OPEN_DEFAULT_SMS_APP" />
+ <protected-broadcast android:name= "android.telephony.action.SIM_CARD_STATE_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.action.SIM_APPLICATION_STATE_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.action.SIM_SLOT_STATUS_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.action.SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.action.NETWORK_COUNTRY_CHANGED" />
+ <protected-broadcast android:name= "android.telephony.action.PRIMARY_SUBSCRIPTION_LIST_CHANGED" />
+
+ <!-- For Vendor Debugging in Telephony -->
+ <protected-broadcast android:name="android.telephony.action.ANOMALY_REPORTED" />
+
+ <!-- Allows granting runtime permissions to telephony related components. -->
+ <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS" />
+
+ <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+ <uses-permission android:name="android.permission.CALL_PHONE" />
+ <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
+ <!-- TELEPHONY_SECRET_CODE used to be sent by the Dialer app, but is now sent by
+ the phone process through an API added in O. Since the broadcast was unprotected prior to
+ O, apps may have required this permission (which only Dialer has) in their receivers.
+ So, declare this permission here for backwards compatibility so the phone process can send
+ the broadcasts to those same receivers. -->
+ <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
+ <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
+ <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+ <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.WRITE_CALL_LOG" />
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+ <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
+ <uses-permission android:name="android.permission.VIBRATE" />
+ <uses-permission android:name="android.permission.BLUETOOTH" />
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+ <uses-permission android:name="android.permission.REORDER_TASKS" />
+ <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+ <uses-permission android:name="android.permission.STATUS_BAR" />
+ <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
+ <uses-permission android:name="android.permission.RECEIVE_SMS" />
+ <uses-permission android:name="android.permission.READ_SMS" />
+ <uses-permission android:name="android.permission.WRITE_SMS" />
+ <uses-permission android:name="android.permission.SEND_SMS" />
+ <uses-permission android:name="android.permission.SEND_RESPOND_VIA_MESSAGE" />
+ <uses-permission android:name="android.permission.SET_TIME_ZONE" />
+ <uses-permission android:name="android.permission.SUGGEST_PHONE_TIME_AND_ZONE" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
+ <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_IMS_CALL_SERVICE" />
+ <uses-permission android:name="android.permission.DEVICE_POWER" />
+ <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
+ <uses-permission android:name="android.permission.BROADCAST_SMS"/>
+ <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH"/>
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+ <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+ <uses-permission android:name="android.permission.SHUTDOWN" />
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
+ <uses-permission android:name="android.permission.PERFORM_CDMA_PROVISIONING" />
+ <uses-permission android:name="android.permission.USE_SIP" />
+ <uses-permission android:name="android.permission.REBOOT" />
+ <uses-permission android:name="android.permission.UPDATE_LOCK" />
+ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
+ <uses-permission android:name="com.android.smspush.WAPPUSH_MANAGER_BIND" />
+ <uses-permission android:name="android.permission.MANAGE_USERS" />
+ <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
+ <uses-permission android:name="android.permission.READ_CARRIER_APP_INFO" />
+ <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
+ <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
+ <uses-permission android:name="android.permission.NETWORK_FACTORY" />
+ <uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY" />
+ <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
+ <uses-permission android:name="android.permission.READ_SEARCH_INDEXABLES" />
+ <uses-permission android:name="android.permission.DUMP" />
+ <uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
+ <uses-permission android:name="android.permission.REGISTER_SIM_SUBSCRIPTION" />
+ <uses-permission android:name="android.permission.BIND_IMS_SERVICE" />
+ <uses-permission android:name="android.permission.BIND_CARRIER_SERVICES" />
+ <!-- BIND_CARRIER_MESSAGING_SERVICE has been deprecated in favor of BIND_CARRIER_SERVICES. -->
+ <uses-permission android:name="android.permission.BIND_CARRIER_MESSAGING_SERVICE" />
+ <uses-permission android:name="android.permission.BIND_EUICC_SERVICE" />
+ <uses-permission android:name="android.permission.BIND_TELEPHONY_NETWORK_SERVICE" />
+ <uses-permission android:name="android.permission.BIND_CELL_BROADCAST_SERVICE" />
+ <uses-permission android:name="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" />
+ <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+ <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
+ <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
+ <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+ <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+ <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
+ <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL" />
+ <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+ <uses-permission android:name="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"/>
+ <uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS" />
+ <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
+ <uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" />
+ <!-- Needed to block messages. -->
+ <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS" />
+ <!-- Needed for emergency contact notification. -->
+ <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS" />
+ <uses-permission android:name="android.permission.NETWORK_SETTINGS" />
+
+ <!-- This tells the activity manager to not delay any of our activity
+ start requests, even if they happen immediately after the user
+ presses home. -->
+ <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+ <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+ <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
+ <uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
+ <uses-permission android:name="android.permission.BIND_TELEPHONY_DATA_SERVICE" />
+ <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
+ <uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />
+ <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
+ <!-- Allows us to whitelist receivers of the
+ ACTION_SIM_SLOT_STATUS_CHANGED broadcast to start activities
+ from the background. -->
+ <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
+
+ <application android:name="PhoneApp"
+ android:persistent="true"
+ android:label="@string/phoneAppLabel"
+ android:icon="@mipmap/ic_launcher_phone"
+ android:allowBackup="false"
+ android:supportsRtl="true"
+ android:usesCleartextTraffic="true"
+ android:defaultToDeviceProtectedStorage="true"
+ android:directBootAware="true">
+
+ <uses-library android:name="com.android.phone.lib" />
+
+ <provider android:name="IccProvider"
+ android:authorities="icc"
+ android:multiprocess="true"
+ android:exported="true"
+ android:readPermission="android.permission.READ_CONTACTS"
+ android:writePermission="android.permission.WRITE_CONTACTS" />
+
+ <!-- Dialer UI that only allows emergency calls -->
+ <activity android:name="EmergencyDialer"
+ android:label="@string/emergencyDialerIconLabel"
+ android:theme="@style/EmergencyDialerTheme"
+ android:screenOrientation="portrait"
+ android:resizeableActivity="false">
+ <intent-filter>
+ <action android:name="com.android.phone.EmergencyDialer.DIAL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.android.phone.EmergencyDialer.DIAL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:scheme="tel" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.DIAL_EMERGENCY" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.DIAL_EMERGENCY" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:scheme="tel" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="ADNList" />
+
+ <activity android:name="SimContacts"
+ android:label="@string/simContacts_title"
+ android:theme="@style/SimImportTheme"
+ android:screenOrientation="portrait"
+ android:icon="@mipmap/ic_launcher_contacts">
+
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="vnd.android.cursor.item/sim-contact" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.phone.settings.fdn.FdnList"
+ android:label="@string/fdnListLabel"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="vnd.android.cursor.item/sim-contact" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.internal.telephony.uicc.InstallCarrierAppTrampolineActivity"
+ android:theme="@android:style/Theme.Translucent.NoTitleBar"
+ android:exported="false"/>
+
+ <activity android:name="GsmUmtsCallOptions"
+ android:label="@string/gsm_umts_options"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="CdmaCallOptions"
+ android:label="@string/cdma_options"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="GsmUmtsCallForwardOptions"
+ android:label="@string/labelCF"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="GsmUmtsCallBarringOptions"
+ android:label="@string/labelCallBarring"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:theme="@style/CallSettingsWithoutDividerTheme">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="GsmUmtsAdditionalCallOptions"
+ android:label="@string/labelGSMMore"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+
+ <!-- fdn setting -->
+ <activity android:name="com.android.phone.settings.fdn.FdnSetting"
+ android:label="@string/fdn"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+
+ <!-- SIM PIN setting -->
+ <activity android:name="EnableIccPinScreen"
+ android:label="@string/enable_pin"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="ChangeIccPinScreen"
+ android:label="@string/change_pin"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.phone.settings.fdn.GetPin2Screen"
+ android:label="@string/get_pin2"
+ android:theme="@style/DialerSettingsLight"
+ android:windowSoftInputMode="stateVisible">
+ </activity>
+
+ <activity android:name="com.android.phone.settings.fdn.EditFdnContactScreen"
+ android:theme="@style/DialerSettingsLight"
+ android:windowSoftInputMode="stateVisible">
+ </activity>
+
+ <activity android:name="com.android.phone.settings.fdn.DeleteFdnContactScreen"
+ android:theme="@style/DialerSettingsLight"
+ android:label="@string/delete_fdn_contact">
+ </activity>
+
+ <!-- "Call settings" UI, used only on voice-capable phone devices. -->
+ <activity android:name="CallFeaturesSetting"
+ android:label="@string/call_settings"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.telecom.action.SHOW_CALL_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!-- Activation service that trigger OTASP sim provisioning -->
+ <service android:name=".otasp.OtaspActivationService" android:launchMode="singleInstance"
+ androidprv:systemUserOnly="true"
+ android:permission="android.permission.MODIFY_PHONE_STATE">
+ <intent-filter>
+ <action android:name="android.service.simActivation.SimActivationService" />
+ </intent-filter>
+ </service>
+
+ <receiver android:name=".otasp.OtaspSimStateReceiver" androidprv:systemUserOnly="true"
+ android:exported ="false">
+ <intent-filter>
+ <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
+ </intent-filter>
+ </receiver>
+
+ <!-- "Accessibility" settings UI. Referenced by Dialer application. -->
+ <activity android:name="com.android.phone.settings.AccessibilitySettingsActivity"
+ android:label="@string/accessibility_settings_activity_title"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!-- CDMA Emergency Callback Mode -->
+ <service android:name="EmergencyCallbackModeService">
+ </service>
+
+ <!-- service to dump telephony information -->
+ <service android:name="com.android.phone.TelephonyDebugService"
+ android:permission="android.permission.DUMP">
+ <intent-filter>
+ <action android:name="com.android.phone.TelephonyDebugService" />
+ </intent-filter>
+ </service>
+
+ <!-- Handler for EuiccManager's public-facing intents. -->
+ <activity android:name=".euicc.EuiccUiDispatcherActivity"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:permission="android.permission.MODIFY_PHONE_STATE">
+ <!-- Max out priority to ensure nobody else will handle these intents. -->
+ <intent-filter android:priority="1000">
+ <action android:name=
+ "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" />
+ <action android:name=
+ "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!--
+ Handler for EuiccManager's resolution intents. These are locked down so that only
+ privileged processes can start them, which means we can trust the Intent used to start
+ it (which contains a description of the next step to perform after resolution).
+ -->
+ <activity android:name=".euicc.EuiccResolutionUiDispatcherActivity"
+ android:permission="android.permission.CALL_PRIVILEGED">
+ <!-- Max out priority to ensure nobody else will handle these intents. -->
+ <intent-filter android:priority="1000">
+ <action android:name=
+ "android.telephony.euicc.action.RESOLVE_ERROR" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!--
+ Handler for EuiccManager's privileged action intents. These are locked down so that only
+ privileged processes can start them.
+ -->
+ <activity android:name=".euicc.EuiccPrivilegedActionUiDispatcherActivity"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:permission="android.permission.CALL_PRIVILEGED">
+ <!-- Max out priority to ensure nobody else will handle these intents. -->
+ <intent-filter android:priority="1000">
+ <action android:name=
+ "android.telephony.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED" />
+ <action android:name=
+ "android.telephony.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED" />
+ <action android:name=
+ "android.telephony.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!--
+ Handler for EuiccManager's public action intents. These are public and do not require
+ any special permissions to start, although the calling package name should be
+ whitelisted by the underlying eUICC service implementation (i.e. the LPA).
+ -->
+ <activity android:name=".euicc.EuiccPublicActionUiDispatcherActivity"
+ android:theme="@android:style/Theme.NoDisplay">
+ <!-- Max out priority to ensure nobody else will handle these intents. -->
+ <intent-filter android:priority="1000">
+ <action android:name=
+ "android.telephony.euicc.action.START_EUICC_ACTIVATION" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="EmergencyCallbackModeExitDialog"
+ android:excludeFromRecents="true"
+ android:label="@string/ecm_exit_dialog"
+ android:launchMode="singleTop"
+ android:theme="@android:style/Theme.Translucent.NoTitleBar">
+ <intent-filter>
+ <action android:name="com.android.phone.action.ACTION_SHOW_ECM_EXIT_DIALOG" />
+ <action android:name="android.telephony.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!-- Start SIP -->
+ <service android:name="com.android.services.telephony.sip.SipConnectionService"
+ android:label="@string/sip_connection_service_label"
+ android:singleUser="true"
+ android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE" >
+ <intent-filter>
+ <action android:name="android.telecom.ConnectionService" />
+ </intent-filter>
+ </service>
+
+ <receiver android:name="com.android.services.telephony.sip.SipIncomingCallReceiver">
+ <intent-filter>
+ <action android:name="android.net.sip.action.SIP_INCOMING_CALL" />
+ </intent-filter>
+ </receiver>
+
+ <activity android:name="com.android.services.telephony.sip.SipPhoneAccountSettingsActivity"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:excludeFromRecents="true">
+ <intent-filter>
+ <action android:name="android.telecom.action.CONFIGURE_PHONE_ACCOUNT" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:label="Sip Settings"
+ android:name="com.android.services.telephony.sip.SipSettings"
+ android:theme="@style/DialerSettingsLight"
+ android:launchMode="singleTop"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:uiOptions="splitActionBarWhenNarrow"
+ android:parentActivityName="com.android.phone.CallFeaturesSetting" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.net.sip.NOTIFY" />
+ </intent-filter>
+ </activity>
+ <activity android:name="com.android.services.telephony.sip.SipEditor"
+ android:theme="@style/DialerSettingsLight"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:uiOptions="splitActionBarWhenNarrow">
+ </activity>
+
+ <service android:name="com.android.services.telephony.sip.components.TelephonySipService">
+ <intent-filter>
+ <action android:name="android.net.sip.action.START_SIP" />
+ </intent-filter>
+ </service>
+
+ <!-- End SIP -->
+
+ <activity android:name="MMIDialogActivity"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:excludeFromRecents="true"
+ android:launchMode="singleInstance"
+ android:theme="@style/Empty">
+ </activity>
+
+ <activity android:name="com.android.phone.settings.PhoneAccountSettingsActivity"
+ android:label="@string/phone_accounts"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.telecom.action.CHANGE_PHONE_ACCOUNTS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.android.phone.settings.VoicemailSettingsActivity"
+ android:label="@string/voicemail"
+ android:configChanges="orientation|screenSize|keyboardHidden|screenLayout"
+ android:screenOrientation="portrait"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter >
+ <!-- DO NOT RENAME. There are existing apps which use this string. -->
+ <action android:name="com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.telephony.action.CONFIGURE_VOICEMAIL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!-- Telecom integration -->
+ <service
+ android:singleUser="true"
+ android:name="com.android.services.telephony.TelephonyConnectionService"
+ android:label="@string/pstn_connection_service_label"
+ android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE" >
+ <intent-filter>
+ <action android:name="android.telecom.ConnectionService" />
+ </intent-filter>
+ </service>
+
+ <receiver
+ android:name="com.android.phone.vvm.VvmSmsReceiver"
+ android:exported="false"
+ androidprv:systemUserOnly="true">
+ <intent-filter>
+ <action android:name="com.android.internal.provider.action.VOICEMAIL_SMS_RECEIVED"/>
+ </intent-filter>
+ </receiver>
+
+ <receiver
+ android:name="com.android.phone.vvm.VvmSimStateTracker"
+ android:exported="false"
+ androidprv:systemUserOnly="true">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED"/>
+ <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED"/>
+ <action android:name="android.intent.action.SIM_STATE_CHANGED"/>
+ </intent-filter>
+ </receiver>
+
+ <receiver
+ android:name="com.android.internal.telephony.uicc.ShowInstallAppNotificationReceiver"
+ android:exported="false"/>
+
+ <activity
+ android:name="com.android.phone.settings.PickSmsSubscriptionActivity"
+ android:exported="false"
+ android:excludeFromRecents="true"
+ android:launchMode="singleTop"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:theme="@style/Theme.Transparent"/>
+
+ <service
+ android:name="com.android.phone.vvm.RemoteVvmTaskManager"
+ android:exported="false"/>
+ <service android:name="com.android.internal.telephony.CellularNetworkService"
+ android:permission="android.permission.BIND_TELEPHONY_NETWORK_SERVICE" >
+ <intent-filter>
+ <action android:name="android.telephony.NetworkService" />
+ </intent-filter>
+ </service>
+ <service android:name="com.android.internal.telephony.dataconnection.CellularDataService"
+ android:permission="android.permission.BIND_TELEPHONY_DATA_SERVICE" >
+ <intent-filter>
+ <action android:name="android.telephony.data.DataService" />
+ </intent-filter>
+ </service>
+
+ <activity
+ android:name=".settings.RadioInfo"
+ android:label="@string/phone_info_label"
+ android:theme="@style/Theme.AppCompat.DayNight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".settings.BandMode"
+ android:label="@string/band_mode_title"
+ android:theme="@style/Theme.AppCompat.DayNight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
+ </intent-filter>
+ </activity>
+
+ <provider
+ android:name="ServiceStateProvider"
+ android:authorities="service-state"
+ android:exported="true"
+ android:multiprocess="false"
+ android:singleUser="true"
+ android:writePermission="android.permission.MODIFY_PHONE_STATE"/>
+ </application>
+</manifest>
diff --git a/client/res/color/settings_text_color_primary.xml b/client/res/color/settings_text_color_primary.xml
new file mode 100644
index 0000000..381465e
--- /dev/null
+++ b/client/res/color/settings_text_color_primary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="false" android:color="@color/setting_disabled_color" />
+ <item android:color="@color/setting_primary_color" />
+</selector>
diff --git a/client/res/color/settings_text_color_secondary.xml b/client/res/color/settings_text_color_secondary.xml
new file mode 100644
index 0000000..7fa4435
--- /dev/null
+++ b/client/res/color/settings_text_color_secondary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="false" android:color="@color/setting_disabled_color" />
+ <item android:color="@color/setting_secondary_color" />
+</selector>
diff --git a/client/res/drawable-hdpi/ic_arrow_back_24dp.png b/client/res/drawable-hdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..86cb894
--- /dev/null
+++ b/client/res/drawable-hdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/client/res/drawable-hdpi/ic_overflow_menu.png b/client/res/drawable-hdpi/ic_overflow_menu.png
new file mode 100644
index 0000000..262e9df
--- /dev/null
+++ b/client/res/drawable-hdpi/ic_overflow_menu.png
Binary files differ
diff --git a/client/res/drawable-mdpi/ic_arrow_back_24dp.png b/client/res/drawable-mdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..dc81cd1
--- /dev/null
+++ b/client/res/drawable-mdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/client/res/drawable-mdpi/ic_overflow_menu.png b/client/res/drawable-mdpi/ic_overflow_menu.png
new file mode 100644
index 0000000..0e720dd
--- /dev/null
+++ b/client/res/drawable-mdpi/ic_overflow_menu.png
Binary files differ
diff --git a/client/res/drawable-xhdpi/ic_arrow_back_24dp.png b/client/res/drawable-xhdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..4f4fbaa
--- /dev/null
+++ b/client/res/drawable-xhdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/client/res/drawable-xhdpi/ic_overflow_menu.png b/client/res/drawable-xhdpi/ic_overflow_menu.png
new file mode 100644
index 0000000..9156076
--- /dev/null
+++ b/client/res/drawable-xhdpi/ic_overflow_menu.png
Binary files differ
diff --git a/client/res/drawable-xxhdpi/ic_arrow_back_24dp.png b/client/res/drawable-xxhdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..46e90f7
--- /dev/null
+++ b/client/res/drawable-xxhdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/client/res/drawable-xxhdpi/ic_overflow_menu.png b/client/res/drawable-xxhdpi/ic_overflow_menu.png
new file mode 100644
index 0000000..92526f5
--- /dev/null
+++ b/client/res/drawable-xxhdpi/ic_overflow_menu.png
Binary files differ
diff --git a/client/res/drawable-xxxhdpi/ic_arrow_back_24dp.png b/client/res/drawable-xxxhdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..3b72636
--- /dev/null
+++ b/client/res/drawable-xxxhdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/client/res/drawable-xxxhdpi/ic_overflow_menu.png b/client/res/drawable-xxxhdpi/ic_overflow_menu.png
new file mode 100644
index 0000000..9028bd4
--- /dev/null
+++ b/client/res/drawable-xxxhdpi/ic_overflow_menu.png
Binary files differ
diff --git a/client/res/drawable/ic_back_arrow.xml b/client/res/drawable/ic_back_arrow.xml
new file mode 100644
index 0000000..72997b0
--- /dev/null
+++ b/client/res/drawable/ic_back_arrow.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/ic_arrow_back_24dp"
+ android:autoMirrored="true"
+ android:tint="@color/actionbar_icon_color" />
\ No newline at end of file
diff --git a/client/res/drawable/overflow_menu.xml b/client/res/drawable/overflow_menu.xml
new file mode 100644
index 0000000..0467d6b
--- /dev/null
+++ b/client/res/drawable/overflow_menu.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2014 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/ic_overflow_menu"
+ android:autoMirrored="true"
+ android:tint="@color/actionbar_icon_color" />
diff --git a/client/res/mipmap-hdpi/ic_launcher_contacts.png b/client/res/mipmap-hdpi/ic_launcher_contacts.png
new file mode 100644
index 0000000..64eff00
--- /dev/null
+++ b/client/res/mipmap-hdpi/ic_launcher_contacts.png
Binary files differ
diff --git a/client/res/mipmap-hdpi/ic_launcher_phone.png b/client/res/mipmap-hdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..15c4142
--- /dev/null
+++ b/client/res/mipmap-hdpi/ic_launcher_phone.png
Binary files differ
diff --git a/client/res/mipmap-mdpi/ic_launcher_contacts.png b/client/res/mipmap-mdpi/ic_launcher_contacts.png
new file mode 100644
index 0000000..b4ee821
--- /dev/null
+++ b/client/res/mipmap-mdpi/ic_launcher_contacts.png
Binary files differ
diff --git a/client/res/mipmap-mdpi/ic_launcher_phone.png b/client/res/mipmap-mdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..3088f75
--- /dev/null
+++ b/client/res/mipmap-mdpi/ic_launcher_phone.png
Binary files differ
diff --git a/client/res/mipmap-xhdpi/ic_launcher_contacts.png b/client/res/mipmap-xhdpi/ic_launcher_contacts.png
new file mode 100644
index 0000000..6feeadf
--- /dev/null
+++ b/client/res/mipmap-xhdpi/ic_launcher_contacts.png
Binary files differ
diff --git a/client/res/mipmap-xhdpi/ic_launcher_phone.png b/client/res/mipmap-xhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..e87de01
--- /dev/null
+++ b/client/res/mipmap-xhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/client/res/mipmap-xxhdpi/ic_launcher_contacts.png b/client/res/mipmap-xxhdpi/ic_launcher_contacts.png
new file mode 100644
index 0000000..01a3fde
--- /dev/null
+++ b/client/res/mipmap-xxhdpi/ic_launcher_contacts.png
Binary files differ
diff --git a/client/res/mipmap-xxhdpi/ic_launcher_phone.png b/client/res/mipmap-xxhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..b866b79
--- /dev/null
+++ b/client/res/mipmap-xxhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/client/res/mipmap-xxxhdpi/ic_launcher_contacts.png b/client/res/mipmap-xxxhdpi/ic_launcher_contacts.png
new file mode 100644
index 0000000..328e067
--- /dev/null
+++ b/client/res/mipmap-xxxhdpi/ic_launcher_contacts.png
Binary files differ
diff --git a/client/res/mipmap-xxxhdpi/ic_launcher_phone.png b/client/res/mipmap-xxxhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..26f51f1
--- /dev/null
+++ b/client/res/mipmap-xxxhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/client/res/values/colors.xml b/client/res/values/colors.xml
new file mode 100644
index 0000000..4cf4bd0
--- /dev/null
+++ b/client/res/values/colors.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- Color matches dialer settings light M2 theme.-->
+ <color name="dialer_background_color">#ffffff</color>
+ <color name="dialer_divider_color">#d8d8d8</color>
+ <color name="dialer_primary_text_color">#202124</color>
+
+ <!-- Settings screen should use the same colors as the Dialer -->
+ <color name="phone_settings_background_color">#f5f5f5</color>
+ <!-- Action bar text color. Ensure this stays in sync with dialer_icon_color in action bar. -->
+ <color name="phone_settings_actionbar_text_color">#5f6368</color>
+ <!-- Background color of action bars. Ensure this stays in sync with Dialer
+ actionbar_background_color. -->
+ <color name="actionbar_background_color">#ffffff</color>
+ <!-- Dark variant of the action bar color. Ensure this stays in sync with Dialer version. -->
+ <color name="actionbar_background_color_dark">#ffffff</color>
+ <!-- Color for icons in the actionbar. Ensure this stays in sync with Dialer version. -->
+ <color name="actionbar_icon_color">#5f6368</color>
+
+ <!-- Color for the setting text. -->
+ <color name="setting_primary_color">#333333</color>
+ <!-- Color for the setting description text. -->
+ <color name="setting_secondary_color">#737373</color>
+ <color name="setting_disabled_color">#aaaaaa</color>
+
+ <color name="dialer_theme_color">#2A56C6</color>
+ <color name="dialer_theme_color_dark">#1C3AA9</color>
+ <color name="dialpad_icon_tint">#b3b3b3</color>
+
+</resources>
\ No newline at end of file
diff --git a/client/res/values/dimens.xml b/client/res/values/dimens.xml
new file mode 100644
index 0000000..c6acbd7
--- /dev/null
+++ b/client/res/values/dimens.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <!-- Action bar dimensions. Keep in sync with same value in Dialer. -->
+ <dimen name="action_bar_height">56dp</dimen>
+ <dimen name="action_bar_elevation">2dp</dimen>
+ <dimen name="actionbar_contentInsetStart">72dp</dimen>
+ <!-- The text size for titles in settings page.-->
+ <dimen name="dialer_head1_font_size">18dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/client/res/values/strings.xml b/client/res/values/strings.xml
new file mode 100644
index 0000000..1d002a2
--- /dev/null
+++ b/client/res/values/strings.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Official label of the phone app, as seen in "Manage Applications"
+ and other settings UIs. This is the version of the label for
+ tablet devices, where the phone app handles mobile data but not
+ actual phone calls. -->
+ <string name="phoneAppLabel" product="tablet">Mobile Data</string>
+
+ <!-- Official label of the phone app, as seen in "Manage Applications"
+ and other settings UIs. -->
+ <string name="phoneAppLabel" product="default">Phone Services</string>
+
+ <!-- Screen title for Emergency Dialer UI -->
+ <string name="emergencyDialerIconLabel">Emergency Dialer</string>
+
+ <!-- Title of FDN list screen -->
+ <string name="fdnListLabel">FDN list</string>
+
+ <!-- Call settings: title of the dialog that lets you select contacts from the SIM. -->
+ <string name="simContacts_title">Select contacts to import</string>
+
+ <string name="gsm_umts_options">GSM/UMTS Options</string>
+ <string name="cdma_options">CDMA Options</string>
+
+ <!-- Call settings screen title -->
+ <string name="call_settings">Call settings</string>
+
+ <!-- Call settings screen, setting option name -->
+ <string name="labelCF">Call forwarding</string>
+
+ <!-- Call settings screen, setting option name -->
+ <string name="labelCallBarring">Call barring</string>
+
+ <!-- GSM Call settings screen, setting option name. [CHAR LIMIT=40] -->
+ <string name="labelGSMMore">GSM call settings</string>
+
+ <!-- Label for "Fixed Dialing Number" settings in call settings. -->
+ <string name="fdn">Fixed Dialing Numbers</string>
+ <!-- Label for PIN2 entry screen -->
+ <string name="get_pin2">Type PIN2</string>
+ <!-- Title of "Delete FDN Contact" screen -->
+ <string name="delete_fdn_contact">Delete fixed dialing number</string>
+
+ <!-- Title of "Enable/disable SIM PIN" screen -->
+ <string name="enable_pin">Enable/disable SIM PIN</string>
+ <!-- Title of "Change SIM PIN" screen -->
+ <string name="change_pin">Change SIM PIN</string>
+
+ <!-- Title for activity to control accessibility settings such as TTY mode and hearing aid
+ compatibility. [CHAR LIMIT=40] -->
+ <string name="accessibility_settings_activity_title">Accessibility</string>
+
+ <!-- Emergency Callback Mode (ECM) -->
+ <string name="ecm_exit_dialog">EcmExitDialog</string>
+
+ <!-- Label for SIP connection service. -->
+ <string name="sip_connection_service_label">Built-in SIP calling</string>
+
+ <!-- Label for settings screen for phone accounts. -->
+ <string name="phone_accounts">Calling accounts</string>
+
+ <!-- Call settings screen, setting option name -->
+ <string name="voicemail">Voicemail</string>
+
+ <!-- Label for PSTN connection service. -->
+ <string name="pstn_connection_service_label">Built-in SIM cards</string>
+
+ <!-- The title of the activity to see phone info -->
+ <string name="phone_info_label" product="tablet">Tablet info</string>
+ <!-- The title of the activity to see phone info -->
+ <string name="phone_info_label" product="default">Phone info</string>
+
+ <!-- Band mode screen. Title of activity. -->
+ <string name="band_mode_title">Set Radio Band Mode</string>
+</resources>
\ No newline at end of file
diff --git a/client/res/values/styles.xml b/client/res/values/styles.xml
new file mode 100644
index 0000000..a3ded4a
--- /dev/null
+++ b/client/res/values/styles.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:phone="http://schemas.android.com/apk/res/com.android.phone.lib">
+ <style name="EmergencyDialerTheme" parent="@phone:style/EmergencyDialerTheme" />
+
+ <!-- Action bar overflow menu icon. -->
+ <style name="DialtactsActionBarOverflow" parent="@phone:style/DialtactsActionBarOverflow" />
+
+ <!-- Style for the call settings action bar. Should be kept in sync with Dialer. -->
+ <style name="DialtactsActionBarStyle" parent="@phone:style/DialtactsActionBarStyle" />
+
+ <!-- Text in the action bar at the top of the screen. Should be kept in sync with Dialer. -->
+ <style name="DialtactsActionBarTitleText" parent="@phone:style/DialtactsActionBarTitleText" />
+
+ <style name="TelephonyActionBarStyle" parent="@phone:style/TelephonyActionBarStyle" />
+
+ <style name="SimImportTheme" parent="@phone:style/SimImportTheme" />
+
+ <style name="SettingsLight" parent="@phone:style/SettingsLight" />
+
+ <style name="DialerSettingsLight" parent="@phone:style/DialerSettingsLight" />
+
+ <style name="DialerAlertDialogTheme" parent="@phone:style/DialerAlertDialogTheme" />
+
+ <style name="CallSettingsWithoutDividerTheme" parent="@phone:style/CallSettingsWithoutDividerTheme" />
+
+ <style name="Empty" parent="@phone:style/Empty" />
+
+ <style name="Theme.Transparent" parent="@phone:style/Theme.Transparent" />
+
+ <style name="DialpadNoSpaceStyle" parent="@phone:style/DialpadNoSpaceStyle" />
+
+ <style name="Dialpad_DarkTransparent" parent="@phone:style/Dialpad_DarkTransparent" />
+</resources>
\ No newline at end of file
diff --git a/client/src/com/android/services/telephony/sip/components/TelephonySipService.java b/client/src/com/android/services/telephony/sip/components/TelephonySipService.java
new file mode 100644
index 0000000..5b863b1
--- /dev/null
+++ b/client/src/com/android/services/telephony/sip/components/TelephonySipService.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.services.telephony.sip.components;
+
+import android.app.Service;
+import android.content.Intent;
+import android.net.sip.SipManager;
+import android.os.IBinder;
+
+import com.android.server.sip.SipService;
+
+/**
+ * This class represents telephony SIP service which handle start SIP service requests from
+ * Telephony.
+ */
+public class TelephonySipService extends Service {
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ if ((intent != null)
+ && SipManager.ACTION_START_SIP.equals(intent.getAction())) {
+ SipService.start(this);
+ }
+ return START_STICKY;
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+}