Add error dialogs to Telecomm
* Add error dialog popups for DisconnectCause.INVALID_NUMBER and
VOICEMAIL_NUMBER_MISSING
* Move ErrorDialogActivity from Telephony to Telecomm
* NewOutgoingCallBroadcaster.processIntent now returns an error code
rather than a boolean
Bug: 17209051
Bug: 17196776
Change-Id: Ifc8b23472510fefc0c2763d28f9c990b4598cadd
diff --git a/src/com/android/telecomm/CallActivity.java b/src/com/android/telecomm/CallActivity.java
index 95dee18..0d36c8a 100644
--- a/src/com/android/telecomm/CallActivity.java
+++ b/src/com/android/telecomm/CallActivity.java
@@ -26,6 +26,7 @@
import android.os.UserManager;
import android.telecomm.PhoneAccountHandle;
import android.telecomm.TelecommManager;
+import android.telephony.DisconnectCause;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.widget.Toast;
@@ -47,6 +48,7 @@
* non-emergency numbers just like it did pre-L.
*/
public class CallActivity extends Activity {
+
private CallsManager mCallsManager = CallsManager.getInstance();
private boolean mIsVoiceCapable;
@@ -149,9 +151,11 @@
NewOutgoingCallIntentBroadcaster broadcaster = new NewOutgoingCallIntentBroadcaster(
mCallsManager, call, intent, isDefaultDialer());
- final boolean success = broadcaster.processIntent();
+ final int result = broadcaster.processIntent();
+ final boolean success = result == DisconnectCause.NOT_DISCONNECTED;
+
if (!success && call != null) {
- call.disconnect();
+ disconnectCallAndShowErrorDialog(call, result);
}
setResult(success ? RESULT_OK : RESULT_CANCELED);
}
@@ -209,4 +213,23 @@
return getApplicationContext().getResources().getBoolean(
com.android.internal.R.bool.config_voice_capable);
}
+
+ private void disconnectCallAndShowErrorDialog(Call call, int errorCode) {
+ call.disconnect();
+ final Intent errorIntent = new Intent(this, ErrorDialogActivity.class);
+ int errorMessageId = -1;
+ switch (errorCode) {
+ case DisconnectCause.INVALID_NUMBER:
+ errorMessageId = R.string.outgoing_call_error_no_phone_number_supplied;
+ break;
+ case DisconnectCause.VOICEMAIL_NUMBER_MISSING:
+ errorIntent.putExtra(ErrorDialogActivity.SHOW_MISSING_VOICEMAIL_NO_DIALOG_EXTRA,
+ true);
+ break;
+ }
+ if (errorMessageId != -1) {
+ errorIntent.putExtra(ErrorDialogActivity.ERROR_MESSAGE_ID_EXTRA, errorMessageId);
+ }
+ startActivity(errorIntent);
+ }
}