Merge "Allow SimDialogActivity to be started for result"
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 853f80d..5a45fb4 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.res.Resources;
+import android.content.Intent;
 import android.os.Bundle;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
@@ -50,11 +51,15 @@
 
     public static String PREFERRED_SIM = "preferred_sim";
     public static String DIALOG_TYPE_KEY = "dialog_type";
+    // sub ID returned from startActivityForResult
+    public static String RESULT_SUB_ID = "result_sub_id";
     public static final int INVALID_PICK = -1;
     public static final int DATA_PICK = 0;
     public static final int CALLS_PICK = 1;
     public static final int SMS_PICK = 2;
     public static final int PREFERRED_PICK = 3;
+    // Show the "select SMS subscription" dialog, but don't save as default, just return a result
+    public static final int SMS_PICK_FOR_MESSAGE = 4;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -65,6 +70,7 @@
             case DATA_PICK:
             case CALLS_PICK:
             case SMS_PICK:
+            case SMS_PICK_FOR_MESSAGE:
                 createDialog(this, dialogType).show();
                 break;
             case PREFERRED_PICK:
@@ -179,6 +185,14 @@
                                 sir = subInfoList.get(value);
                                 setDefaultSmsSubId(context, sir.getSubscriptionId());
                                 break;
+                            case SMS_PICK_FOR_MESSAGE:
+                                sir = subInfoList.get(value);
+                                // Don't set a default here.
+                                // The caller has created this dialog waiting for a result.
+                                Intent intent = new Intent();
+                                intent.putExtra(RESULT_SUB_ID, sir.getSubscriptionId());
+                                setResult(Activity.RESULT_OK, intent);
+                                break;
                             default:
                                 throw new IllegalArgumentException("Invalid dialog type "
                                         + id + " in SIM dialog.");
@@ -250,8 +264,11 @@
                 builder.setTitle(R.string.select_sim_for_calls);
                 break;
             case SMS_PICK:
+                // intentional fallthrough
+            case SMS_PICK_FOR_MESSAGE:
                 builder.setTitle(R.string.sim_card_select_title);
                 break;
+
             default:
                 throw new IllegalArgumentException("Invalid dialog type "
                         + id + " in SIM dialog.");