am 7d952644: merge from open-source master

Merge commit '7d9526445c8631f347c7bf7d944e5bb1dc35b0b5' into kraken

* commit '7d9526445c8631f347c7bf7d944e5bb1dc35b0b5':
  Support to display message when operation is blocked due to FDN being enabled
This commit is contained in:
The Android Open Source Project
2010-05-12 14:12:25 -07:00
committed by Android Git Automerger
6 changed files with 52 additions and 6 deletions

View File

@@ -60,6 +60,10 @@
<!-- Displayed when the user dialed an MMI code whose function
could not be performed. This will be displayed in a toast. -->
<string name="mmiError">Connection problem or invalid MMI code.</string>
<!-- Displayed when the user dialed an MMI code whose function
could not be performed because FDN is enabled. This will be displayed in a toast. -->
<string name="mmiFdnError">Operation is restricted to fixed dialing numbers only.</string>
<!-- Displayed when a phone feature such as call barring was activated. -->
<string name="serviceEnabled">Service was enabled.</string>
<!-- Displayed in front of the list of a set of service classes

View File

@@ -398,4 +398,6 @@ public final class SmsManager {
static public final int RESULT_ERROR_NO_SERVICE = 4;
/** Failed because we reached the sending queue limit. {@hide} */
static public final int RESULT_ERROR_LIMIT_EXCEEDED = 5;
/** Failed because FDN is enabled. {@hide} */
static public final int RESULT_ERROR_FDN_CHECK_FAILURE = 6;
}

View File

@@ -37,6 +37,10 @@ public class CommandException extends RuntimeException {
OP_NOT_ALLOWED_DURING_VOICE_CALL,
OP_NOT_ALLOWED_BEFORE_REG_NW,
SMS_FAIL_RETRY,
SIM_ABSENT,
SUBSCRIPTION_NOT_AVAILABLE,
MODE_NOT_SUPPORTED,
FDN_CHECK_FAILURE,
ILLEGAL_SIM_OR_ME,
}
@@ -69,6 +73,14 @@ public class CommandException extends RuntimeException {
return new CommandException(Error.OP_NOT_ALLOWED_BEFORE_REG_NW);
case RILConstants.SMS_SEND_FAIL_RETRY:
return new CommandException(Error.SMS_FAIL_RETRY);
case RILConstants.SIM_ABSENT:
return new CommandException(Error.SIM_ABSENT);
case RILConstants.SUBSCRIPTION_NOT_AVAILABLE:
return new CommandException(Error.SUBSCRIPTION_NOT_AVAILABLE);
case RILConstants.MODE_NOT_SUPPORTED:
return new CommandException(Error.MODE_NOT_SUPPORTED);
case RILConstants.FDN_CHECK_FAILURE:
return new CommandException(Error.FDN_CHECK_FAILURE);
case RILConstants.ILLEGAL_SIM_OR_ME:
return new CommandException(Error.ILLEGAL_SIM_OR_ME);
default:

View File

@@ -45,6 +45,11 @@ public interface RILConstants {
int OP_NOT_ALLOWED_BEFORE_REG_NW = 9; /* request is not allowed before device registers to
network */
int SMS_SEND_FAIL_RETRY = 10; /* send sms fail and need retry */
int SIM_ABSENT = 11; /* ICC card is absent */
int SUBSCRIPTION_NOT_AVAILABLE = 12; /* fail to find CDMA subscription from specified
location */
int MODE_NOT_SUPPORTED = 13; /* HW does not support preferred network type */
int FDN_CHECK_FAILURE = 14; /* send operation barred error when FDN is enabled */
int ILLEGAL_SIM_OR_ME = 15; /* network selection failure due
to wrong SIM/ME and no
retries needed */

View File

@@ -62,6 +62,7 @@ import static android.telephony.SmsManager.RESULT_ERROR_NO_SERVICE;
import static android.telephony.SmsManager.RESULT_ERROR_NULL_PDU;
import static android.telephony.SmsManager.RESULT_ERROR_RADIO_OFF;
import static android.telephony.SmsManager.RESULT_ERROR_LIMIT_EXCEEDED;
import static android.telephony.SmsManager.RESULT_ERROR_FDN_CHECK_FAILURE;
public abstract class SMSDispatcher extends Handler {
@@ -499,13 +500,20 @@ public abstract class SMSDispatcher extends Handler {
Message retryMsg = obtainMessage(EVENT_SEND_RETRY, tracker);
sendMessageDelayed(retryMsg, SEND_RETRY_DELAY);
} else if (tracker.mSentIntent != null) {
int error = RESULT_ERROR_GENERIC_FAILURE;
if (((CommandException)(ar.exception)).getCommandError()
== CommandException.Error.FDN_CHECK_FAILURE) {
error = RESULT_ERROR_FDN_CHECK_FAILURE;
}
// Done retrying; return an error to the app.
try {
Intent fillIn = new Intent();
if (ar.result != null) {
fillIn.putExtra("errorCode", ((SmsResponse)ar.result).errorCode);
}
tracker.mSentIntent.send(mContext, RESULT_ERROR_GENERIC_FAILURE, fillIn);
tracker.mSentIntent.send(mContext, error, fillIn);
} catch (CanceledException ex) {}
}
}

View File

@@ -832,8 +832,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {
if (ar.exception != null) {
state = State.FAILED;
message = context.getText(
com.android.internal.R.string.mmiError);
message = getErrorMessage(ar);
phone.onMMIDone(this);
}
@@ -852,6 +851,19 @@ public final class GsmMmiCode extends Handler implements MmiCode {
}
//***** Private instance methods
private CharSequence getErrorMessage(AsyncResult ar) {
if (ar.exception instanceof CommandException) {
CommandException.Error err = ((CommandException)(ar.exception)).getCommandError();
if (err == CommandException.Error.FDN_CHECK_FAILURE) {
Log.i(LOG_TAG, "FDN_CHECK_FAILURE");
return context.getText(com.android.internal.R.string.mmiFdnError);
}
}
return context.getText(com.android.internal.R.string.mmiError);
}
private CharSequence getScString() {
if (sc != null) {
if (isServiceCodeCallBarring(sc)) {
@@ -904,6 +916,9 @@ public final class GsmMmiCode extends Handler implements MmiCode {
sb.append("\n");
sb.append(context.getText(
com.android.internal.R.string.needPuk2));
} else if (err == CommandException.Error.FDN_CHECK_FAILURE) {
Log.i(LOG_TAG, "FDN_CHECK_FAILURE");
sb.append(context.getText(com.android.internal.R.string.mmiFdnError));
} else {
sb.append(context.getText(
com.android.internal.R.string.mmiError));
@@ -953,7 +968,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {
if (ar.exception != null) {
state = State.FAILED;
sb.append(context.getText(com.android.internal.R.string.mmiError));
sb.append(getErrorMessage(ar));
} else {
int clirArgs[];
@@ -1123,7 +1138,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {
if (ar.exception != null) {
state = State.FAILED;
sb.append(context.getText(com.android.internal.R.string.mmiError));
sb.append(getErrorMessage(ar));
} else {
CallForwardInfo infos[];
@@ -1175,7 +1190,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {
if (ar.exception != null) {
state = State.FAILED;
sb.append(context.getText(com.android.internal.R.string.mmiError));
sb.append(getErrorMessage(ar));
} else {
int[] ints = (int[])ar.result;