diff options
6 files changed, 93 insertions, 70 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 12c191e53..089ffd389 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -44,7 +44,6 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.telecom.PhoneAccount; -import android.telephony.TelephonyManager; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -90,7 +89,6 @@ import com.android.dialer.app.list.SmartDialSearchFragment; import com.android.dialer.app.settings.DialerSettingsActivity; import com.android.dialer.app.widget.ActionBarController; import com.android.dialer.app.widget.SearchEditTextLayout; -import com.android.dialer.assisteddialing.ConcreteCreator; import com.android.dialer.callcomposer.CallComposerActivity; import com.android.dialer.calldetails.CallDetailsActivity; import com.android.dialer.callintent.CallInitiationType; @@ -1521,11 +1519,7 @@ public class DialtactsActivity extends TransactionSafeActivity Intent intent = new CallIntentBuilder(phoneNumber, callSpecificAppData) .setIsVideoCall(isVideoCall) - .setAllowAssistedDial( - callSpecificAppData.getAllowAssistedDialing(), - ConcreteCreator.createNewAssistedDialingMediator( - getApplication().getSystemService(TelephonyManager.class), - getApplicationContext())) + .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()) .build(); DialerUtils.startActivityWithErrorToast(this, intent); diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java index 36e62c379..5180651da 100644 --- a/java/com/android/dialer/app/calllog/IntentProvider.java +++ b/java/com/android/dialer/app/calllog/IntentProvider.java @@ -26,7 +26,6 @@ import android.telecom.PhoneAccountHandle; import android.telephony.TelephonyManager; import com.android.contacts.common.model.Contact; import com.android.contacts.common.model.ContactLoader; -import com.android.dialer.assisteddialing.ConcreteCreator; import com.android.dialer.calldetails.CallDetailsActivity; import com.android.dialer.calldetails.CallDetailsEntries; import com.android.dialer.callintent.CallInitiationType; @@ -67,8 +66,7 @@ public abstract class IntentProvider { @Override public Intent getIntent(Context context) { return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) - .setAllowAssistedDial( - true, ConcreteCreator.createNewAssistedDialingMediator(telephonyManager, context)) + .setAllowAssistedDial(true) .build(); } }; diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java index 3a3c9118a..6ba31e624 100644 --- a/java/com/android/dialer/calldetails/CallDetailsActivity.java +++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java @@ -30,10 +30,8 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar.OnMenuItemClickListener; -import android.telephony.TelephonyManager; import android.view.MenuItem; import android.widget.Toast; -import com.android.dialer.assisteddialing.ConcreteCreator; import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; @@ -243,10 +241,7 @@ public class CallDetailsActivity extends AppCompatActivity CallIntentBuilder callIntentBuilder = new CallIntentBuilder(phoneNumber + postDialDigits, CallInitiationType.Type.CALL_DETAILS); if (canSupportedAssistedDialing) { - callIntentBuilder.setAllowAssistedDial( - true, - ConcreteCreator.createNewAssistedDialingMediator( - getSystemService(TelephonyManager.class), this)); + callIntentBuilder.setAllowAssistedDial(true); } DialerUtils.startActivityWithErrorToast(this, callIntentBuilder.build()); diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java index 25a5803dc..aabeabdc8 100644 --- a/java/com/android/dialer/callintent/CallIntentBuilder.java +++ b/java/com/android/dialer/callintent/CallIntentBuilder.java @@ -16,11 +16,11 @@ package com.android.dialer.callintent; -import android.annotation.TargetApi; import android.content.Intent; import android.net.Uri; -import android.os.Build; import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -30,23 +30,22 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.text.TextUtils; -import com.android.dialer.assisteddialing.AssistedDialingMediator; -import com.android.dialer.assisteddialing.TransformationInfo; +import com.android.dialer.callintent.CallInitiationType.Type; import com.android.dialer.common.Assert; -import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.util.CallUtil; -import java.util.Optional; +import com.google.protobuf.InvalidProtocolBufferException; /** Creates an intent to start a new outgoing call. */ -public class CallIntentBuilder { - private final Uri uri; +public class CallIntentBuilder implements Parcelable { + private Uri uri; private final CallSpecificAppData callSpecificAppData; @Nullable private PhoneAccountHandle phoneAccountHandle; private boolean isVideoCall; private String callSubject; private boolean allowAssistedDial; - private AssistedDialingMediator assistedDialingMediator; + + private final Bundle outgoingCallExtras = new Bundle(); private static int lightbringerButtonAppearInExpandedCallLogItemCount = 0; private static int lightbringerButtonAppearInCollapsedCallLogItemCount = 0; @@ -96,6 +95,23 @@ public class CallIntentBuilder { this(CallUtil.getCallUri(Assert.isNotNull(number)), callInitiationType); } + public CallIntentBuilder(@NonNull Parcel parcel) { + ClassLoader classLoader = CallIntentBuilder.class.getClassLoader(); + uri = parcel.readParcelable(classLoader); + CallSpecificAppData data; + try { + data = CallSpecificAppData.parseFrom(parcel.createByteArray()); + } catch (InvalidProtocolBufferException e) { + data = createCallSpecificAppData(Type.UNKNOWN_INITIATION); + } + callSpecificAppData = data; + phoneAccountHandle = parcel.readParcelable(classLoader); + isVideoCall = parcel.readInt() != 0; + callSubject = parcel.readString(); + allowAssistedDial = parcel.readInt() != 0; + outgoingCallExtras.putAll(parcel.readBundle(classLoader)); + } + public static CallIntentBuilder forVoicemail( @Nullable PhoneAccountHandle phoneAccountHandle, CallInitiationType.Type callInitiationType) { return new CallIntentBuilder( @@ -103,6 +119,14 @@ public class CallIntentBuilder { .setPhoneAccountHandle(phoneAccountHandle); } + public void setUri(@NonNull Uri uri) { + this.uri = Assert.isNotNull(uri); + } + + public Uri getUri() { + return uri; + } + public CallSpecificAppData getCallSpecificAppData() { return callSpecificAppData; } @@ -112,40 +136,54 @@ public class CallIntentBuilder { return this; } + @Nullable + public PhoneAccountHandle getPhoneAccountHandle() { + return phoneAccountHandle; + } + public CallIntentBuilder setIsVideoCall(boolean isVideoCall) { this.isVideoCall = isVideoCall; return this; } - public CallIntentBuilder setAllowAssistedDial( - boolean allowAssistedDial, @NonNull AssistedDialingMediator assistedDialingMediator) { - this.assistedDialingMediator = Assert.isNotNull(assistedDialingMediator); + public boolean isVideoCall() { + return isVideoCall; + } + + public CallIntentBuilder setAllowAssistedDial(boolean allowAssistedDial) { this.allowAssistedDial = allowAssistedDial; return this; } + public boolean isAssistedDialAllowed() { + return allowAssistedDial; + } + public CallIntentBuilder setCallSubject(String callSubject) { this.callSubject = callSubject; return this; } + public String getCallSubject() { + return callSubject; + } + + public Bundle getOutgoingCallExtras() { + return outgoingCallExtras; + } + public Intent build() { Intent intent = new Intent(Intent.ACTION_CALL, uri); - Bundle extras = new Bundle(); - if (allowAssistedDial - && this.assistedDialingMediator != null - && this.assistedDialingMediator.isPlatformEligible()) { - intent = buildAssistedDialingParameters(intent, extras); - } intent.putExtra( TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, isVideoCall ? VideoProfile.STATE_BIDIRECTIONAL : VideoProfile.STATE_AUDIO_ONLY); - extras.putLong(Constants.EXTRA_CALL_CREATED_TIME_MILLIS, SystemClock.elapsedRealtime()); - CallIntentParser.putCallSpecificAppData(extras, callSpecificAppData); + outgoingCallExtras.putLong( + Constants.EXTRA_CALL_CREATED_TIME_MILLIS, SystemClock.elapsedRealtime()); + CallIntentParser.putCallSpecificAppData(outgoingCallExtras, callSpecificAppData); - intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras); + intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, outgoingCallExtras); if (phoneAccountHandle != null) { intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle); @@ -158,26 +196,6 @@ public class CallIntentBuilder { return intent; } - @SuppressWarnings("AndroidApiChecker") // Use of optional - @TargetApi(Build.VERSION_CODES.N) - private Intent buildAssistedDialingParameters(Intent intent, Bundle extras) { - extras.putBoolean(TelephonyManagerCompat.ALLOW_ASSISTED_DIAL, true); - String phoneNumber = - uri.getScheme().equals(PhoneAccount.SCHEME_TEL) ? uri.getSchemeSpecificPart() : ""; - Optional<TransformationInfo> transformedNumber = - assistedDialingMediator.attemptAssistedDial(phoneNumber); - if (transformedNumber.isPresent()) { - Bundle assistedDialingExtras = transformedNumber.get().toBundle(); - extras.putBoolean(TelephonyManagerCompat.IS_ASSISTED_DIALED, true); - extras.putBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS, assistedDialingExtras); - intent = - new Intent( - Intent.ACTION_CALL, - CallUtil.getCallUri(Assert.isNotNull(transformedNumber.get().transformedNumber()))); - } - return intent; - } - private static @NonNull CallSpecificAppData createCallSpecificAppData( CallInitiationType.Type callInitiationType) { CallSpecificAppData callSpecificAppData = @@ -218,4 +236,33 @@ public class CallIntentBuilder { lightbringerButtonAppearInExpandedCallLogItemCount = 0; lightbringerButtonAppearInSearchCount = 0; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(uri, flags); + dest.writeByteArray(callSpecificAppData.toByteArray()); + dest.writeParcelable(phoneAccountHandle, flags); + dest.writeInt(isVideoCall ? 1 : 0); + dest.writeString(callSubject); + dest.writeInt(allowAssistedDial ? 1 : 0); + dest.writeBundle(outgoingCallExtras); + } + + public static final Creator<CallIntentBuilder> CREATOR = + new Creator<CallIntentBuilder>() { + @Override + public CallIntentBuilder createFromParcel(Parcel source) { + return new CallIntentBuilder(source); + } + + @Override + public CallIntentBuilder[] newArray(int size) { + return new CallIntentBuilder[0]; + } + }; } diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java index ac744cce7..255f6c380 100644 --- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java +++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java @@ -41,7 +41,6 @@ import android.provider.ContactsContract.RawContacts; import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import android.support.v4.app.ActivityCompat; -import android.telephony.TelephonyManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -53,7 +52,6 @@ import com.android.contacts.common.Collapser; import com.android.contacts.common.Collapser.Collapsible; import com.android.contacts.common.MoreContactUtils; import com.android.contacts.common.util.ContactDisplayUtils; -import com.android.dialer.assisteddialing.ConcreteCreator; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.callintent.CallIntentParser; @@ -187,10 +185,7 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> { intent = new CallIntentBuilder(phoneNumber, callSpecificAppData) .setIsVideoCall(isVideoCall) - .setAllowAssistedDial( - callSpecificAppData.getAllowAssistedDialing(), - ConcreteCreator.createNewAssistedDialingMediator( - context.getSystemService(TelephonyManager.class), context)) + .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()) .build(); break; } diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java index cd42a7476..c0a6700eb 100644 --- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java +++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java @@ -32,7 +32,6 @@ import android.support.annotation.VisibleForTesting; import android.support.v13.app.FragmentCompat; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.telephony.TelephonyManager; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -44,7 +43,6 @@ import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor; import com.android.dialer.animation.AnimUtils; -import com.android.dialer.assisteddialing.ConcreteCreator; import com.android.dialer.callcomposer.CallComposerActivity; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; @@ -488,11 +486,7 @@ public final class NewSearchFragment extends Fragment Intent intent = new CallIntentBuilder(phoneNumber, callSpecificAppData) .setIsVideoCall(isVideoCall) - .setAllowAssistedDial( - allowAssistedDial, - ConcreteCreator.createNewAssistedDialingMediator( - getContext().getSystemService(TelephonyManager.class), - getContext().getApplicationContext())) + .setAllowAssistedDial(allowAssistedDial) .build(); DialerUtils.startActivityWithErrorToast(getActivity(), intent); FragmentUtils.getParentUnsafe(this, SearchFragmentListener.class).onCallPlaced(); |