summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tom Taylor <tomtaylor@google.com> 2020-01-17 22:11:53 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-01-17 22:11:53 +0000
commit086de218b98c38c690ecf895d8b6b99dcae078fe (patch)
tree8d021281a13109ed8d070de036ebab65270db952
parent3b6b6ed367d889900f82870b0c76c5138d36ebca (diff)
parent66afc8fab29a8105f32ca5c8579317adb135cd2b (diff)
Merge "Let sms app pass a logging id to telephony"
-rw-r--r--api/current.txt2
-rwxr-xr-xapi/system-current.txt2
-rw-r--r--api/test-current.txt2
-rw-r--r--telephony/java/android/telephony/SmsManager.java75
-rw-r--r--telephony/java/com/android/internal/telephony/ISms.aidl10
-rw-r--r--telephony/java/com/android/internal/telephony/ISmsImplBase.java6
6 files changed, 74 insertions, 23 deletions
diff --git a/api/current.txt b/api/current.txt
index 73e329080f7f..0da121819b2a 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -46148,7 +46148,9 @@ package android.telephony {
method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
method @Deprecated public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
+ method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, long);
method public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+ method public void sendTextMessage(@NonNull String, @Nullable String, @NonNull String, @Nullable android.app.PendingIntent, @Nullable android.app.PendingIntent, long);
method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.SEND_SMS}) public void sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSmscAddress(@NonNull String);
field public static final String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
diff --git a/api/system-current.txt b/api/system-current.txt
index 894914bab249..2ebd5a210ebd 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -10575,7 +10575,7 @@ package android.telephony {
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 getPremiumSmsConsent(@NonNull String);
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 public void sendMultipartTextMessage(@NonNull String, @Nullable 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 @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 setPremiumSmsConsent(@NonNull String, int);
field public static final int PREMIUM_SMS_CONSENT_ALWAYS_ALLOW = 3; // 0x3
diff --git a/api/test-current.txt b/api/test-current.txt
index db294332731d..c8bfa469d114 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -3276,7 +3276,7 @@ package android.telephony {
public final class SmsManager {
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 public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String);
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_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index f351163bfe02..2f95a501ce2f 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -424,7 +424,26 @@ public final class SmsManager {
String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent) {
sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,
- true /* persistMessage*/, null);
+ true /* persistMessage*/, null, 0L /* messageId */);
+ }
+
+
+ /**
+ * Send a text based SMS. Same as {@link #sendTextMessage( String destinationAddress,
+ * String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)}, but
+ * adds an optional messageId.
+ * @param messageId An id that uniquely identifies the message requested to be sent.
+ * Used for logging and diagnostics purposes. The id may be 0.
+ *
+ * @throws IllegalArgumentException if destinationAddress or text are empty
+ *
+ */
+ public void sendTextMessage(
+ @NonNull String destinationAddress, @Nullable String scAddress, @NonNull String text,
+ @Nullable PendingIntent sentIntent, @Nullable PendingIntent deliveryIntent,
+ long messageId) {
+ sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,
+ true /* persistMessage*/, null, messageId);
}
/**
@@ -542,7 +561,7 @@ public final class SmsManager {
private void sendTextMessageInternal(String destinationAddress, String scAddress,
String text, PendingIntent sentIntent, PendingIntent deliveryIntent,
- boolean persistMessage, String packageName) {
+ boolean persistMessage, String packageName, long messageId) {
if (TextUtils.isEmpty(destinationAddress)) {
throw new IllegalArgumentException("Invalid destinationAddress");
}
@@ -569,10 +588,10 @@ public final class SmsManager {
try {
iSms.sendTextForSubscriber(subId, packageName,
destinationAddress, scAddress, text, sentIntent, deliveryIntent,
- persistMessage);
+ persistMessage, messageId);
} catch (RemoteException e) {
Log.e(TAG, "sendTextMessageInternal: Couldn't send SMS, exception - "
- + e.getMessage());
+ + e.getMessage() + " id: " + messageId);
notifySmsError(sentIntent, RESULT_REMOTE_EXCEPTION);
}
}
@@ -589,10 +608,10 @@ public final class SmsManager {
try {
iSms.sendTextForSubscriber(getSubscriptionId(), packageName,
destinationAddress, scAddress, text, sentIntent, deliveryIntent,
- persistMessage);
+ persistMessage, messageId);
} catch (RemoteException e) {
Log.e(TAG, "sendTextMessageInternal (no persist): Couldn't send SMS, exception - "
- + e.getMessage());
+ + e.getMessage() + " id: " + messageId);
notifySmsError(sentIntent, RESULT_REMOTE_EXCEPTION);
}
}
@@ -634,7 +653,8 @@ public final class SmsManager {
String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent) {
sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,
- false /* persistMessage */, null);
+ false /* persistMessage */, null,
+ 0L /* messageId */);
}
private void sendTextMessageInternal(
@@ -921,7 +941,26 @@ public final class SmsManager {
String destinationAddress, String scAddress, ArrayList<String> parts,
ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) {
sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
- deliveryIntents, true /* persistMessage*/, null);
+ deliveryIntents, true /* persistMessage*/, null,
+ 0L /* messageId */);
+ }
+
+ /**
+ * Send a multi-part text based SMS. Same as #sendMultipartTextMessage(String, String,
+ * ArrayList, ArrayList, ArrayList), but adds an optional messageId.
+ * @param messageId An id that uniquely identifies the message requested to be sent.
+ * Used for logging and diagnostics purposes. The id may be 0.
+ *
+ * @throws IllegalArgumentException if destinationAddress or data are empty
+ *
+ */
+ public void sendMultipartTextMessage(
+ @NonNull String destinationAddress, @Nullable String scAddress,
+ @NonNull List<String> parts, @Nullable List<PendingIntent> sentIntents,
+ @Nullable List<PendingIntent> deliveryIntents, long messageId) {
+ sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
+ deliveryIntents, true /* persistMessage*/, null,
+ messageId);
}
/**
@@ -946,17 +985,17 @@ public final class SmsManager {
@SystemApi
@TestApi
public void sendMultipartTextMessage(
- @NonNull String destinationAddress, @NonNull String scAddress,
+ @NonNull String destinationAddress, @Nullable String scAddress,
@NonNull List<String> parts, @Nullable List<PendingIntent> sentIntents,
@Nullable List<PendingIntent> deliveryIntents, @NonNull String packageName) {
sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
- deliveryIntents, true /* persistMessage*/, packageName);
+ deliveryIntents, true /* persistMessage*/, packageName, 0L /* messageId */);
}
private void sendMultipartTextMessageInternal(
String destinationAddress, String scAddress, List<String> parts,
List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents,
- boolean persistMessage, String packageName) {
+ boolean persistMessage, String packageName, long messageId) {
if (TextUtils.isEmpty(destinationAddress)) {
throw new IllegalArgumentException("Invalid destinationAddress");
}
@@ -983,10 +1022,11 @@ public final class SmsManager {
ISms iSms = getISmsServiceOrThrow();
iSms.sendMultipartTextForSubscriber(subId, packageName,
destinationAddress, scAddress, parts, sentIntents,
- deliveryIntents, persistMessage);
+ deliveryIntents, persistMessage, messageId);
} catch (RemoteException e) {
Log.e(TAG, "sendMultipartTextMessageInternal: Couldn't send SMS - "
- + e.getMessage());
+ + e.getMessage() + " id: "
+ + messageId);
notifySmsError(sentIntents, RESULT_REMOTE_EXCEPTION);
}
}
@@ -1003,11 +1043,11 @@ public final class SmsManager {
if (iSms != null) {
iSms.sendMultipartTextForSubscriber(getSubscriptionId(), packageName,
destinationAddress, scAddress, parts, sentIntents, deliveryIntents,
- persistMessage);
+ persistMessage, messageId);
}
} catch (RemoteException e) {
Log.e(TAG, "sendMultipartTextMessageInternal: Couldn't send SMS - "
- + e.getMessage());
+ + e.getMessage() + " id: " + messageId);
notifySmsError(sentIntents, RESULT_REMOTE_EXCEPTION);
}
}
@@ -1021,7 +1061,7 @@ public final class SmsManager {
deliveryIntent = deliveryIntents.get(0);
}
sendTextMessageInternal(destinationAddress, scAddress, parts.get(0),
- sentIntent, deliveryIntent, true, packageName);
+ sentIntent, deliveryIntent, true, packageName, messageId);
}
}
@@ -1051,7 +1091,8 @@ public final class SmsManager {
String destinationAddress, String scAddress, List<String> parts,
List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents) {
sendMultipartTextMessageInternal(destinationAddress, scAddress, parts, sentIntents,
- deliveryIntents, false /* persistMessage*/, null);
+ deliveryIntents, false /* persistMessage*/, null,
+ 0L /* messageId */);
}
/**
diff --git a/telephony/java/com/android/internal/telephony/ISms.aidl b/telephony/java/com/android/internal/telephony/ISms.aidl
index c07a1711b32e..79cdce8cba46 100644
--- a/telephony/java/com/android/internal/telephony/ISms.aidl
+++ b/telephony/java/com/android/internal/telephony/ISms.aidl
@@ -145,10 +145,13 @@ interface ISms {
* be automatically persisted in the SMS db. It only affects messages sent
* by a non-default SMS app. Currently only the carrier app can set this
* parameter to false to skip auto message persistence.
+ * @param messageId An id that uniquely identifies the message requested to be sent.
+ * Used for logging and diagnostics purposes. The id may be 0.
*/
void sendTextForSubscriber(in int subId, String callingPkg, in String destAddr,
in String scAddr, in String text, in PendingIntent sentIntent,
- in PendingIntent deliveryIntent, in boolean persistMessageForNonDefaultSmsApp);
+ in PendingIntent deliveryIntent, in boolean persistMessageForNonDefaultSmsApp,
+ in long messageId);
/**
* Send an SMS. Internal use only.
@@ -270,11 +273,14 @@ interface ISms {
* be automatically persisted in the SMS db. It only affects messages sent
* by a non-default SMS app. Currently only the carrier app can set this
* parameter to false to skip auto message persistence.
+ * @param messageId An id that uniquely identifies the message requested to be sent.
+ * Used for logging and diagnostics purposes. The id may be 0.
*/
void sendMultipartTextForSubscriber(in int subId, String callingPkg,
in String destinationAddress, in String scAddress,
in List<String> parts, in List<PendingIntent> sentIntents,
- in List<PendingIntent> deliveryIntents, in boolean persistMessageForNonDefaultSmsApp);
+ in List<PendingIntent> deliveryIntents, in boolean persistMessageForNonDefaultSmsApp,
+ in long messageId);
/**
* Send a multi-part text based SMS with options using Subscription Id.
diff --git a/telephony/java/com/android/internal/telephony/ISmsImplBase.java b/telephony/java/com/android/internal/telephony/ISmsImplBase.java
index ddd3457b3b4d..db0b8e528c87 100644
--- a/telephony/java/com/android/internal/telephony/ISmsImplBase.java
+++ b/telephony/java/com/android/internal/telephony/ISmsImplBase.java
@@ -61,7 +61,8 @@ public class ISmsImplBase extends ISms.Stub {
@Override
public void sendTextForSubscriber(int subId, String callingPkg, String destAddr,
String scAddr, String text, PendingIntent sentIntent,
- PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp) {
+ PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp,
+ long messageId) {
throw new UnsupportedOperationException();
}
@@ -90,7 +91,8 @@ public class ISmsImplBase extends ISms.Stub {
public void sendMultipartTextForSubscriber(int subId, String callingPkg,
String destinationAddress, String scAddress,
List<String> parts, List<PendingIntent> sentIntents,
- List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp) {
+ List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp,
+ long messageId) {
throw new UnsupportedOperationException();
}