Merge "MMS APIs rely on resolveSubscriptionForOperation()"

This commit is contained in:
Brad Ebinger
2020-10-14 18:28:48 +00:00
committed by Gerrit Code Review

View File

@@ -2514,13 +2514,12 @@ public final class SmsManager {
/** /**
* Send an MMS message * Send an MMS message
* *
* <p class="note"><strong>Note:</strong> This method will never trigger an SMS disambiguation * <p class="note"><strong>Note:</strong> If {@link #getDefault()} is used to instantiate this
* dialog. If this method is called on a device that has multiple active subscriptions, this * manager on a multi-SIM device, this operation may fail sending the MMS message because no
* {@link SmsManager} instance has been created with {@link #getDefault()}, and no user-defined * suitable default subscription could be found. In this case, if {@code sentIntent} is
* default subscription is defined, the subscription ID associated with this message will be * non-null, then the {@link PendingIntent} will be sent with an error code
* INVALID, which will result in the operation being completed on the subscription associated * {@code RESULT_NO_DEFAULT_SMS_APP}. See {@link #getDefault()} for more information on the
* with logical slot 0. Use {@link #getSmsManagerForSubscriptionId(int)} to ensure the * conditions where this operation may fail.
* operation is performed on the correct subscription.
* </p> * </p>
* *
* @param context application context * @param context application context
@@ -2539,21 +2538,30 @@ public final class SmsManager {
} }
MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE); MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
if (m != null) { if (m != null) {
m.sendMultimediaMessage(getSubscriptionId(), contentUri, locationUrl, configOverrides, resolveSubscriptionForOperation(new SubscriptionResolverResult() {
sentIntent, 0L /* messageId */); @Override
public void onSuccess(int subId) {
m.sendMultimediaMessage(subId, contentUri, locationUrl, configOverrides,
sentIntent, 0L /* messageId */);
}
@Override
public void onFailure() {
notifySmsError(sentIntent, RESULT_NO_DEFAULT_SMS_APP);
}
});
} }
} }
/** /**
* Download an MMS message from carrier by a given location URL * Download an MMS message from carrier by a given location URL
* *
* <p class="note"><strong>Note:</strong> This method will never trigger an SMS disambiguation * <p class="note"><strong>Note:</strong> If {@link #getDefault()} is used to instantiate this
* dialog. If this method is called on a device that has multiple active subscriptions, this * manager on a multi-SIM device, this operation may fail downloading the MMS message because no
* {@link SmsManager} instance has been created with {@link #getDefault()}, and no user-defined * suitable default subscription could be found. In this case, if {@code downloadedIntent} is
* default subscription is defined, the subscription ID associated with this message will be * non-null, then the {@link PendingIntent} will be sent with an error code
* INVALID, which will result in the operation being completed on the subscription associated * {@code RESULT_NO_DEFAULT_SMS_APP}. See {@link #getDefault()} for more information on the
* with logical slot 0. Use {@link #getSmsManagerForSubscriptionId(int)} to ensure the * conditions where this operation may fail.
* operation is performed on the correct subscription.
* </p> * </p>
* *
* @param context application context * @param context application context
@@ -2576,8 +2584,18 @@ public final class SmsManager {
} }
MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE); MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
if (m != null) { if (m != null) {
m.downloadMultimediaMessage(getSubscriptionId(), locationUrl, contentUri, resolveSubscriptionForOperation(new SubscriptionResolverResult() {
configOverrides, downloadedIntent, 0L /* messageId */); @Override
public void onSuccess(int subId) {
m.downloadMultimediaMessage(subId, locationUrl, contentUri, configOverrides,
downloadedIntent, 0L /* messageId */);
}
@Override
public void onFailure() {
notifySmsError(downloadedIntent, RESULT_NO_DEFAULT_SMS_APP);
}
});
} }
} }