Merge "Pipe through attributeTag for one SMS permission check" am: 2a9c3e49ba

Change-Id: Icb2e48499fac6caea8bbbce0805d4ce6ffe6ed79
This commit is contained in:
Philip P. Moltmann
2020-03-21 05:32:35 +00:00
committed by Automerger Merge Worker
6 changed files with 71 additions and 47 deletions

View File

@@ -9100,7 +9100,8 @@ package android.telephony {
method public boolean enableCellBroadcastRange(int, int, int); method public boolean enableCellBroadcastRange(int, int, int);
method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_MESSAGES_ON_ICC) public java.util.List<android.telephony.SmsMessage> getMessagesFromIcc(); method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_MESSAGES_ON_ICC) public java.util.List<android.telephony.SmsMessage> getMessagesFromIcc();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSmsCapacityOnIcc(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSmsCapacityOnIcc();
method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String); method @Deprecated public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String);
method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String, @Nullable String);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
} }

View File

@@ -3227,7 +3227,8 @@ package android.telephony {
public final class SmsManager { public final class SmsManager {
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String);
method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String); method @Deprecated public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String);
method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String, @Nullable String);
field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1 field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1
field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0 field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0
field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3 field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3

View File

@@ -389,7 +389,7 @@ public final class SmsManager {
String destinationAddress, String scAddress, String text, String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent) { PendingIntent sentIntent, PendingIntent deliveryIntent) {
sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent, sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,
true /* persistMessage*/, null); true /* persistMessage*/, null, null);
} }
/** /**
@@ -507,7 +507,7 @@ public final class SmsManager {
private void sendTextMessageInternal(String destinationAddress, String scAddress, private void sendTextMessageInternal(String destinationAddress, String scAddress,
String text, PendingIntent sentIntent, PendingIntent deliveryIntent, String text, PendingIntent sentIntent, PendingIntent deliveryIntent,
boolean persistMessage, String packageName) { boolean persistMessage, String packageName, String attributionTag) {
if (TextUtils.isEmpty(destinationAddress)) { if (TextUtils.isEmpty(destinationAddress)) {
throw new IllegalArgumentException("Invalid destinationAddress"); throw new IllegalArgumentException("Invalid destinationAddress");
} }
@@ -532,7 +532,7 @@ public final class SmsManager {
public void onSuccess(int subId) { public void onSuccess(int subId) {
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
try { try {
iSms.sendTextForSubscriber(subId, packageName, iSms.sendTextForSubscriber(subId, packageName, attributionTag,
destinationAddress, scAddress, text, sentIntent, deliveryIntent, destinationAddress, scAddress, text, sentIntent, deliveryIntent,
persistMessage); persistMessage);
} catch (RemoteException e) { } catch (RemoteException e) {
@@ -552,7 +552,7 @@ public final class SmsManager {
// visible to the user. // visible to the user.
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
try { try {
iSms.sendTextForSubscriber(getSubscriptionId(), packageName, iSms.sendTextForSubscriber(getSubscriptionId(), packageName, attributionTag,
destinationAddress, scAddress, text, sentIntent, deliveryIntent, destinationAddress, scAddress, text, sentIntent, deliveryIntent,
persistMessage); persistMessage);
} catch (RemoteException e) { } catch (RemoteException e) {
@@ -599,7 +599,7 @@ public final class SmsManager {
String destinationAddress, String scAddress, String text, String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent) { PendingIntent sentIntent, PendingIntent deliveryIntent) {
sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent, sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,
false /* persistMessage */, null); false /* persistMessage */, null, null);
} }
private void sendTextMessageInternal( private void sendTextMessageInternal(
@@ -882,7 +882,24 @@ public final class SmsManager {
String destinationAddress, String scAddress, ArrayList<String> parts, String destinationAddress, String scAddress, ArrayList<String> parts,
ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) { ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) {
sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents, sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
deliveryIntents, true /* persistMessage*/, null); deliveryIntents, true /* persistMessage*/, null, null);
}
/**
* @deprecated Use {@link #sendMultipartTextMessage(String, String, List, List, List, String,
* String)} instead.
*
* @hide
*/
@Deprecated
@SystemApi
@TestApi
public void sendMultipartTextMessage(
@NonNull String destinationAddress, @NonNull String scAddress,
@NonNull List<String> parts, @Nullable List<PendingIntent> sentIntents,
@Nullable List<PendingIntent> deliveryIntents, @NonNull String packageName) {
sendMultipartTextMessage(destinationAddress, scAddress, parts, sentIntents, deliveryIntents,
packageName, null);
} }
/** /**
@@ -909,15 +926,16 @@ public final class SmsManager {
public void sendMultipartTextMessage( public void sendMultipartTextMessage(
@NonNull String destinationAddress, @NonNull String scAddress, @NonNull String destinationAddress, @NonNull String scAddress,
@NonNull List<String> parts, @Nullable List<PendingIntent> sentIntents, @NonNull List<String> parts, @Nullable List<PendingIntent> sentIntents,
@Nullable List<PendingIntent> deliveryIntents, @NonNull String packageName) { @Nullable List<PendingIntent> deliveryIntents, @NonNull String packageName,
@Nullable String attributionTag) {
sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents, sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
deliveryIntents, true /* persistMessage*/, packageName); deliveryIntents, true /* persistMessage*/, packageName, attributionTag);
} }
private void sendMultipartTextMessageInternal( private void sendMultipartTextMessageInternal(
String destinationAddress, String scAddress, List<String> parts, String destinationAddress, String scAddress, List<String> parts,
List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents, List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents,
boolean persistMessage, String packageName) { boolean persistMessage, String packageName, String attributionTag) {
if (TextUtils.isEmpty(destinationAddress)) { if (TextUtils.isEmpty(destinationAddress)) {
throw new IllegalArgumentException("Invalid destinationAddress"); throw new IllegalArgumentException("Invalid destinationAddress");
} }
@@ -942,7 +960,7 @@ public final class SmsManager {
public void onSuccess(int subId) { public void onSuccess(int subId) {
try { try {
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
iSms.sendMultipartTextForSubscriber(subId, packageName, iSms.sendMultipartTextForSubscriber(subId, packageName, attributionTag,
destinationAddress, scAddress, parts, sentIntents, destinationAddress, scAddress, parts, sentIntents,
deliveryIntents, persistMessage); deliveryIntents, persistMessage);
} catch (RemoteException e) { } catch (RemoteException e) {
@@ -963,8 +981,8 @@ public final class SmsManager {
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
if (iSms != null) { if (iSms != null) {
iSms.sendMultipartTextForSubscriber(getSubscriptionId(), packageName, iSms.sendMultipartTextForSubscriber(getSubscriptionId(), packageName,
destinationAddress, scAddress, parts, sentIntents, deliveryIntents, attributionTag, destinationAddress, scAddress, parts, sentIntents,
persistMessage); deliveryIntents, persistMessage);
} }
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "sendMultipartTextMessageInternal: Couldn't send SMS - " Log.e(TAG, "sendMultipartTextMessageInternal: Couldn't send SMS - "
@@ -982,7 +1000,7 @@ public final class SmsManager {
deliveryIntent = deliveryIntents.get(0); deliveryIntent = deliveryIntents.get(0);
} }
sendTextMessageInternal(destinationAddress, scAddress, parts.get(0), sendTextMessageInternal(destinationAddress, scAddress, parts.get(0),
sentIntent, deliveryIntent, true, packageName); sentIntent, deliveryIntent, true, packageName, attributionTag);
} }
} }
@@ -1012,7 +1030,7 @@ public final class SmsManager {
String destinationAddress, String scAddress, List<String> parts, String destinationAddress, String scAddress, List<String> parts,
List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents) { List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents) {
sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents, sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
deliveryIntents, false /* persistMessage*/, null); deliveryIntents, false /* persistMessage*/, null, null);
} }
/** /**
@@ -1174,7 +1192,7 @@ public final class SmsManager {
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
if (iSms != null) { if (iSms != null) {
iSms.sendMultipartTextForSubscriberWithOptions(subId, iSms.sendMultipartTextForSubscriberWithOptions(subId,
null, destinationAddress, null, null, destinationAddress,
scAddress, parts, sentIntents, deliveryIntents, scAddress, parts, sentIntents, deliveryIntents,
persistMessage, finalPriority, expectMore, finalValidity); persistMessage, finalPriority, expectMore, finalValidity);
} }
@@ -1196,7 +1214,7 @@ public final class SmsManager {
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
if (iSms != null) { if (iSms != null) {
iSms.sendMultipartTextForSubscriberWithOptions(getSubscriptionId(), iSms.sendMultipartTextForSubscriberWithOptions(getSubscriptionId(),
null, destinationAddress, null, null, destinationAddress,
scAddress, parts, sentIntents, deliveryIntents, scAddress, parts, sentIntents, deliveryIntents,
persistMessage, finalPriority, expectMore, finalValidity); persistMessage, finalPriority, expectMore, finalValidity);
} }
@@ -1327,9 +1345,8 @@ public final class SmsManager {
public void onSuccess(int subId) { public void onSuccess(int subId) {
try { try {
ISms iSms = getISmsServiceOrThrow(); ISms iSms = getISmsServiceOrThrow();
iSms.sendDataForSubscriber(subId, null, iSms.sendDataForSubscriber(subId, null, null, destinationAddress, scAddress,
destinationAddress, scAddress, destinationPort & 0xFFFF, data, destinationPort & 0xFFFF, data, sentIntent, deliveryIntent);
sentIntent, deliveryIntent);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "sendDataMessage: Couldn't send SMS - Exception: " + e.getMessage()); Log.e(TAG, "sendDataMessage: Couldn't send SMS - Exception: " + e.getMessage());
notifySmsError(sentIntent, RESULT_REMOTE_EXCEPTION); notifySmsError(sentIntent, RESULT_REMOTE_EXCEPTION);
@@ -1481,7 +1498,7 @@ public final class SmsManager {
// it here because we do not have access to the activity context that is performing this // it here because we do not have access to the activity context that is performing this
// operation. // operation.
// Requires that the calling process has the SEND_SMS permission. // Requires that the calling process has the SEND_SMS permission.
getITelephony().enqueueSmsPickResult(null, getITelephony().enqueueSmsPickResult(null, null,
new IIntegerConsumer.Stub() { new IIntegerConsumer.Stub() {
@Override @Override
public void accept(int subId) { public void accept(int subId) {

View File

@@ -86,9 +86,9 @@ interface ISms {
* raw pdu of the status report is in the extended data ("pdu"). * raw pdu of the status report is in the extended data ("pdu").
* @param subId the subId id. * @param subId the subId id.
*/ */
void sendDataForSubscriber(int subId, String callingPkg, in String destAddr, void sendDataForSubscriber(int subId, String callingPkg, String callingattributionTag,
in String scAddr, in int destPort, in byte[] data, in PendingIntent sentIntent, in String destAddr, in String scAddr, in int destPort,in byte[] data,
in PendingIntent deliveryIntent); in PendingIntent sentIntent, in PendingIntent deliveryIntent);
/** /**
* Send an SMS. * Send an SMS.
@@ -118,8 +118,8 @@ interface ISms {
* by a non-default SMS app. Currently only the carrier app can set this * by a non-default SMS app. Currently only the carrier app can set this
* parameter to false to skip auto message persistence. * parameter to false to skip auto message persistence.
*/ */
void sendTextForSubscriber(in int subId, String callingPkg, in String destAddr, void sendTextForSubscriber(in int subId, String callingPkg, String callingAttributionTag,
in String scAddr, in String text, in PendingIntent sentIntent, in String destAddr, in String scAddr, in String text, in PendingIntent sentIntent,
in PendingIntent deliveryIntent, in boolean persistMessageForNonDefaultSmsApp); in PendingIntent deliveryIntent, in boolean persistMessageForNonDefaultSmsApp);
/** /**
@@ -217,7 +217,7 @@ interface ISms {
* parameter to false to skip auto message persistence. * parameter to false to skip auto message persistence.
*/ */
void sendMultipartTextForSubscriber(in int subId, String callingPkg, void sendMultipartTextForSubscriber(in int subId, String callingPkg,
in String destinationAddress, in String scAddress, String callingAttributionTag, in String destinationAddress, in String scAddress,
in List<String> parts, in List<PendingIntent> sentIntents, in List<String> parts, in List<PendingIntent> sentIntents,
in List<PendingIntent> deliveryIntents, in boolean persistMessageForNonDefaultSmsApp); in List<PendingIntent> deliveryIntents, in boolean persistMessageForNonDefaultSmsApp);
@@ -266,10 +266,10 @@ interface ISms {
* Any Other values included Negative considered as Invalid Validity Period of the message. * Any Other values included Negative considered as Invalid Validity Period of the message.
*/ */
void sendMultipartTextForSubscriberWithOptions(in int subId, String callingPkg, void sendMultipartTextForSubscriberWithOptions(in int subId, String callingPkg,
in String destinationAddress, in String scAddress, in List<String> parts, String callingAttributionTag, in String destinationAddress, in String scAddress,
in List<PendingIntent> sentIntents, in List<PendingIntent> deliveryIntents, in List<String> parts, in List<PendingIntent> sentIntents,
in boolean persistMessageForNonDefaultSmsApp, in int priority, in boolean expectMore, in List<PendingIntent> deliveryIntents, in boolean persistMessageForNonDefaultSmsApp,
in int validityPeriod); in int priority, in boolean expectMore, in int validityPeriod);
/** /**
* Enable reception of cell broadcast (SMS-CB) messages with the given * Enable reception of cell broadcast (SMS-CB) messages with the given
@@ -427,6 +427,7 @@ interface ISms {
* *
* @param subId the SIM id. * @param subId the SIM id.
* @param callingPkg the package name of the calling app * @param callingPkg the package name of the calling app
* @param callingAttributionTag the attribution tag of calling context
* @param messageUri the URI of the stored message * @param messageUri the URI of the stored message
* @param scAddress is the service center address or null to use the current default SMSC * @param scAddress is the service center address or null to use the current default SMSC
* @param sentIntent if not NULL this <code>PendingIntent</code> is * @param sentIntent if not NULL this <code>PendingIntent</code> is
@@ -446,8 +447,9 @@ interface ISms {
* broadcast when the message is delivered to the recipient. The * broadcast when the message is delivered to the recipient. The
* raw pdu of the status report is in the extended data ("pdu"). * raw pdu of the status report is in the extended data ("pdu").
*/ */
void sendStoredText(int subId, String callingPkg, in Uri messageUri, String scAddress, void sendStoredText(int subId, String callingPkg, String callingAttributionTag,
in PendingIntent sentIntent, in PendingIntent deliveryIntent); in Uri messageUri, String scAddress, in PendingIntent sentIntent,
in PendingIntent deliveryIntent);
/** /**
* Send a system stored multi-part text message. * Send a system stored multi-part text message.
@@ -459,6 +461,7 @@ interface ISms {
* *
* @param subId the SIM id. * @param subId the SIM id.
* @param callingPkg the package name of the calling app * @param callingPkg the package name of the calling app
* @param callingAttributeTag the attribute tag of the calling context
* @param messageUri the URI of the stored message * @param messageUri the URI of the stored message
* @param scAddress is the service center address or null to use * @param scAddress is the service center address or null to use
* the current default SMSC * the current default SMSC
@@ -482,8 +485,8 @@ interface ISms {
* to the recipient. The raw pdu of the status report is in the * to the recipient. The raw pdu of the status report is in the
* extended data ("pdu"). * extended data ("pdu").
*/ */
void sendStoredMultipartText(int subId, String callingPkg, in Uri messageUri, void sendStoredMultipartText(int subId, String callingPkg, String callingAttributeTag,
String scAddress, in List<PendingIntent> sentIntents, in Uri messageUri, String scAddress, in List<PendingIntent> sentIntents,
in List<PendingIntent> deliveryIntents); in List<PendingIntent> deliveryIntents);
/** /**

View File

@@ -45,15 +45,15 @@ public class ISmsImplBase extends ISms.Stub {
} }
@Override @Override
public void sendDataForSubscriber(int subId, String callingPkg, String destAddr, public void sendDataForSubscriber(int subId, String callingPkg, String callingAttributionTag,
String scAddr, int destPort, byte[] data, PendingIntent sentIntent, String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent,
PendingIntent deliveryIntent) { PendingIntent deliveryIntent) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override @Override
public void sendTextForSubscriber(int subId, String callingPkg, String destAddr, public void sendTextForSubscriber(int subId, String callingPkg, String callingAttributionTag,
String scAddr, String text, PendingIntent sentIntent, String destAddr, String scAddr, String text, PendingIntent sentIntent,
PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp) { PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@@ -75,7 +75,7 @@ public class ISmsImplBase extends ISms.Stub {
@Override @Override
public void sendMultipartTextForSubscriber(int subId, String callingPkg, public void sendMultipartTextForSubscriber(int subId, String callingPkg,
String destinationAddress, String scAddress, String callingAttributionTag, String destinationAddress, String scAddress,
List<String> parts, List<PendingIntent> sentIntents, List<String> parts, List<PendingIntent> sentIntents,
List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp) { List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
@@ -83,7 +83,7 @@ public class ISmsImplBase extends ISms.Stub {
@Override @Override
public void sendMultipartTextForSubscriberWithOptions(int subId, String callingPkg, public void sendMultipartTextForSubscriberWithOptions(int subId, String callingPkg,
String destinationAddress, String scAddress, String callingAttributionTag, String destinationAddress, String scAddress,
List<String> parts, List<PendingIntent> sentIntents, List<String> parts, List<PendingIntent> sentIntents,
List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp, List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp,
int priority, boolean expectMore, int validityPeriod) { int priority, boolean expectMore, int validityPeriod) {
@@ -160,14 +160,15 @@ public class ISmsImplBase extends ISms.Stub {
} }
@Override @Override
public void sendStoredText(int subId, String callingPkg, Uri messageUri, String scAddress, public void sendStoredText(int subId, String callingPkg, String callingAttributionTag,
PendingIntent sentIntent, PendingIntent deliveryIntent) { Uri messageUri, String scAddress, PendingIntent sentIntent,
PendingIntent deliveryIntent) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override @Override
public void sendStoredMultipartText(int subId, String callingPkg, Uri messageUri, public void sendStoredMultipartText(int subId, String callingPkg, String callingAttributionTag,
String scAddress, List<PendingIntent> sentIntents, Uri messageUri, String scAddress, List<PendingIntent> sentIntents,
List<PendingIntent> deliveryIntents) { List<PendingIntent> deliveryIntents) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }

View File

@@ -2204,7 +2204,8 @@ interface ITelephony {
* Enqueue a pending sms Consumer, which will answer with the user specified selection for an * Enqueue a pending sms Consumer, which will answer with the user specified selection for an
* outgoing SmsManager operation. * outgoing SmsManager operation.
*/ */
oneway void enqueueSmsPickResult(String callingPackage, IIntegerConsumer subIdResult); oneway void enqueueSmsPickResult(String callingPackage, String callingAttributeTag,
IIntegerConsumer subIdResult);
/** /**
* Returns the MMS user agent. * Returns the MMS user agent.