Merge "Block SMS service for non-sms-capable device."
This commit is contained in:
@@ -954,4 +954,20 @@ public class TelephonyManager {
|
||||
return mContext.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_voice_capable);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the current device supports sms service.
|
||||
* <p>
|
||||
* If true, this means that the device supports both sending and
|
||||
* receiving sms via the telephony network.
|
||||
* <p>
|
||||
* Note: Voicemail waiting sms, cell broadcasting sms, and MMS are
|
||||
* disabled when device doesn't support sms.
|
||||
*
|
||||
* @hide pending API review
|
||||
*/
|
||||
public boolean isSmsCapable() {
|
||||
return mContext.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_sms_capable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user