Add WSP header to WAP_PUSH_RECEIVED intent in addition to data

Import CL 146651 from //branches/cupcake_dcm
This commit is contained in:
Takaoka G. Tadashi
2009-11-04 14:36:21 +09:00
parent 7d51517cec
commit d5b325aaac
2 changed files with 25 additions and 12 deletions

View File

@@ -553,7 +553,8 @@ public final class Telephony {
* <li><em>transactionId (Integer)</em> - The WAP transaction
* ID</li>
* <li><em>pduType (Integer)</em> - The WAP PDU type</li>
* <li><em>data</em> - The data payload of the message</li>
* <li><em>header (byte[])</em> - The header of the message</li>
* <li><em>data (byte[])</em> - The data payload of the message</li>
* </ul>
*
* <p>If a BroadcastReceiver encounters an error while processing

View File

@@ -161,28 +161,31 @@ public class WapPushOverSms {
}
index += pduDecoder.getDecodedDataLength();
int dataIndex = headerStartIndex + headerLength;
boolean dispatchedByApplication = false;
switch (binaryContentType) {
case WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO:
dispatchWapPdu_PushCO(pdu, transactionId, pduType);
dispatchWapPdu_PushCO(pdu, transactionId, pduType, headerStartIndex, headerLength);
dispatchedByApplication = true;
break;
case WspTypeDecoder.CONTENT_TYPE_B_MMS:
dispatchWapPdu_MMS(pdu, transactionId, pduType, dataIndex);
dispatchWapPdu_MMS(pdu, transactionId, pduType, headerStartIndex, headerLength);
dispatchedByApplication = true;
break;
default:
break;
}
if (dispatchedByApplication == false) {
dispatchWapPdu_default(pdu, transactionId, pduType, mimeType, dataIndex);
dispatchWapPdu_default(pdu, transactionId, pduType, mimeType,
headerStartIndex, headerLength);
}
return Activity.RESULT_OK;
}
private void dispatchWapPdu_default(
byte[] pdu, int transactionId, int pduType, String mimeType, int dataIndex) {
private void dispatchWapPdu_default(byte[] pdu, int transactionId, int pduType,
String mimeType, int headerStartIndex, int headerLength) {
byte[] header = new byte[headerLength];
System.arraycopy(pdu, headerStartIndex, header, 0, header.length);
int dataIndex = headerStartIndex + headerLength;
byte[] data;
data = new byte[pdu.length - dataIndex];
@@ -192,31 +195,40 @@ public class WapPushOverSms {
intent.setType(mimeType);
intent.putExtra("transactionId", transactionId);
intent.putExtra("pduType", pduType);
intent.putExtra("header", header);
intent.putExtra("data", data);
mSmsDispatcher.dispatch(intent, "android.permission.RECEIVE_WAP_PUSH");
}
private void dispatchWapPdu_PushCO(byte[] pdu, int transactionId, int pduType) {
private void dispatchWapPdu_PushCO(byte[] pdu, int transactionId, int pduType,
int headerStartIndex, int headerLength) {
byte[] header = new byte[headerLength];
System.arraycopy(pdu, headerStartIndex, header, 0, header.length);
Intent intent = new Intent(Intents.WAP_PUSH_RECEIVED_ACTION);
intent.setType(WspTypeDecoder.CONTENT_MIME_TYPE_B_PUSH_CO);
intent.putExtra("transactionId", transactionId);
intent.putExtra("pduType", pduType);
intent.putExtra("header", header);
intent.putExtra("data", pdu);
mSmsDispatcher.dispatch(intent, "android.permission.RECEIVE_WAP_PUSH");
}
private void dispatchWapPdu_MMS(byte[] pdu, int transactionId, int pduType, int dataIndex) {
byte[] data;
data = new byte[pdu.length - dataIndex];
private void dispatchWapPdu_MMS(byte[] pdu, int transactionId, int pduType,
int headerStartIndex, int headerLength) {
byte[] header = new byte[headerLength];
System.arraycopy(pdu, headerStartIndex, header, 0, header.length);
int dataIndex = headerStartIndex + headerLength;
byte[] data = new byte[pdu.length - dataIndex];
System.arraycopy(pdu, dataIndex, data, 0, data.length);
Intent intent = new Intent(Intents.WAP_PUSH_RECEIVED_ACTION);
intent.setType(WspTypeDecoder.CONTENT_MIME_TYPE_B_MMS);
intent.putExtra("transactionId", transactionId);
intent.putExtra("pduType", pduType);
intent.putExtra("header", header);
intent.putExtra("data", data);
mSmsDispatcher.dispatch(intent, "android.permission.RECEIVE_MMS");