Merge commit '1071dd7523cbacbf6c8c1306f958435465ca8084' from
oc-mr1-dev-plus-aosp-without-vendor into stage-aosp-master
Change-Id: I5604336aef76a427ad34fa4541497b0549bc0d66
Merged-In: Ib8021d308781d8c941c10d231d5bad8896bdb370
diff --git a/res/drawable-hdpi/ic_sim_sub1.png b/res/drawable-hdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..dc24b06
--- /dev/null
+++ b/res/drawable-hdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sim_sub2.png b/res/drawable-hdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..297bc72
--- /dev/null
+++ b/res/drawable-hdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-hdpi/stat_sys_phone_call_forward.png b/res/drawable-hdpi/stat_sys_phone_call_forward.png
index 4b7c236..e8d3149 100644
--- a/res/drawable-hdpi/stat_sys_phone_call_forward.png
+++ b/res/drawable-hdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sim_sub1.png b/res/drawable-ldrtl-hdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..9ec62ca
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sim_sub2.png b/res/drawable-ldrtl-hdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..23559bf
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/stat_sys_phone_call_forward.png b/res/drawable-ldrtl-hdpi/stat_sys_phone_call_forward.png
index 132b0e5..ff5451c 100644
--- a/res/drawable-ldrtl-hdpi/stat_sys_phone_call_forward.png
+++ b/res/drawable-ldrtl-hdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sim_sub1.png b/res/drawable-ldrtl-mdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..64ab4c6
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sim_sub2.png b/res/drawable-ldrtl-mdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..c0aebdd
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/stat_sys_phone_call_forward.png b/res/drawable-ldrtl-mdpi/stat_sys_phone_call_forward.png
index d49745f..a42b5bb 100644
--- a/res/drawable-ldrtl-mdpi/stat_sys_phone_call_forward.png
+++ b/res/drawable-ldrtl-mdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sim_sub1.png b/res/drawable-ldrtl-xhdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..2513c24
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sim_sub2.png b/res/drawable-ldrtl-xhdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..1d50b29
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/stat_sys_phone_call_forward.png b/res/drawable-ldrtl-xhdpi/stat_sys_phone_call_forward.png
index 4cce562..81791a8 100644
--- a/res/drawable-ldrtl-xhdpi/stat_sys_phone_call_forward.png
+++ b/res/drawable-ldrtl-xhdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-ldrtl-xxhdpi/ic_sim_sub1.png b/res/drawable-ldrtl-xxhdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..4355c12
--- /dev/null
+++ b/res/drawable-ldrtl-xxhdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-ldrtl-xxhdpi/ic_sim_sub2.png b/res/drawable-ldrtl-xxhdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..2bbc1ef
--- /dev/null
+++ b/res/drawable-ldrtl-xxhdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-ldrtl-xxhdpi/stat_sys_phone_call_forward.png b/res/drawable-ldrtl-xxhdpi/stat_sys_phone_call_forward.png
new file mode 100644
index 0000000..8c68bf8
--- /dev/null
+++ b/res/drawable-ldrtl-xxhdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sim_sub1.png b/res/drawable-mdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..8d04637
--- /dev/null
+++ b/res/drawable-mdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sim_sub2.png b/res/drawable-mdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..f3201d6
--- /dev/null
+++ b/res/drawable-mdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-mdpi/stat_sys_phone_call_forward.png b/res/drawable-mdpi/stat_sys_phone_call_forward.png
index a21718c..5975172 100644
--- a/res/drawable-mdpi/stat_sys_phone_call_forward.png
+++ b/res/drawable-mdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sim_sub1.png b/res/drawable-xhdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..2f512ee
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sim_sub2.png b/res/drawable-xhdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..777a7a6
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-xhdpi/stat_sys_phone_call_forward.png b/res/drawable-xhdpi/stat_sys_phone_call_forward.png
index 578a42a..76ffc5c 100644
--- a/res/drawable-xhdpi/stat_sys_phone_call_forward.png
+++ b/res/drawable-xhdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_sim_sub1.png b/res/drawable-xxhdpi/ic_sim_sub1.png
new file mode 100644
index 0000000..720c326
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_sim_sub1.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_sim_sub2.png b/res/drawable-xxhdpi/ic_sim_sub2.png
new file mode 100644
index 0000000..992aff6
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_sim_sub2.png
Binary files differ
diff --git a/res/drawable-xxhdpi/stat_sys_phone_call_forward.png b/res/drawable-xxhdpi/stat_sys_phone_call_forward.png
new file mode 100644
index 0000000..9bc3435
--- /dev/null
+++ b/res/drawable-xxhdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/res/drawable/stat_notify_voicemail_sub1.xml b/res/drawable/stat_notify_voicemail_sub1.xml
new file mode 100644
index 0000000..0884557
--- /dev/null
+++ b/res/drawable/stat_notify_voicemail_sub1.xml
@@ -0,0 +1,25 @@
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:drawable="@android:drawable/stat_notify_voicemail"
+ android:gravity="center">
+ </item>
+ <item
+ android:drawable="@drawable/ic_sim_sub1"
+ android:gravity="center|top">
+ </item>
+</layer-list>
diff --git a/res/drawable/stat_notify_voicemail_sub2.xml b/res/drawable/stat_notify_voicemail_sub2.xml
new file mode 100644
index 0000000..3b63649
--- /dev/null
+++ b/res/drawable/stat_notify_voicemail_sub2.xml
@@ -0,0 +1,25 @@
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:drawable="@android:drawable/stat_notify_voicemail"
+ android:gravity="center">
+ </item>
+ <item
+ android:drawable="@drawable/ic_sim_sub2"
+ android:gravity="center|top">
+ </item>
+</layer-list>
diff --git a/res/drawable/stat_sys_phone_call_forward_sub1.xml b/res/drawable/stat_sys_phone_call_forward_sub1.xml
new file mode 100644
index 0000000..93f4ff6
--- /dev/null
+++ b/res/drawable/stat_sys_phone_call_forward_sub1.xml
@@ -0,0 +1,26 @@
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:drawable="@drawable/stat_sys_phone_call_forward"
+ android:gravity="center">
+ </item>
+ <item
+ android:drawable="@drawable/ic_sim_sub1"
+ android:autoMirrored="true"
+ android:gravity="start|bottom">
+ </item>
+</layer-list>
diff --git a/res/drawable/stat_sys_phone_call_forward_sub2.xml b/res/drawable/stat_sys_phone_call_forward_sub2.xml
new file mode 100644
index 0000000..fa91222
--- /dev/null
+++ b/res/drawable/stat_sys_phone_call_forward_sub2.xml
@@ -0,0 +1,26 @@
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:drawable="@drawable/stat_sys_phone_call_forward"
+ android:gravity="center">
+ </item>
+ <item
+ android:drawable="@drawable/ic_sim_sub2"
+ android:autoMirrored="true"
+ android:gravity="start|bottom">
+ </item>
+</layer-list>
diff --git a/res/layout/edit_fdn_contact_screen.xml b/res/layout/edit_fdn_contact_screen.xml
index 24e0c6b..c7ba0d4 100644
--- a/res/layout/edit_fdn_contact_screen.xml
+++ b/res/layout/edit_fdn_contact_screen.xml
@@ -31,7 +31,8 @@
android:singleLine="true"
android:scrollHorizontally="true"
android:autoText="false"
- android:capitalize="words" />
+ android:capitalize="words"
+ android:textAlignment="viewStart" />
<EditText android:id="@+id/fdn_number"
android:hint="@string/number"
@@ -42,7 +43,8 @@
android:singleLine="true"
android:scrollHorizontally="true"
android:autoText="false"
- android:capitalize="none" />
+ android:capitalize="none"
+ android:textAlignment="viewStart" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
diff --git a/sip/res/values-bn/strings.xml b/sip/res/values-bn/strings.xml
index fc238ea..17c698d 100644
--- a/sip/res/values-bn/strings.xml
+++ b/sip/res/values-bn/strings.xml
@@ -20,7 +20,7 @@
<string name="sip_accounts" msgid="85559497282185405">"SIP অ্যাকাউন্টগুলি"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"অ্যাকাউন্টগুলি"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"আগত কলগুলি গ্রহণ করুন"</string>
- <string name="sip_receive_calls_summary" msgid="946161517528227523">"আরো বেশি ব্যাটারি লাইফ ব্যবহার করে"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"আরও বেশি ব্যাটারি লাইফ ব্যবহার করে"</string>
<string name="sip_call_options_title" msgid="8421210494703869806">"SIP কলিং ব্যবহার করুন"</string>
<string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP কলিং ব্যবহার করুন (শুধুমাত্র ওয়াই-ফাই)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"যখন ডেটা নেটওয়ার্ক উপলব্ধ তখন সব কলের জন্য"</string>
@@ -31,7 +31,7 @@
<string name="sip_account_list" msgid="5610858485304821480">"SIP অ্যাকাউন্টগুলি"</string>
<string name="saving_account" msgid="5336529880235177448">"অ্যাকাউন্টটি সংরক্ষণ করা হচ্ছে ..."</string>
<string name="removing_account" msgid="5537351356808985756">"অ্যাকাউন্টটি সরানো হচ্ছে…"</string>
- <string name="sip_menu_save" msgid="7882219814563869225">"সংরক্ষণ করুন"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"সেভ করুন"</string>
<string name="sip_menu_discard" msgid="2350421645423888438">"খারিজ করুন"</string>
<string name="alert_dialog_close" msgid="1326011828713435134">"প্রোফাইলটি বন্ধ করুন"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ঠিক আছে"</string>
@@ -45,13 +45,13 @@
<string name="registration_status_not_running" msgid="514205414303796800">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে৷"</string>
<string name="registration_status_done" msgid="3264961069247314253">"কলগুলি গ্রহণ করা হচ্ছে৷"</string>
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); পরে আবার চেষ্টা করা হবে"</string>
- <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে: ভুল ব্যবহারকারী নাম বা পাসওয়ার্ড৷"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে: ভুল ইউজারনেম বা পাসওয়ার্ড৷"</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে: সার্ভারের নাম পরীক্ষা করুন৷"</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"এই অ্যাকাউন্টটি বর্তমানে <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> অ্যাপ্লিকেশানের দ্বারা ব্যবহৃত হচ্ছে৷"</string>
<string name="sip_edit_title" msgid="1967247832635750410">"SIP অ্যাকাউন্টের বিবরণ"</string>
<string name="sip_edit_new_title" msgid="266414118302574305">"SIP অ্যাকাউন্টের বিবরণ"</string>
<string name="domain_address_title" msgid="1968479941328225423">"সার্ভার"</string>
- <string name="username_title" msgid="6770064611005663470">"ব্যবহারকারীর নাম"</string>
+ <string name="username_title" msgid="6770064611005663470">"ইউজারনেম"</string>
<string name="password_title" msgid="5289013731515564295">"পাসওয়ার্ড"</string>
<string name="display_name_title" msgid="579241787583079773">"প্রদর্শন নাম"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"বহির্গামী প্রক্সি ঠিকানা"</string>
@@ -59,8 +59,8 @@
<string name="transport_title" msgid="889155457465372527">"পরিবহনের ধরন"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"সক্রিয়-রাখুন অনুরোধ পাঠান"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ঐচ্ছিক সেটিংস"</string>
- <string name="auth_username_title" msgid="8262491689004708265">"প্রমাণীকরণের ব্যবহারকারীর নাম"</string>
- <string name="auth_username_summary" msgid="941160241371436473">"প্রমাণীকরণের জন্য ব্যবহৃত ব্যবহারকারী নাম"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"প্রমাণীকরণের ইউজারনেম"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"প্রমাণীকরণের জন্য ব্যবহৃত ইউজারনেম"</string>
<string name="default_preference_summary_username" msgid="8404717434312826082">"<সেট করা নেই>"</string>
<string name="default_preference_summary_password" msgid="4464464672997027904">"<সেট করা নেই>"</string>
<string name="default_preference_summary_domain_address" msgid="4871971710197441673">"<সেট করা নেই>"</string>
diff --git a/sip/res/values-in/strings.xml b/sip/res/values-in/strings.xml
index c2f40b7..1c59a30 100644
--- a/sip/res/values-in/strings.xml
+++ b/sip/res/values-in/strings.xml
@@ -76,5 +76,5 @@
<string name="no_voip" msgid="3038021971231952704">"Panggilan SIP tidak didukung"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Otomatis"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Selalu kirim"</string>
- <string name="sip_connection_service_label" msgid="6935325004265884453">"Panggilan SIP bawaan"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Panggilan SIP built-in"</string>
</resources>
diff --git a/sip/res/values-sk/strings.xml b/sip/res/values-sk/strings.xml
index 872edcb..a410294 100644
--- a/sip/res/values-sk/strings.xml
+++ b/sip/res/values-sk/strings.xml
@@ -22,7 +22,7 @@
<string name="sip_receive_calls" msgid="426678617137462173">"Prijímať prichádzajúce hovory"</string>
<string name="sip_receive_calls_summary" msgid="946161517528227523">"Viac vybíja batériu"</string>
<string name="sip_call_options_title" msgid="8421210494703869806">"Používanie volania SIP"</string>
- <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Používanie volania SIP (iba Wi-Fi)"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Používanie volania SIP (iba Wi‑Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Pre všetky hovory, pokiaľ je k dispozícii dátová sieť"</string>
<string name="sip_call_options_entry_2" msgid="1815335903940609729">"Iba pre hovory SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Pre všetky hovory"</string>
@@ -41,7 +41,7 @@
<string name="registration_status_still_trying" msgid="7648151061205513458">"Prebiehajú ďalšie pokusy..."</string>
<string name="registration_status_not_receiving" msgid="7620333886153361090">"Hovory sa neprijímajú."</string>
<string name="registration_status_no_data" msgid="2541999976218192413">"Registrácia účtu bola zastavená, pretože pripojenie k internetu nie je k dispozícii."</string>
- <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Registrácia účtu bola zastavená, pretože pripojenie Wi-Fi nie je k dispozícii."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Registrácia účtu bola zastavená, pretože pripojenie Wi‑Fi nie je k dispozícii."</string>
<string name="registration_status_not_running" msgid="514205414303796800">"Registrácia účtu nebola úspešná."</string>
<string name="registration_status_done" msgid="3264961069247314253">"Príjem hovorov."</string>
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"Registrácia účtu nebola úspešná: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); skúsime to neskôr"</string>
@@ -72,7 +72,7 @@
<string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je povinné a nemôže zostať prázdne."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Číslo portu by malo byť od 1 000 do 65 534."</string>
<string name="no_internet_available" msgid="5523747991760017298">"Ak chcete uskutočniť hovor SIP, najprv skontrolujte svoje internetové pripojenie."</string>
- <string name="no_wifi_available" msgid="1955023904229673488">"Uskutočnenie hovorov SIP vyžaduje pripojenie k sieti Wi-Fi (použite nastavenia bezdrôtovej siete)."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Uskutočnenie hovorov SIP vyžaduje pripojenie k sieti Wi‑Fi (použite nastavenia bezdrôtovej siete)."</string>
<string name="no_voip" msgid="3038021971231952704">"Volanie SIP nie je podporované"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automaticky"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Vždy odoslať"</string>
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 1d264fb..e5527bc 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -42,6 +42,7 @@
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
+import android.telephony.ims.feature.ImsFeature;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -50,6 +51,7 @@
import android.widget.Toast;
import com.android.ims.ImsConfig;
+import com.android.ims.ImsException;
import com.android.ims.ImsManager;
import com.android.internal.telephony.CallForwardInfo;
import com.android.internal.telephony.Phone;
@@ -105,6 +107,7 @@
private static final String ENABLE_VIDEO_CALLING_KEY = "button_enable_video_calling";
private Phone mPhone;
+ private ImsManager mImsMgr;
private SubscriptionInfoHelper mSubscriptionInfoHelper;
private TelecomManager mTelecomManager;
@@ -188,6 +191,17 @@
mTelecomManager = TelecomManager.from(this);
}
+ private void updateImsManager(Phone phone) {
+ log("updateImsManager :: phone.getContext()=" + phone.getContext()
+ + " phone.getPhoneId()=" + phone.getPhoneId());
+ mImsMgr = ImsManager.getInstance(phone.getContext(), phone.getPhoneId());
+ if (mImsMgr == null) {
+ log("updateImsManager :: Could not get ImsManager instance!");
+ } else {
+ log("updateImsManager :: mImsMgr=" + mImsMgr);
+ }
+ }
+
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
@@ -210,6 +224,7 @@
protected void onResume() {
super.onResume();
+ updateImsManager(mPhone);
PreferenceScreen preferenceScreen = getPreferenceScreen();
if (preferenceScreen != null) {
preferenceScreen.removeAll();
@@ -347,6 +362,19 @@
}
wifiCallingSettings.setSummary(resId);
}
+
+ try {
+ if (mImsMgr.getImsServiceStatus() != ImsFeature.STATE_READY) {
+ log("Feature state not ready so remove vt and wfc settings for "
+ + " phone =" + mPhone.getPhoneId());
+ prefSet.removePreference(wifiCallingSettings);
+ prefSet.removePreference(mEnableVideoCalling);
+ }
+ } catch (ImsException ex) {
+ log("Exception when trying to get ImsServiceStatus: " + ex);
+ prefSet.removePreference(wifiCallingSettings);
+ prefSet.removePreference(mEnableVideoCalling);
+ }
}
/**
diff --git a/src/com/android/phone/CallForwardEditPreference.java b/src/com/android/phone/CallForwardEditPreference.java
index 32e91d0..8a82e05 100644
--- a/src/com/android/phone/CallForwardEditPreference.java
+++ b/src/com/android/phone/CallForwardEditPreference.java
@@ -162,7 +162,18 @@
}
setToggled(callForwardInfo.status == 1);
- setPhoneNumber(callForwardInfo.number);
+ boolean displayVoicemailNumber = false;
+ if (TextUtils.isEmpty(callForwardInfo.number)) {
+ PersistableBundle carrierConfig =
+ PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+ if (carrierConfig != null) {
+ displayVoicemailNumber = carrierConfig.getBoolean(CarrierConfigManager
+ .KEY_DISPLAY_VOICEMAIL_NUMBER_AS_DEFAULT_CALL_FORWARDING_NUMBER_BOOL);
+ Log.d(LOG_TAG, "display voicemail number as default");
+ }
+ }
+ String voicemailNumber = mPhone.getVoiceMailNumber();
+ setPhoneNumber(displayVoicemailNumber ? voicemailNumber : callForwardInfo.number);
}
private void updateSummaryText() {
diff --git a/src/com/android/phone/CallNotifier.java b/src/com/android/phone/CallNotifier.java
index 3f44130..d084e92 100644
--- a/src/com/android/phone/CallNotifier.java
+++ b/src/com/android/phone/CallNotifier.java
@@ -44,10 +44,15 @@
import android.util.ArrayMap;
import android.util.Log;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import com.android.internal.telephony.SubscriptionController;
+
/**
* Phone app module that listens for phone state changes and various other
* events from the telephony layer, and triggers any resulting UI behavior
@@ -68,7 +73,8 @@
private Map<Integer, CallNotifierPhoneStateListener> mPhoneStateListeners =
new ArrayMap<Integer, CallNotifierPhoneStateListener>();
-
+ private Map<Integer, Boolean> mCFIStatus = new ArrayMap<Integer, Boolean>();
+ private Map<Integer, Boolean> mMWIStatus = new ArrayMap<Integer, Boolean>();
private PhoneGlobals mApplication;
private CallManager mCM;
private BluetoothHeadset mBluetoothHeadset;
@@ -140,7 +146,7 @@
new OnSubscriptionsChangedListener() {
@Override
public void onSubscriptionsChanged() {
- updatePhoneStateListeners();
+ updatePhoneStateListeners(true);
}
});
}
@@ -571,14 +577,26 @@
SHOW_MESSAGE_NOTIFICATION_TIME);
}
- public void updatePhoneStateListeners() {
+ public void updatePhoneStateListeners(boolean isRefresh) {
List<SubscriptionInfo> subInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
- // Unregister phone listeners for inactive subscriptions.
- Iterator<Integer> itr = mPhoneStateListeners.keySet().iterator();
- while (itr.hasNext()) {
- int subId = itr.next();
+ // Sort sub id list based on slot id, so that CFI/MWI notifications will be updated for
+ // slot 0 first then slot 1. This is needed to ensure that when CFI or MWI is enabled for
+ // both slots, user always sees icon related to slot 0 on left side followed by that of
+ // slot 1.
+ List<Integer> subIdList = new ArrayList<Integer>(mPhoneStateListeners.keySet());
+ Collections.sort(subIdList, new Comparator<Integer>() {
+ public int compare(Integer sub1, Integer sub2) {
+ int slotId1 = SubscriptionController.getInstance().getSlotIndex(sub1);
+ int slotId2 = SubscriptionController.getInstance().getSlotIndex(sub2);
+ return slotId1 > slotId2 ? 0 : -1;
+ }
+ });
+
+ for (int subIdCounter = (subIdList.size() - 1); subIdCounter >= 0; subIdCounter--) {
+ int subId = subIdList.get(subIdCounter);
if (subInfos == null || !containsSubId(subInfos, subId)) {
+ Log.d(LOG_TAG, "updatePhoneStateListeners: Hide the outstanding notifications.");
// Hide the outstanding notifications.
mApplication.notificationMgr.updateMwi(subId, false);
mApplication.notificationMgr.updateCfi(subId, false);
@@ -586,7 +604,16 @@
// Listening to LISTEN_NONE removes the listener.
mTelephonyManager.listen(
mPhoneStateListeners.get(subId), PhoneStateListener.LISTEN_NONE);
- itr.remove();
+ mPhoneStateListeners.remove(subId);
+ } else {
+ Log.d(LOG_TAG, "updatePhoneStateListeners: update CF notifications.");
+
+ if (mCFIStatus.containsKey(subId)) {
+ mApplication.notificationMgr.updateCfi(subId, mCFIStatus.get(subId));
+ }
+ if (mMWIStatus.containsKey(subId)) {
+ mApplication.notificationMgr.updateMwi(subId, mMWIStatus.get(subId), isRefresh);
+ }
}
}
@@ -757,14 +784,16 @@
@Override
public void onMessageWaitingIndicatorChanged(boolean visible) {
if (VDBG) log("onMessageWaitingIndicatorChanged(): " + this.mSubId + " " + visible);
- mApplication.notificationMgr.updateMwi(this.mSubId, visible);
+ mMWIStatus.put(this.mSubId, visible);
+ updatePhoneStateListeners(false);
}
@Override
public void onCallForwardingIndicatorChanged(boolean visible) {
Log.i(LOG_TAG, "onCallForwardingIndicatorChanged(): subId=" + this.mSubId
+ ", visible=" + (visible ? "Y" : "N"));
- mApplication.notificationMgr.updateCfi(this.mSubId, visible);
+ mCFIStatus.put(this.mSubId, visible);
+ updatePhoneStateListeners(false);
}
};
diff --git a/src/com/android/phone/EditPhoneNumberPreference.java b/src/com/android/phone/EditPhoneNumberPreference.java
index 98d9ce9..74b8a45 100644
--- a/src/com/android/phone/EditPhoneNumberPreference.java
+++ b/src/com/android/phone/EditPhoneNumberPreference.java
@@ -123,8 +123,8 @@
setDialogLayoutResource(R.layout.pref_dialog_editphonenumber);
//create intent to bring up contact list
- mContactListIntent = new Intent(Intent.ACTION_GET_CONTENT);
- mContactListIntent.setType(Phone.CONTENT_ITEM_TYPE);
+ mContactListIntent = new Intent(Intent.ACTION_PICK);
+ mContactListIntent.setType(Phone.CONTENT_TYPE);
//get the edit phone number default settings
TypedArray a = context.obtainStyledAttributes(attrs,
diff --git a/src/com/android/phone/EmergencyCallbackModeExitDialog.java b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
index f5509b9..765c52d 100644
--- a/src/com/android/phone/EmergencyCallbackModeExitDialog.java
+++ b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
@@ -24,7 +24,7 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.DialogInterface.OnDismissListener;
+import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
@@ -48,7 +48,7 @@
*
* @see EmergencyCallbackModeService
*/
-public class EmergencyCallbackModeExitDialog extends Activity implements OnDismissListener {
+public class EmergencyCallbackModeExitDialog extends Activity implements OnCancelListener {
private static final String TAG = "EmergencyCallbackMode";
@@ -246,7 +246,7 @@
finish();
}
}).create();
- mAlertDialog.setOnDismissListener(this);
+ mAlertDialog.setOnCancelListener(this);
return mAlertDialog;
case EXIT_ECM_IN_EMERGENCY_CALL_DIALOG:
@@ -263,7 +263,7 @@
finish();
}
}).create();
- mAlertDialog.setOnDismissListener(this);
+ mAlertDialog.setOnCancelListener(this);
return mAlertDialog;
case EXIT_ECM_PROGRESS_DIALOG:
@@ -299,10 +299,10 @@
}
/**
- * Closes activity when dialog is dismissed
+ * Closes activity when dialog is canceled
*/
@Override
- public void onDismiss(DialogInterface dialog) {
+ public void onCancel(DialogInterface dialog) {
EmergencyCallbackModeExitDialog.this.setResult(RESULT_OK, (new Intent())
.putExtra(EXTRA_EXIT_ECM_RESULT, false));
finish();
diff --git a/src/com/android/phone/GsmUmtsOptions.java b/src/com/android/phone/GsmUmtsOptions.java
index f08aa06..a68b1cb 100644
--- a/src/com/android/phone/GsmUmtsOptions.java
+++ b/src/com/android/phone/GsmUmtsOptions.java
@@ -21,6 +21,7 @@
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
+import android.preference.TwoStatePreference;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index bc84525..0cd3c05 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -49,6 +49,7 @@
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
+import android.telephony.ims.feature.ImsFeature;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
@@ -64,6 +65,7 @@
import android.widget.TabHost;
import com.android.ims.ImsConfig;
+import com.android.ims.ImsException;
import com.android.ims.ImsManager;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -230,6 +232,7 @@
private UserManager mUm;
private Phone mPhone;
+ private ImsManager mImsMgr;
private MyHandler mHandler;
private boolean mOkClicked;
private boolean mExpandAdvancedFields;
@@ -566,6 +569,13 @@
mPhone = PhoneGlobals.getPhone();
}
Log.i(LOG_TAG, "updatePhone:- slotId=" + slotId + " sir=" + sir);
+
+ mImsMgr = ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+ if (mImsMgr == null) {
+ log("updatePhone :: Could not get ImsManager instance!");
+ } else if (DBG) {
+ log("updatePhone :: mImsMgr=" + mImsMgr);
+ }
}
private TabHost.TabContentFactory mEmptyTabContent = new TabHost.TabContentFactory() {
@@ -983,8 +993,16 @@
android.util.Log.d(LOG_TAG, "keep ltePref");
}
- if (hideEnhanced4gLteSettings(getActivity(), carrierConfig)) {
- Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
+ Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
+ try {
+ if ((mImsMgr.getImsServiceStatus() != ImsFeature.STATE_READY)
+ || hideEnhanced4gLteSettings(getActivity(), carrierConfig)) {
+ if (pref != null) {
+ prefSet.removePreference(pref);
+ }
+ }
+ } catch (ImsException ex) {
+ log("Exception when trying to get ImsServiceStatus: " + ex);
if (pref != null) {
prefSet.removePreference(pref);
}
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index 3d20545..dd8bc23 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -124,27 +124,6 @@
mSubscriptionManager = SubscriptionManager.from(mContext);
mTelecomManager = TelecomManager.from(mContext);
mTelephonyManager = (TelephonyManager) app.getSystemService(Context.TELEPHONY_SERVICE);
-
- mSubscriptionManager.addOnSubscriptionsChangedListener(
- new OnSubscriptionsChangedListener() {
- @Override
- public void onSubscriptionsChanged() {
- updateActivePhonesMwi();
- }
- });
- }
-
- public void updateActivePhonesMwi() {
- List<SubscriptionInfo> subInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
-
- if (subInfos == null) {
- return;
- }
-
- for (int i = 0; i < subInfos.size(); i++) {
- int subId = subInfos.get(i).getSubscriptionId();
- refreshMwi(subId);
- }
}
/**
@@ -196,7 +175,7 @@
if (mMwiVisible.containsKey(subId)) {
boolean mwiVisible = mMwiVisible.get(subId);
if (mwiVisible) {
- updateMwi(subId, mwiVisible, true /* isRefresh */);
+ mApp.notifier.updatePhoneStateListeners(true);
}
}
}
@@ -264,6 +243,10 @@
}
int resId = android.R.drawable.stat_notify_voicemail;
+ if (mTelephonyManager.getPhoneCount() > 1) {
+ resId = (phone.getPhoneId() == 0) ? R.drawable.stat_notify_voicemail_sub1
+ : R.drawable.stat_notify_voicemail_sub2;
+ }
// This Notification can get a lot fancier once we have more
// information about the current voicemail messages.
@@ -484,14 +467,18 @@
}
String notificationTitle;
+ int resId = R.drawable.stat_sys_phone_call_forward;
if (mTelephonyManager.getPhoneCount() > 1) {
+ int slotId = SubscriptionManager.getSlotIndex(subId);
+ resId = (slotId == 0) ? R.drawable.stat_sys_phone_call_forward_sub1
+ : R.drawable.stat_sys_phone_call_forward_sub2;
notificationTitle = subInfo.getDisplayName().toString();
} else {
notificationTitle = mContext.getString(R.string.labelCF);
}
Notification.Builder builder = new Notification.Builder(mContext)
- .setSmallIcon(R.drawable.stat_sys_phone_call_forward)
+ .setSmallIcon(resId)
.setColor(subInfo.getIconTint())
.setContentTitle(notificationTitle)
.setContentText(mContext.getString(R.string.sum_cfu_enabled_indicator))
@@ -512,10 +499,17 @@
builder.build(),
UserHandle.ALL);
} else {
- mNotificationManager.cancelAsUser(
- Integer.toString(subId) /* tag */,
- CALL_FORWARD_NOTIFICATION,
- UserHandle.ALL);
+ List<UserInfo> users = mUserManager.getUsers(true);
+ for (UserInfo user : users) {
+ if (user.isManagedProfile()) {
+ continue;
+ }
+ UserHandle userHandle = user.getUserHandle();
+ mNotificationManager.cancelAsUser(
+ Integer.toString(subId) /* tag */,
+ CALL_FORWARD_NOTIFICATION,
+ userHandle);
+ }
}
}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index e1044c6..ef1065f 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -155,8 +155,6 @@
private static final int EVENT_SET_PREFERRED_NETWORK_TYPE_DONE = 24;
private static final int CMD_SEND_ENVELOPE = 25;
private static final int EVENT_SEND_ENVELOPE_DONE = 26;
- private static final int CMD_INVOKE_OEM_RIL_REQUEST_RAW = 27;
- private static final int EVENT_INVOKE_OEM_RIL_REQUEST_RAW_DONE = 28;
private static final int CMD_TRANSMIT_APDU_BASIC_CHANNEL = 29;
private static final int EVENT_TRANSMIT_APDU_BASIC_CHANNEL_DONE = 30;
private static final int CMD_EXCHANGE_SIM_IO = 31;
@@ -722,21 +720,6 @@
handleNullReturnEvent(msg, "setPreferredNetworkType");
break;
- case CMD_INVOKE_OEM_RIL_REQUEST_RAW:
- request = (MainThreadRequest)msg.obj;
- onCompleted = obtainMessage(EVENT_INVOKE_OEM_RIL_REQUEST_RAW_DONE, request);
- mPhone.invokeOemRilRequestRaw((byte[])request.argument, onCompleted);
- break;
-
- case EVENT_INVOKE_OEM_RIL_REQUEST_RAW_DONE:
- ar = (AsyncResult)msg.obj;
- request = (MainThreadRequest)ar.userObj;
- request.result = ar;
- synchronized (request) {
- request.notifyAll();
- }
- break;
-
case CMD_SET_VOICEMAIL_NUMBER:
request = (MainThreadRequest) msg.obj;
onCompleted = obtainMessage(EVENT_SET_VOICEMAIL_NUMBER_DONE, request);
@@ -3068,39 +3051,6 @@
}
@Override
- @Deprecated
- public int invokeOemRilRequestRaw(byte[] oemReq, byte[] oemResp) {
- enforceModifyPermission();
-
- int returnValue = 0;
- try {
- AsyncResult result = (AsyncResult)sendRequest(CMD_INVOKE_OEM_RIL_REQUEST_RAW, oemReq);
- if(result.exception == null) {
- if (result.result != null) {
- byte[] responseData = (byte[])(result.result);
- if(responseData.length > oemResp.length) {
- Log.w(LOG_TAG, "Buffer to copy response too small: Response length is " +
- responseData.length + "bytes. Buffer Size is " +
- oemResp.length + "bytes.");
- }
- System.arraycopy(responseData, 0, oemResp, 0, responseData.length);
- returnValue = responseData.length;
- }
- } else {
- CommandException ex = (CommandException) result.exception;
- returnValue = ex.getCommandError().ordinal();
- if(returnValue > 0) returnValue *= -1;
- }
- } catch (RuntimeException e) {
- Log.w(LOG_TAG, "sendOemRilRequestRaw: Runtime Exception");
- returnValue = (CommandException.Error.GENERIC_FAILURE.ordinal());
- if(returnValue > 0) returnValue *= -1;
- }
-
- return returnValue;
- }
-
- @Override
public void setRadioCapability(RadioAccessFamily[] rafs) {
try {
ProxyController.getInstance().setRadioCapability(rafs);
diff --git a/src/com/android/phone/PhoneSearchIndexablesProvider.java b/src/com/android/phone/PhoneSearchIndexablesProvider.java
index 1cee227..ed3c7df 100644
--- a/src/com/android/phone/PhoneSearchIndexablesProvider.java
+++ b/src/com/android/phone/PhoneSearchIndexablesProvider.java
@@ -102,7 +102,7 @@
if (!mUserManager.isAdminUser()) {
final String[] values = new String[]{"preferred_network_mode_key", "button_roaming_key",
"cdma_lte_data_service_key", "enabled_networks_key", "enhanced_4g_lte",
- "button_apn_key", "button_carrier_sel_key", "carrier_settings_key",
+ "button_apn_key", "button_network_select_key", "carrier_settings_key",
"cdma_system_select_key", "esim_list_profile"};
for (String nik : values) {
cursor.addRow(createNonIndexableRow(nik));
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index 04e8bf5..4d55421 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -24,6 +24,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.PersistableBundle;
import android.os.UserManager;
import android.preference.Preference;
import android.preference.PreferenceActivity;
@@ -31,6 +32,7 @@
import android.preference.SwitchPreference;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -250,6 +252,10 @@
mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
+ if (!getBooleanCarrierConfig(
+ CarrierConfigManager.KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL)) {
+ mSubMenuVoicemailSettings.setEnabled(false);
+ }
}
mVoicemailProviders = (VoicemailProviderListPreference) findPreference(
@@ -545,6 +551,23 @@
}
}
+ /**
+ * Get the boolean config from carrier config manager.
+ *
+ * @param key config key defined in CarrierConfigManager
+ * @return boolean value of corresponding key.
+ */
+ private boolean getBooleanCarrierConfig(String key) {
+ PersistableBundle b = PhoneGlobals.getInstance()
+ .getCarrierConfigForSubId(mPhone.getSubId());
+ if (b != null) {
+ return b.getBoolean(key);
+ } else {
+ // Return static default defined in CarrierConfigManager.
+ return CarrierConfigManager.getDefaultConfig().getBoolean(key);
+ }
+ }
+
//*********************************************************************************************
// Activity Dialog Methods
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index a420100..48a283a 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -67,6 +67,7 @@
return DisconnectCause.LOCAL;
case android.telephony.DisconnectCause.NORMAL:
+ case android.telephony.DisconnectCause.NORMAL_UNSPECIFIED:
return DisconnectCause.REMOTE;
case android.telephony.DisconnectCause.OUTGOING_CANCELED: