Update showCallScreen to use Telecomm (5/6)
Use TelephonyManager#showCallScreen instead of referencing ITelephony
directly. This way TelephonyManager can accurately route the calls to
Telecomm instead.
Bug: 15008165
Change-Id: Ib674e2e48efaa1cc97d1513dc2c2b27fdb343657
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 2d1e2a7..6a0706f 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -90,7 +90,6 @@
import com.android.dialer.widget.SearchEditTextLayout;
import com.android.dialer.widget.SearchEditTextLayout.OnBackButtonClickedListener;
import com.android.dialerbind.DatabaseHelperManager;
-import com.android.internal.telephony.ITelephony;
import java.util.ArrayList;
import java.util.List;
@@ -750,13 +749,9 @@
// button, go straight to the in-call screen.
final boolean callKey = Intent.ACTION_CALL_BUTTON.equals(intent.getAction());
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (callKey && phone != null && phone.showCallScreen()) {
- return true;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to handle send while in call", e);
+ if (callKey) {
+ getTelephonyManager().showCallScreen();
+ return true;
}
return false;
@@ -981,9 +976,8 @@
}
private boolean phoneIsInUse() {
- final TelephonyManager tm = (TelephonyManager) getSystemService(
- Context.TELEPHONY_SERVICE);
- return tm.getCallState() != TelephonyManager.CALL_STATE_IDLE;
+ // TODO(santoscordon): Replace with a TelecommService method call.
+ return getTelephonyManager().getCallState() != TelephonyManager.CALL_STATE_IDLE;
}
public static Intent getAddNumberToContactIntent(CharSequence text) {
@@ -1138,6 +1132,10 @@
mFloatingActionButtonMarginBottom);
}
+ private TelephonyManager getTelephonyManager() {
+ return (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ }
+
@Override
public boolean isActionBarShowing() {
return mActionBarController.isActionBarShowing();
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 1adfeb8..3eedcda 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -80,7 +80,6 @@
import com.android.dialer.R;
import com.android.dialer.SpecialCharSequenceMgr;
import com.android.dialer.util.DialerUtils;
-import com.android.internal.telephony.ITelephony;
import com.android.phone.common.CallLogAsync;
import com.android.phone.common.HapticFeedback;
@@ -216,9 +215,9 @@
* press/depress of the "hookswitch" of a landline phone. Aka "empty flash".
*
* TODO: Using an intent extra to tell the phone to send this flash is a
- * temporary measure. To be replaced with an ITelephony call in the future.
+ * temporary measure. To be replaced with an Telephony/TelecommManager call in the future.
* TODO: Keep in sync with the string defined in OutgoingCallBroadcaster.java
- * in Phone app until this is replaced with the ITelephony API.
+ * in Phone app until this is replaced with the Telephony/Telecomm API.
*/
private static final String EXTRA_SEND_EMPTY_FLASH
= "com.android.phone.extra.SEND_EMPTY_FLASH";
@@ -1373,12 +1372,7 @@
* or "return to call" from the dialpad chooser.
*/
private void returnToInCallScreen(boolean showDialpad) {
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) phone.showCallScreenWithDialpad(showDialpad);
- } catch (RemoteException e) {
- Log.w(TAG, "phone.showCallScreenWithDialpad() failed", e);
- }
+ getTelephonyManager().showCallScreenWithDialpad(showDialpad);
// Finally, finish() ourselves so that we don't stay on the
// activity stack.