diff options
| author | John Wang <johnwang@google.com> | 2010-12-10 16:05:51 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-12-10 16:05:51 -0800 |
| commit | 9c1d5e997fd8a6b99e3dc1789170731c900abb6e (patch) | |
| tree | cbe47ce41fc2d4ba64d22528a4b22df36b87615a /telephony/java/com | |
| parent | b170954d84b3ca084f9d613d99633d2828912d74 (diff) | |
| parent | c049f9ad5b4f5bc32f368646e624aef7707b7252 (diff) | |
| download | frameworks_base-9c1d5e997fd8a6b99e3dc1789170731c900abb6e.zip frameworks_base-9c1d5e997fd8a6b99e3dc1789170731c900abb6e.tar.gz frameworks_base-9c1d5e997fd8a6b99e3dc1789170731c900abb6e.tar.bz2 | |
Merge "Block SMS service for non-sms-capable device."
Diffstat (limited to 'telephony/java/com')
3 files changed, 36 insertions, 2 deletions
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java index ec49a19..e7cfe75 100644 --- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java @@ -156,6 +156,9 @@ public abstract class SMSDispatcher extends Handler { protected boolean mStorageAvailable = true; protected boolean mReportMemoryStatusPending = false; + /* Flag indicating whether the current device allows sms service */ + protected boolean mSmsCapable = true; + protected static int getNextConcatenatedRef() { sConcatenatedRef += 1; return sConcatenatedRef; @@ -249,6 +252,9 @@ public abstract class SMSDispatcher extends Handler { filter.addAction(Intent.ACTION_DEVICE_STORAGE_FULL); filter.addAction(Intent.ACTION_DEVICE_STORAGE_NOT_FULL); mContext.registerReceiver(mResultReceiver, filter); + + mSmsCapable = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_sms_capable); } public void dispose() { @@ -682,6 +688,7 @@ public abstract class SMSDispatcher extends Handler { * <code>RESULT_ERROR_GENERIC_FAILURE</code><br> * <code>RESULT_ERROR_RADIO_OFF</code><br> * <code>RESULT_ERROR_NULL_PDU</code><br> + * <code>RESULT_ERROR_NO_SERVICE</code><br>. * For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include * the extra "errorCode" containing a radio technology specific value, * generally only useful for troubleshooting.<br> @@ -709,6 +716,7 @@ public abstract class SMSDispatcher extends Handler { * <code>RESULT_ERROR_GENERIC_FAILURE</code><br> * <code>RESULT_ERROR_RADIO_OFF</code><br> * <code>RESULT_ERROR_NULL_PDU</code><br> + * <code>RESULT_ERROR_NO_SERVICE</code><br>. * For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include * the extra "errorCode" containing a radio technology specific value, * generally only useful for troubleshooting.<br> @@ -737,7 +745,8 @@ public abstract class SMSDispatcher extends Handler { * or one of these errors: * <code>RESULT_ERROR_GENERIC_FAILURE</code> * <code>RESULT_ERROR_RADIO_OFF</code> - * <code>RESULT_ERROR_NULL_PDU</code>. + * <code>RESULT_ERROR_NULL_PDU</code> + * <code>RESULT_ERROR_NO_SERVICE</code>. * The per-application based SMS control checks sentIntent. If sentIntent * is NULL the caller will be checked against all unknown applications, * which cause smaller number of SMS to be sent in checking period. @@ -763,7 +772,8 @@ public abstract class SMSDispatcher extends Handler { * or one of these errors: * <code>RESULT_ERROR_GENERIC_FAILURE</code> * <code>RESULT_ERROR_RADIO_OFF</code> - * <code>RESULT_ERROR_NULL_PDU</code>. + * <code>RESULT_ERROR_NULL_PDU</code> + * <code>RESULT_ERROR_NO_SERVICE</code>. * The per-application based SMS control checks sentIntent. If sentIntent * is NULL the caller will be checked against all unknown applications, * which cause smaller number of SMS to be sent in checking period. @@ -773,6 +783,16 @@ public abstract class SMSDispatcher extends Handler { */ protected void sendRawPdu(byte[] smsc, byte[] pdu, PendingIntent sentIntent, PendingIntent deliveryIntent) { + if (!mSmsCapable) { + if (sentIntent != null) { + try { + sentIntent.send(RESULT_ERROR_NO_SERVICE); + } catch (CanceledException ex) {} + } + Log.d(TAG, "Device does not support sms service."); + return; + } + if (pdu == null) { if (sentIntent != null) { try { diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java index 53555d8..01234b0 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java @@ -107,6 +107,13 @@ final class CdmaSMSDispatcher extends SMSDispatcher { return Activity.RESULT_OK; } + if (!mSmsCapable) { + // Device doesn't support SMS service, + Log.d(TAG, "Received short message on device which doesn't support " + + "SMS service. Ignored."); + return Intents.RESULT_SMS_HANDLED; + } + // See if we have a network duplicate SMS. SmsMessage sms = (SmsMessage) smsb; mLastDispatchedSmsFingerprint = sms.getIncomingSmsFingerprint(); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java index 70f8f86..497c552 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java @@ -110,6 +110,13 @@ final class GsmSMSDispatcher extends SMSDispatcher { return Intents.RESULT_SMS_HANDLED; } + if (!mSmsCapable) { + // Device doesn't support SMS service, + Log.d(TAG, "Received short message on device which doesn't support " + + "SMS service. Ignored."); + return Intents.RESULT_SMS_HANDLED; + } + // Special case the message waiting indicator messages if (sms.isMWISetMessage()) { mGsmPhone.updateMessageWaitingIndicator(true); |
