Add a subId extra to the respond via SMS intent.
In order to support replying to a caller via the same SIM that the
incoming call came through, add an extra to the respond via SMS intent
with the subId.
Bug: 18275919
Change-Id: I48ea3246194cb957045f12fea92a473ac0edaa23
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index 3550201..a156f6a 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -130,7 +130,7 @@
!TextUtils.isDigitsOnly(accountHandle.getId())) {
// Since no decimals or negative numbers can be valid subscription ids, only a string of
// numbers can be subscription id
- return -1;
+ return SubscriptionManager.INVALID_SUB_ID;
}
return Integer.parseInt(accountHandle.getId());
}
diff --git a/src/com/android/server/telecom/RespondViaSmsManager.java b/src/com/android/server/telecom/RespondViaSmsManager.java
index dcfa19a..ae7e713 100644
--- a/src/com/android/server/telecom/RespondViaSmsManager.java
+++ b/src/com/android/server/telecom/RespondViaSmsManager.java
@@ -18,6 +18,7 @@
// TODO: Needed for move to system service: import com.android.internal.R;
import com.android.internal.os.SomeArgs;
+import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.SmsApplication;
import android.content.ComponentName;
@@ -29,6 +30,7 @@
import android.os.Handler;
import android.os.Message;
import android.telecom.Response;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.widget.Toast;
@@ -140,8 +142,12 @@
@Override
public void onIncomingCallRejected(Call call, boolean rejectWithMessage, String textMessage) {
if (rejectWithMessage && call.getHandle() != null) {
+ PhoneAccountRegistrar phoneAccountRegistrar =
+ CallsManager.getInstance().getPhoneAccountRegistrar();
+ int subId = phoneAccountRegistrar.getSubscriptionIdForPhoneAccount(
+ call.getTargetPhoneAccount());
rejectCallWithMessage(call.getContext(), call.getHandle().getSchemeSpecificPart(),
- textMessage);
+ textMessage, subId);
}
}
@@ -174,7 +180,8 @@
/**
* Reject the call with the specified message. If message is null this call is ignored.
*/
- private void rejectCallWithMessage(Context context, String phoneNumber, String textMessage) {
+ private void rejectCallWithMessage(Context context, String phoneNumber, String textMessage,
+ int subId) {
if (textMessage != null) {
final ComponentName component =
SmsApplication.getDefaultRespondViaMessageApplication(context,
@@ -184,6 +191,9 @@
final Uri uri = Uri.fromParts(Constants.SCHEME_SMSTO, phoneNumber, null);
final Intent intent = new Intent(TelephonyManager.ACTION_RESPOND_VIA_MESSAGE, uri);
intent.putExtra(Intent.EXTRA_TEXT, textMessage);
+ if (subId != SubscriptionManager.INVALID_SUB_ID) {
+ intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId);
+ }
SomeArgs args = SomeArgs.obtain();
args.arg1 = phoneNumber;