Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cde02335 authored by Wink Saville's avatar Wink Saville
Browse files

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
parent 67ba204a
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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;
        }

+12 −0
Original line number Diff line number Diff line
@@ -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";
}
+3 −3
Original line number Diff line number Diff line
@@ -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;
        }

+1 −1
Original line number Diff line number Diff line
@@ -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.");