Merge "MMS APIs rely on resolveSubscriptionForOperation()" am: e0ae42884d

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1456127

Change-Id: If53101e6ffb038885ff2602c169bef0e4b7e8d2e
This commit is contained in:
Brad Ebinger
2020-10-14 18:44:44 +00:00
committed by Automerger Merge Worker

View File

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