diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9793846..b25ff16 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -100,12 +100,6 @@ - - - - - - @@ -423,6 +417,8 @@ + + diff --git a/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java b/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java index b5d2185..bea4961 100644 --- a/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java +++ b/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java @@ -28,10 +28,10 @@ import com.android.messaging.datamodel.action.InsertNewMessageAction; import com.android.messaging.datamodel.action.UpdateMessageNotificationAction; import com.android.messaging.datamodel.data.MessageData; import com.android.messaging.datamodel.data.ParticipantData; -import com.android.messaging.sms.MmsUtils; import com.android.messaging.ui.UIIntents; import com.android.messaging.ui.conversationlist.ConversationListActivity; import com.android.messaging.util.LogUtil; +import com.android.messaging.util.UriUtil; /** * Respond to a special intent and send an SMS message without the user's intervention, unless @@ -83,8 +83,8 @@ public class NoConfirmationSmsSendService extends IntentService { final String subject = getText(intent, Intent.EXTRA_SUBJECT); final int subId = extras.getInt(EXTRA_SUBSCRIPTION, ParticipantData.DEFAULT_SELF_SUB_ID); - final Uri intentUri = intent.getData(); - final String recipients = intentUri != null ? MmsUtils.getSmsRecipients(intentUri) : null; + // Get a comma-separated list of recipients + final String recipients = UriUtil.parseRecipientsFromSmsMmsUri(intent.getData()); if (TextUtils.isEmpty(recipients) && TextUtils.isEmpty(conversationId)) { if (LogUtil.isLoggable(TAG, LogUtil.VERBOSE)) { diff --git a/src/com/android/messaging/sms/MmsUtils.java b/src/com/android/messaging/sms/MmsUtils.java index a519972..a469af3 100644 --- a/src/com/android/messaging/sms/MmsUtils.java +++ b/src/com/android/messaging/sms/MmsUtils.java @@ -1111,37 +1111,6 @@ public class MmsUtils { return subject; } - // return a semicolon separated list of phone numbers from a smsto: uri. - public static String getSmsRecipients(final Uri uri) { - String recipients = uri.getSchemeSpecificPart(); - final int pos = recipients.indexOf('?'); - if (pos != -1) { - recipients = recipients.substring(0, pos); - } - recipients = replaceUnicodeDigits(recipients).replace(',', ';'); - return recipients; - } - - // This function was lifted from Telephony.PhoneNumberUtils because it was @hide - /** - * Replace arabic/unicode digits with decimal digits. - * @param number - * the number to be normalized. - * @return the replaced number. - */ - private static String replaceUnicodeDigits(final String number) { - final StringBuilder normalizedDigits = new StringBuilder(number.length()); - for (final char c : number.toCharArray()) { - final int digit = Character.digit(c, 10); - if (digit != -1) { - normalizedDigits.append(digit); - } else { - normalizedDigits.append(c); - } - } - return normalizedDigits.toString(); - } - /** * @return Whether the data roaming is enabled */ diff --git a/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java b/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java index 8af9f75..5500ae8 100644 --- a/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java +++ b/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java @@ -61,7 +61,12 @@ public class LaunchConversationActivity extends Activity implements final Intent intent = getIntent(); final String action = intent.getAction(); if (Intent.ACTION_SENDTO.equals(action) || Intent.ACTION_VIEW.equals(action)) { - String[] recipients = UriUtil.parseRecipientsFromSmsMmsUri(intent.getData()); + String[] recipients = null; + final String commaSeparatedRecipients = + UriUtil.parseRecipientsFromSmsMmsUri(intent.getData()); + if (commaSeparatedRecipients != null) { + recipients = commaSeparatedRecipients.split(","); + } final boolean haveAddress = !TextUtils.isEmpty(intent.getStringExtra(ADDRESS)); final boolean haveEmail = !TextUtils.isEmpty(intent.getStringExtra(Intent.EXTRA_EMAIL)); if (recipients == null && (haveAddress || haveEmail)) { diff --git a/src/com/android/messaging/util/UriUtil.java b/src/com/android/messaging/util/UriUtil.java index ceff50c..d336167 100644 --- a/src/com/android/messaging/util/UriUtil.java +++ b/src/com/android/messaging/util/UriUtil.java @@ -324,14 +324,13 @@ public class UriUtil { } /** - * Extract recipient destinations from Uri of form - * SCHEME:destionation[,destination]?otherstuff + * Extract recipient destinations from Uri of form SCHEME:destination[,destination]?otherstuff * where SCHEME is one of the supported sms/mms schemes. * * @param uri sms/mms uri - * @return recipient destinations or null + * @return a comma-separated list of recipient destinations or null. */ - public static String[] parseRecipientsFromSmsMmsUri(final Uri uri) { + public static String parseRecipientsFromSmsMmsUri(final Uri uri) { if (!isSmsMmsUri(uri)) { return null; } @@ -341,7 +340,7 @@ public class UriUtil { } // replaceUnicodeDigits will replace digits typed in other languages (i.e. Egyptian) with // the usual ascii equivalents. - return TextUtil.replaceUnicodeDigits(parts[0]).replace(';', ',').split(","); + return TextUtil.replaceUnicodeDigits(parts[0]).replace(';', ','); } /**