summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard MacGregor <rmacgregor@cyngn.com>2016-03-10 16:08:36 -0800
committerStephen Bird <sbird@cyngn.com>2016-04-08 10:21:12 -0700
commit94ea6ccdfeca0ecb31dde997f8c1337c43941f92 (patch)
treebe7ccd450e5f7894818ffc3f038d3064268c8f63
parent58f0d082a69e313fd554eac2904c961222bae10b (diff)
downloadandroid_packages_apps_Dialer-94ea6ccdfeca0ecb31dde997f8c1337c43941f92.tar.gz
android_packages_apps_Dialer-94ea6ccdfeca0ecb31dde997f8c1337c43941f92.tar.bz2
android_packages_apps_Dialer-94ea6ccdfeca0ecb31dde997f8c1337c43941f92.zip
Use CALL_ACTION instead of InCallAPI for emergency calls
Don't even attempt to use InCallAPI providers if dialing an emergency number. Ticket CD-503 Change-Id: I9633cc499c453a1db557c44eaca802ec13eb96b2
-rw-r--r--src/com/android/dialer/DialtactsActivity.java30
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java3
-rw-r--r--src/com/android/dialer/list/SearchFragment.java19
3 files changed, 34 insertions, 18 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 2e3d2562f..e76653eb6 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -41,6 +41,8 @@ import android.os.Trace;
import android.provider.CallLog.Calls;
import android.preference.PreferenceManager;
import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.speech.RecognizerIntent;
import android.support.v4.view.ViewPager;
import android.telecom.PhoneAccount;
@@ -1484,12 +1486,21 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
// Only use selected call method if call method spinner is visible (t9 dialpad or search)
CallMethodInfo cmi = isInSearchUi() || isDialpadShown() ? mCurrentCallMethod : null;
- if ((cmi == null || !cmi.mIsInCallProvider) &&
- (TextUtils.isEmpty(mimeType) ||
- TextUtils.equals(mimeType,
- ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) ||
- TextUtils.equals(mimeType,
- ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE))) {
+ boolean isInCallProvider = (cmi != null && cmi.mIsInCallProvider);
+ boolean isEmergencyNumber = PhoneNumberUtils.isEmergencyNumber(phoneNumber);
+ boolean isRegularCallableMimeType = TextUtils.isEmpty(mimeType) ||
+ TextUtils.equals(mimeType, Phone.CONTENT_ITEM_TYPE) ||
+ TextUtils.equals(mimeType, SipAddress.CONTENT_ITEM_TYPE);
+
+ // Assume InCallAPI Provider only if not emergency number and selected call method is incall
+ // provider or number's mimetype is null or a non-incall mimetype
+ if (!isEmergencyNumber && (isInCallProvider || !isRegularCallableMimeType)) {
+ StartCallRequest request = new StartCallRequest(phoneNumber, OriginCodes.CONTACT_SEARCH,
+ 0, new StartInCallCallReceiver(new Handler(Looper.getMainLooper())));
+
+ InCallServices.getInstance().startVoiceCallForMimeType(
+ AmbientConnection.CLIENT.get(this), mimeType, request);
+ } else {
// If no sim is selected, or emergency callmethod selected, or number is
// an emergency number, phone account handle should be null, and will use the
// default account.
@@ -1501,13 +1512,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
IntentUtil.getVideoCallIntent(phoneNumber, getCallOrigin()) :
IntentUtil.getCallIntent(phoneNumber, getCallOrigin(), handle);
DialerUtils.startActivityWithErrorToast(this, intent);
- } else {
- StartCallRequest request = new StartCallRequest(phoneNumber,
- OriginCodes.CONTACT_SEARCH, 0,
- new StartInCallCallReceiver(new Handler(Looper.getMainLooper())));
-
- InCallServices.getInstance().startVoiceCallForMimeType(
- AmbientConnection.CLIENT.get(this), mimeType, request);
}
mClearSearchOnPause = true;
}
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 94c324db0..399564e71 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -1907,7 +1907,8 @@ public class DialpadFragment extends Fragment
}
private void startCall(String number) {
- if (mCurrentCallMethodInfo != null && mCurrentCallMethodInfo.mIsInCallProvider) {
+ if (mCurrentCallMethodInfo != null && mCurrentCallMethodInfo.mIsInCallProvider &&
+ !PhoneNumberUtils.isEmergencyNumber(number)) {
mCurrentCallMethodInfo.placeCall(OriginCodes.DIALPAD_DIRECT_DIAL,
number, getActivity(), false, true);
} else {
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 9bc1bd7db..2088e2405 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -22,12 +22,15 @@ import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
import android.app.Activity;
import android.app.DialogFragment;
+import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -294,7 +297,8 @@ public class SearchFragment extends PhoneNumberPickerFragment
switch (shortcutType) {
case DialerPhoneNumberListAdapter.SHORTCUT_INVALID:
- if (getCurrentCallMethod().mIsInCallProvider) {
+ number = adapter.getQueryString();
+ if (getCurrentCallMethod().mIsInCallProvider && !PhoneNumberUtils.isEmergencyNumber(number)) {
onProviderClick(position, getCurrentCallMethod());
} else {
super.onItemClick(position, id);
@@ -302,7 +306,7 @@ public class SearchFragment extends PhoneNumberPickerFragment
break;
case DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL:
number = adapter.getQueryString();
- if (getCurrentCallMethod().mIsInCallProvider) {
+ if (getCurrentCallMethod().mIsInCallProvider && !PhoneNumberUtils.isEmergencyNumber(number)) {
placePSTNCall(number, getCurrentCallMethod());
} else {
listener = getOnPhoneNumberPickerListener();
@@ -342,8 +346,15 @@ public class SearchFragment extends PhoneNumberPickerFragment
int truePosition = adapter.getShortcutTypeFromPosition(position, true);
int index = DialerPhoneNumberListAdapter.SHORTCUT_COUNT - truePosition - 1;
number = adapter.getQueryString();
- CallMethodInfo cmi = adapter.getProviders().get(index);
- cmi.placeCall(OriginCodes.DIALPAD_T9_SEARCH, number, getContext(), false, true);
+ if (!PhoneNumberUtils.isEmergencyNumber(number)) {
+ CallMethodInfo cmi = adapter.getProviders().get(index);
+ cmi.placeCall(OriginCodes.DIALPAD_T9_SEARCH, number, getContext(), false, true);
+ } else {
+ listener = getOnPhoneNumberPickerListener();
+ if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+ listener.onCallNumberDirectly(number);
+ }
+ }
break;
}
}