summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2010-05-11 09:13:19 -0700
committerAndroid Code Review <code-review@android.com>2010-05-11 09:13:19 -0700
commitcf1250c149120eebb464d9e613272e0976ff9498 (patch)
tree3c8d4d1006928dca9cb7526a1be01be591cb81fe /telephony
parentef2cf71420550fb45f89e67c56f338031f0adb63 (diff)
parent18573e9281d6e5621fa1663dac29b558291913d7 (diff)
downloadframeworks_base-cf1250c149120eebb464d9e613272e0976ff9498.zip
frameworks_base-cf1250c149120eebb464d9e613272e0976ff9498.tar.gz
frameworks_base-cf1250c149120eebb464d9e613272e0976ff9498.tar.bz2
Merge "Support to display message when operation is blocked due to FDN being enabled"
Diffstat (limited to 'telephony')
-rw-r--r--telephony/java/android/telephony/SmsManager.java2
-rw-r--r--telephony/java/com/android/internal/telephony/CommandException.java12
-rw-r--r--telephony/java/com/android/internal/telephony/RILConstants.java5
-rw-r--r--telephony/java/com/android/internal/telephony/SMSDispatcher.java10
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java25
5 files changed, 48 insertions, 6 deletions
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 3122722..f5e9751 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -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;
}
diff --git a/telephony/java/com/android/internal/telephony/CommandException.java b/telephony/java/com/android/internal/telephony/CommandException.java
index a5d11cf..d7adab3 100644
--- a/telephony/java/com/android/internal/telephony/CommandException.java
+++ b/telephony/java/com/android/internal/telephony/CommandException.java
@@ -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,
}
public CommandException(Error e) {
@@ -68,6 +72,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);
default:
Log.e("GSM", "Unrecognized RIL errno " + ril_errno);
return new CommandException(Error.INVALID_RESPONSE);
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 4d8c7ec..be1fbf1 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -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 */
/* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
int NETWORK_MODE_WCDMA_PREF = 0; /* GSM/WCDMA (WCDMA preferred) */
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
index fc0aa06..98d4b1d 100644
--- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
@@ -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) {}
}
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java b/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java
index bcbd127..cacf057 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java
@@ -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;