Fix the default sub id returned by SmsManager.
SmsManager.getDefaultSmsSubscriptionId() did not handle the case
of no default set with a single SIM present. This CL adds the
handling for that.
Test: manual SMS sanity on single sim and DSDS devices
Bug: 132259056
Change-Id: I72ee7af9f0b2662e1ac26b7d3db60c667d06c471
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 3b11741..6860235 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -1962,16 +1962,22 @@
}
/**
- * Get default sms subscription id
+ * Get default sms subscription id.
*
- * @return the user-defined default SMS subscription id or
- * {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID} if no default is set.
+ * <p class="note"><strong>Note:</strong>This returns a value different from
+ * {@link SubscriptionManager#getDefaultSmsSubscriptionId} if the user has not chosen a default.
+ * In this case it returns the active subscription id if there's only one active subscription
+ * available.
+ *
+ * @return the user-defined default SMS subscription id, or the active subscription id if
+ * there's only one active subscription available, otherwise
+ * {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}.
*/
public static int getDefaultSmsSubscriptionId() {
try {
- return SubscriptionManager.getDefaultSmsSubscriptionId();
- } catch (NullPointerException ex) {
- return -1;
+ return getISmsServiceOrThrow().getPreferredSmsSubscription();
+ } catch (RemoteException e) {
+ return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
}
}