From 04ac93d3c9d2f3f4c157bfa1d23d225aa34db9df Mon Sep 17 00:00:00 2001 From: erfanian Date: Mon, 9 Oct 2017 15:12:22 -0700 Subject: Add assisted dialing to outbound calls that qualify. * Add missing assisted dialing to calls from contacts in the call log. * Add missing assisted dialing to calls from dialpad and normal search. Bug: 63995025,63995261 Test: unit test PiperOrigin-RevId: 171593967 Change-Id: I4e63ef1dcd7ee1b2b5cbb8ecb4d8da744d90bd66 --- java/com/android/dialer/app/DialtactsActivity.java | 19 ++++++------ .../app/calllog/CallLogListItemViewHolder.java | 34 ++++++++++++---------- .../android/dialer/app/calllog/IntentProvider.java | 15 ++++++++++ 3 files changed, 44 insertions(+), 24 deletions(-) (limited to 'java/com/android/dialer/app') diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 04f1431e4..5f3620b1c 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -43,7 +43,7 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.telecom.PhoneAccount; -import android.telecom.TelecomManager; +import android.telephony.TelephonyManager; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -90,6 +90,7 @@ 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; @@ -97,7 +98,6 @@ import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.constants.ActivityRequestCodes; import com.android.dialer.contactsfragment.ContactsFragment; @@ -1488,13 +1488,14 @@ public class DialtactsActivity extends TransactionSafeActivity } Intent intent = - new CallIntentBuilder(phoneNumber, callSpecificAppData).setIsVideoCall(isVideoCall).build(); - - if (callSpecificAppData.getAllowAssistedDialing()) { - Bundle extras = new Bundle(); - extras.putBoolean(TelephonyManagerCompat.ALLOW_ASSISTED_DIAL, true); - intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras); - } + new CallIntentBuilder(phoneNumber, callSpecificAppData) + .setIsVideoCall(isVideoCall) + .setAllowAssistedDial( + callSpecificAppData.getAllowAssistedDialing(), + ConcreteCreator.createNewAssistedDialingMediator( + getApplication().getSystemService(TelephonyManager.class), + getApplicationContext())) + .build(); DialerUtils.startActivityWithErrorToast(this, intent); mClearSearchOnPause = true; diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java index 60acb55fc..f0eee112b 100644 --- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java +++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java @@ -23,7 +23,6 @@ import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.AsyncTask; -import android.os.Bundle; import android.provider.CallLog; import android.provider.CallLog.Calls; import android.provider.ContactsContract.CommonDataKinds.Phone; @@ -38,6 +37,7 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.PhoneNumberUtils; +import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; @@ -69,7 +69,6 @@ import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; -import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.constants.ActivityRequestCodes; import com.android.dialer.contactphoto.ContactPhotoManager; @@ -532,8 +531,16 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder // Call to generic voicemail number, in case there are multiple accounts. primaryActionButtonView.setTag(IntentProvider.getReturnVoicemailCallIntentProvider()); } else { - primaryActionButtonView.setTag( - IntentProvider.getReturnCallIntentProvider(number + postDialDigits)); + if (this.info != null && this.info.lookupKey != null) { + primaryActionButtonView.setTag( + IntentProvider.getAssistedDialIntentProvider( + number + postDialDigits, + mContext, + mContext.getSystemService(TelephonyManager.class))); + } else { + primaryActionButtonView.setTag( + IntentProvider.getReturnCallIntentProvider(number + postDialDigits)); + } } primaryActionButtonView.setContentDescription( @@ -592,8 +599,14 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text)); if (canPlaceCallToNumber) { - callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number)); - callTypeOrLocationView.setVisibility(View.GONE); + if (this.info != null && this.info.lookupKey != null) { + callButtonView.setTag( + IntentProvider.getAssistedDialIntentProvider( + number, mContext, mContext.getSystemService(TelephonyManager.class))); + } else { + callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number)); + callTypeOrLocationView.setVisibility(View.GONE); + } } if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) { @@ -911,15 +924,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder return; } - if (info != null && info.lookupKey != null) { - Bundle extras = new Bundle(); - if (intent.hasExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS)) { - extras = intent.getParcelableExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS); - } - extras.putBoolean(TelephonyManagerCompat.ALLOW_ASSISTED_DIAL, true); - intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras); - } - // We check to see if we are starting a Lightbringer intent. The reason is Lightbringer // intents need to be started using startActivityForResult instead of the usual startActivity String packageName = intent.getPackage(); diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java index 55fdbbace..52a7b0faf 100644 --- a/java/com/android/dialer/app/calllog/IntentProvider.java +++ b/java/com/android/dialer/app/calllog/IntentProvider.java @@ -22,8 +22,10 @@ import android.content.Intent; import android.net.Uri; import android.provider.ContactsContract; 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; @@ -59,6 +61,19 @@ public abstract class IntentProvider { }; } + public static IntentProvider getAssistedDialIntentProvider( + final String number, final Context context, final TelephonyManager telephonyManager) { + return new IntentProvider() { + @Override + public Intent getIntent(Context context) { + return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) + .setAllowAssistedDial( + true, ConcreteCreator.createNewAssistedDialingMediator(telephonyManager, context)) + .build(); + } + }; + } + public static IntentProvider getReturnVideoCallIntentProvider(final String number) { return getReturnVideoCallIntentProvider(number, null); } -- cgit v1.2.3