telephony: redirect call barring MMI code to other purpose
duho.ro [Fri, 27 Sep 2013 07:50:32 +0000 (16:50 +0900)]
Some operators redirect call barring MMI codes to other purpose.
For instance, *333# should be processed as USSD code with Indonesia
Axis SIM and Indonesia Hutchison SIM.  This change is adding an array
for call barring MMI code to config.xml. So, we can redefine the array
for redirecting the call barring MMI codes. The MMI code is compared
with the call barring MMI codes from config.xml.

Bug: 10101303

Change-Id: Ib21540a90c64e105cd4bc1864238329d594cd056

src/java/com/android/internal/telephony/gsm/GsmMmiCode.java

index 395cfc9..f41391d 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.internal.telephony.gsm;
 
 import android.content.Context;
+import android.content.res.Resources;
 import com.android.internal.telephony.*;
 import com.android.internal.telephony.uicc.IccRecords;
 import com.android.internal.telephony.uicc.UiccCardApplication;
@@ -361,15 +362,17 @@ public final class GsmMmiCode extends Handler implements MmiCode {
 
     static boolean
     isServiceCodeCallBarring(String sc) {
-        return sc != null &&
-                (sc.equals(SC_BAOC)
-                || sc.equals(SC_BAOIC)
-                || sc.equals(SC_BAOICxH)
-                || sc.equals(SC_BAIC)
-                || sc.equals(SC_BAICr)
-                || sc.equals(SC_BA_ALL)
-                || sc.equals(SC_BA_MO)
-                || sc.equals(SC_BA_MT));
+        Resources resource = Resources.getSystem();
+        if (sc != null) {
+            String[] barringMMI = resource.getStringArray(
+                com.android.internal.R.array.config_callBarringMMI);
+            if (barringMMI != null) {
+                for (String match : barringMMI) {
+                    if (sc.equals(match)) return true;
+                }
+            }
+        }
+        return false;
     }
 
     static String