From cde0233512f8dbbc62238e90c850c310894e3972 Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Thu, 6 Jan 2011 21:24:34 -0800 Subject: [PATCH] Add telephony.sms.receive and telephony.sms.send properties. The purpose of these properties is to allow, at boot time, the enable and disabling of receiving and sending of SMS messages. These properties are used to initialize two booleans within [Gsm|Cdma]SMSDispatcher code. The two booleans are initialized to the value of config_sms_capable and when config_sms_capable is false the device can neither receive nor send SMS. Under some conditions, such as testing, it could be desirable to send and or receive SMS messages on a device where config_sms_capable is false. With the addition of these two properties it is now possible to use /data/local.prop to control the booleans independently. bug: 3315489 Change-Id: I83fe6f2da7d66ff720f28b696d8d76ec388706c0 --- .../internal/telephony/SMSDispatcher.java | 16 +++++++++++++--- .../internal/telephony/TelephonyProperties.java | 12 ++++++++++++ .../telephony/cdma/CdmaSMSDispatcher.java | 6 +++--- .../internal/telephony/gsm/GsmSMSDispatcher.java | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java index e7cfe75be9de4..99123afe5a5a1 100644 --- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java @@ -37,6 +37,7 @@ import android.os.Handler; import android.os.Message; import android.os.PowerManager; import android.os.StatFs; +import android.os.SystemProperties; import android.provider.Telephony; import android.provider.Telephony.Sms.Intents; import android.provider.Settings; @@ -156,8 +157,10 @@ public abstract class SMSDispatcher extends Handler { protected boolean mStorageAvailable = true; protected boolean mReportMemoryStatusPending = false; - /* Flag indicating whether the current device allows sms service */ + /* Flags indicating whether the current device allows sms service */ protected boolean mSmsCapable = true; + protected boolean mSmsReceiveDisabled; + protected boolean mSmsSendDisabled; protected static int getNextConcatenatedRef() { sConcatenatedRef += 1; @@ -255,6 +258,13 @@ public abstract class SMSDispatcher extends Handler { mSmsCapable = mContext.getResources().getBoolean( com.android.internal.R.bool.config_sms_capable); + mSmsReceiveDisabled = !SystemProperties.getBoolean( + TelephonyProperties.PROPERTY_SMS_RECEIVE, mSmsCapable); + mSmsSendDisabled = !SystemProperties.getBoolean( + TelephonyProperties.PROPERTY_SMS_SEND, mSmsCapable); + Log.d(TAG, "SMSDispatcher: ctor mSmsCapable=" + mSmsCapable + + " mSmsReceiveDisabled=" + mSmsReceiveDisabled + + " mSmsSendDisabled=" + mSmsSendDisabled); } public void dispose() { @@ -783,13 +793,13 @@ public abstract class SMSDispatcher extends Handler { */ protected void sendRawPdu(byte[] smsc, byte[] pdu, PendingIntent sentIntent, PendingIntent deliveryIntent) { - if (!mSmsCapable) { + if (mSmsSendDisabled) { if (sentIntent != null) { try { sentIntent.send(RESULT_ERROR_NO_SERVICE); } catch (CanceledException ex) {} } - Log.d(TAG, "Device does not support sms service."); + Log.d(TAG, "Device does not support sending sms."); return; } diff --git a/telephony/java/com/android/internal/telephony/TelephonyProperties.java b/telephony/java/com/android/internal/telephony/TelephonyProperties.java index 136d5b193fd11..e6189be1622f8 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyProperties.java +++ b/telephony/java/com/android/internal/telephony/TelephonyProperties.java @@ -147,4 +147,16 @@ public interface TelephonyProperties * when there is a radio technology change. */ static final String PROPERTY_RESET_ON_RADIO_TECH_CHANGE = "persist.radio.reset_on_switch"; + + /** + * Set to false to disable SMS receiving, default is + * the value of config_sms_capable + */ + static final String PROPERTY_SMS_RECEIVE = "telephony.sms.receive"; + + /** + * Set to false to disable SMS sending, default is + * the value of config_sms_capable + */ + static final String PROPERTY_SMS_SEND = "telephony.sms.send"; } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java index 01234b0585651..6bd2d09645fc7 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java @@ -107,10 +107,10 @@ final class CdmaSMSDispatcher extends SMSDispatcher { return Activity.RESULT_OK; } - if (!mSmsCapable) { - // Device doesn't support SMS service, + if (mSmsReceiveDisabled) { + // Device doesn't support receiving SMS, Log.d(TAG, "Received short message on device which doesn't support " - + "SMS service. Ignored."); + + "receiving SMS. Ignored."); return Intents.RESULT_SMS_HANDLED; } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java index 497c5524ac197..bbe579d2e238a 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java @@ -110,7 +110,7 @@ final class GsmSMSDispatcher extends SMSDispatcher { return Intents.RESULT_SMS_HANDLED; } - if (!mSmsCapable) { + if (mSmsReceiveDisabled) { // Device doesn't support SMS service, Log.d(TAG, "Received short message on device which doesn't support " + "SMS service. Ignored.");