From afe014fe0fcf78e313e6492fce2a5869abe4fba6 Mon Sep 17 00:00:00 2001 From: yanglv Date: Mon, 15 Sep 2014 18:29:55 +0800 Subject: Telephony: Show the sender address of WAP push message Deliver sender address of WAP PUSH message to Messaging application. Issue: PAELLA-286 Change-Id: I2a3370b6065ce5bedf9bfee152058a9575d16c32 CRs-Fixed: 593718 (cherry picked from commit 427f7b9bc66d063257b90d9365d25c2c79a3d33c) --- .../com/android/internal/telephony/InboundSmsHandler.java | 11 +++++++++-- 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: -- cgit v1.2.3