From dc8688bcae1455c028508ee03485c36a65efd46f Mon Sep 17 00:00:00 2001 From: Nancy Chen Date: Wed, 17 Sep 2014 14:47:41 -0700 Subject: Replace get*PhoneAccounts* public API methods with new method (3/3) Hide getCallCapablePhoneAccounts and getPhoneAccountsSupportingScheme because a third party app should not be able to see all phone accounts registered. Also pass available phone accounts for the user to select from through Telecom to InCallUI so InCallUI will not be calling the Telecom API directly to get these accounts. Bug: 17510811 Change-Id: Ia0398ec35cc576b946a85a10f6f58a74fcd5191b --- InCallUI/src/com/android/incallui/InCallActivity.java | 17 +++++++++++++++-- .../incallui/SelectPhoneAccountDialogFragment.java | 14 +++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) (limited to 'InCallUI') diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index b511df467..2941e1e8d 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -30,6 +30,7 @@ import android.graphics.Point; import android.net.Uri; import android.os.Bundle; import android.telecom.DisconnectCause; +import android.telecom.PhoneAccountHandle; import android.text.TextUtils; import android.view.MenuItem; import android.view.animation.Animation; @@ -45,6 +46,8 @@ import com.android.phone.common.animation.AnimationListenerAdapter; import com.android.contacts.common.interactions.TouchPointManager; import com.android.incallui.Call.State; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; /** @@ -492,9 +495,19 @@ public class InCallActivity extends Activity { Call pendingAccountSelectionCall = CallList.getInstance().getWaitingForAccountCall(); if (pendingAccountSelectionCall != null) { mCallCardFragment.setVisible(false); - Uri handle = pendingAccountSelectionCall.getHandle(); + Bundle extras = pendingAccountSelectionCall + .getTelecommCall().getDetails().getExtras(); + + final List phoneAccountHandles; + if (extras != null) { + phoneAccountHandles = extras.getParcelableArrayList( + android.telecom.Call.AVAILABLE_PHONE_ACCOUNTS); + } else { + phoneAccountHandles = new ArrayList<>(); + } + SelectPhoneAccountDialogFragment.showAccountDialog(getFragmentManager(), - handle.getScheme()); + phoneAccountHandles); } else { mCallCardFragment.setVisible(true); } diff --git a/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java b/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java index aeb14dfbf..49f23b72b 100644 --- a/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java +++ b/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java @@ -46,23 +46,24 @@ public class SelectPhoneAccountDialogFragment extends DialogFragment { private List mAccountHandles; private boolean mIsSelected; private TelecomManager mTelecomManager; - private final String mUriScheme; /** * Shows the account selection dialog. * This is the preferred way to show this dialog. * * @param fragmentManager The fragment manager. - * @param uriScheme The URI scheme of the call we need to choose an account for. + * @param accountHandles The {@code PhoneAccountHandle}s available to select from. */ - public static void showAccountDialog(FragmentManager fragmentManager, String uriScheme) { - SelectPhoneAccountDialogFragment fragment = new SelectPhoneAccountDialogFragment(uriScheme); + public static void showAccountDialog(FragmentManager fragmentManager, + List accountHandles) { + SelectPhoneAccountDialogFragment fragment = + new SelectPhoneAccountDialogFragment(accountHandles); fragment.show(fragmentManager, "selectAccount"); } - public SelectPhoneAccountDialogFragment(String uriScheme) { + public SelectPhoneAccountDialogFragment(List accountHandles) { super(); - mUriScheme = uriScheme; + mAccountHandles = accountHandles; } @Override @@ -70,7 +71,6 @@ public class SelectPhoneAccountDialogFragment extends DialogFragment { mIsSelected = false; mTelecomManager = (TelecomManager) getActivity().getSystemService(Context.TELECOM_SERVICE); - mAccountHandles = mTelecomManager.getPhoneAccountsSupportingScheme(mUriScheme); final DialogInterface.OnClickListener selectionListener = new DialogInterface.OnClickListener() { -- cgit v1.2.3