diff options
-rw-r--r-- | src/java/com/android/internal/telephony/InboundSmsHandler.java | 11 | ||||
-rwxr-xr-x | src/java/com/android/internal/telephony/WapPushOverSms.java | 10 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/InboundSmsHandler.java b/src/java/com/android/internal/telephony/InboundSmsHandler.java index 29f619fba..c8e870ddf 100644 --- a/src/java/com/android/internal/telephony/InboundSmsHandler.java +++ b/src/java/com/android/internal/telephony/InboundSmsHandler.java @@ -800,6 +800,7 @@ public abstract class InboundSmsHandler extends StateMachine { int messageCount = tracker.getMessageCount(); byte[][] pdus; int destPort = tracker.getDestPort(); + String address = ""; if (messageCount == 1) { // single-part message @@ -809,7 +810,7 @@ public abstract class InboundSmsHandler extends StateMachine { Cursor cursor = null; try { // used by several query selection arguments - String address = tracker.getAddress(); + address = tracker.getAddress(); String refNumber = Integer.toString(tracker.getReferenceNumber()); String count = Integer.toString(tracker.getMessageCount()); @@ -867,10 +868,16 @@ public abstract class InboundSmsHandler extends StateMachine { if (!tracker.is3gpp2()) { SmsMessage msg = SmsMessage.createFromPdu(pdu, SmsConstants.FORMAT_3GPP); pdu = msg.getUserData(); + if (address == "") { + address = msg.getOriginatingAddress(); + } else if(address == ""){ + address = tracker.getAddress(); + } } output.write(pdu, 0, pdu.length); } - int result = mWapPush.dispatchWapPdu(output.toByteArray(), resultReceiver, this); + int result = mWapPush.dispatchWapPdu(output.toByteArray(), resultReceiver, + this, address); if (DBG) log("dispatchWapPdu() returned " + result); // result is Activity.RESULT_OK if an ordered broadcast was sent if (result == Activity.RESULT_OK) { diff --git a/src/java/com/android/internal/telephony/WapPushOverSms.java b/src/java/com/android/internal/telephony/WapPushOverSms.java index 97118ba27..0a2d065c8 100755 --- a/src/java/com/android/internal/telephony/WapPushOverSms.java +++ b/src/java/com/android/internal/telephony/WapPushOverSms.java @@ -116,11 +116,13 @@ public class WapPushOverSms implements ServiceConnection { * wap-230-wsp-20010705-a section 8 for details on the WAP PDU format. * * @param pdu The WAP PDU, made up of one or more SMS PDUs + * @param address The originating address * @return a result code from {@link android.provider.Telephony.Sms.Intents}, or * {@link Activity#RESULT_OK} if the message has been broadcast * to applications */ - public int dispatchWapPdu(byte[] pdu, BroadcastReceiver receiver, InboundSmsHandler handler) { + public int dispatchWapPdu(byte[] pdu, BroadcastReceiver receiver, InboundSmsHandler handler, + String address) { if (DBG) Rlog.d(TAG, "Rx: " + IccUtils.bytesToHexString(pdu)); @@ -251,6 +253,9 @@ public class WapPushOverSms implements ServiceConnection { intent.putExtra("data", intentData); intent.putExtra("contentTypeParameters", pduDecoder.getContentParameters()); + if (!TextUtils.isEmpty(address)) { + intent.putExtra("address", address); + } SubscriptionManager.putPhoneIdAndSubIdExtra(intent, phoneId); int procRet = wapPushMan.processMessage(wapAppId, contentType, intent); @@ -292,6 +297,9 @@ public class WapPushOverSms implements ServiceConnection { intent.putExtra("header", header); intent.putExtra("data", intentData); intent.putExtra("contentTypeParameters", pduDecoder.getContentParameters()); + if (!TextUtils.isEmpty(address)) { + intent.putExtra("address", address); + } SubscriptionManager.putPhoneIdAndSubIdExtra(intent, phoneId); // Direct the intent to only the default WAP Push app. If none declared: |