summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Yu <jackyu@google.com>2019-05-23 16:37:35 -0700
committerJack Yu <jackyu@google.com>2019-06-07 14:47:13 -0700
commita726a48fcda9b283c6c3621cb0b95f8a56ed5c7b (patch)
tree19f0fe78156701c372f8c958b310cb819897db8e
parentbdc8e002113ed28783f7e1eeeb94046333ab8084 (diff)
downloadbase-a726a48fcda9b283c6c3621cb0b95f8a56ed5c7b.tar.gz
Supported data enabled override for different scenarios
Added override rules support for always allowing mms and internet data during voice call. Test: Manual + unit tests Bug: 132113695 Merged-In: I2266d7f428901ccbba6bf538a7c7696e6566b96c Change-Id: I2266d7f428901ccbba6bf538a7c7696e6566b96c (cherry picked from commit 0d26d718b3e8b1747953696cb1a05a4f1dd5be88)
-rw-r--r--telephony/java/android/telephony/SubscriptionManager.java18
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java48
-rw-r--r--telephony/java/android/telephony/data/ApnSetting.java3
-rw-r--r--telephony/java/com/android/internal/telephony/DctConstants.java2
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl13
5 files changed, 81 insertions, 3 deletions
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index addd9e0591b0..65db458df159 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -302,11 +302,27 @@ public class SubscriptionManager {
* subscription.
*
* Default value is 0.
+ *
+ * @deprecated Replaced by {@link #DATA_ENABLED_OVERRIDE_RULES}
+ * @hide
*/
- /** @hide */
+ @Deprecated
public static final String WHITE_LISTED_APN_DATA = "white_listed_apn_data";
/**
+ * TelephonyProvider column name data_enabled_override_rules.
+ * It's a list of rules for overriding data enabled settings. The syntax is
+ * For example, "mms=nonDefault" indicates enabling data for mms in non-default subscription.
+ * "default=nonDefault&inVoiceCall" indicates enabling data for internet in non-default
+ * subscription and while is in voice call.
+ *
+ * Default value is empty string.
+ *
+ * @hide
+ */
+ public static final String DATA_ENABLED_OVERRIDE_RULES = "data_enabled_override_rules";
+
+ /**
* This constant is to designate a subscription as a Local-SIM Subscription.
* <p> A Local-SIM can be a physical SIM inserted into a sim-slot in the device, or eSIM on the
* device.
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index ddcdc8b33e8f..87ab1753a45b 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -10975,4 +10975,52 @@ public class TelephonyManager {
}
return true;
}
+
+ /**
+ * Set allowing mobile data during voice call.
+ *
+ * @param allow {@code true} if allowing using data during voice call, {@code false} if
+ * disallowed
+ *
+ * @return {@code false} if the setting is changed.
+ *
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ public boolean setDataAllowedDuringVoiceCall(boolean allow) {
+ try {
+ ITelephony service = getITelephony();
+ if (service != null) {
+ return service.setDataAllowedDuringVoiceCall(getSubId(), allow);
+ }
+ } catch (RemoteException ex) {
+ if (!isSystemProcess()) {
+ ex.rethrowAsRuntimeException();
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check whether data is allowed during voice call. Note this is for dual sim device that
+ * data might be disabled on non-default data subscription but explicitly turned on by settings.
+ *
+ * @return {@code true} if data is allowed during voice call.
+ *
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ public boolean isDataAllowedInVoiceCall() {
+ try {
+ ITelephony service = getITelephony();
+ if (service != null) {
+ return service.isDataAllowedInVoiceCall(getSubId());
+ }
+ } catch (RemoteException ex) {
+ if (!isSystemProcess()) {
+ ex.rethrowAsRuntimeException();
+ }
+ }
+ return false;
+ }
}
diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java
index f0c819da2dde..041e9093ff88 100644
--- a/telephony/java/android/telephony/data/ApnSetting.java
+++ b/telephony/java/android/telephony/data/ApnSetting.java
@@ -1310,6 +1310,9 @@ public class ApnSetting implements Parcelable {
* @hide
*/
public static String getApnTypeString(int apnType) {
+ if (apnType == TYPE_ALL) {
+ return "*";
+ }
String apnTypeString = APN_TYPE_INT_MAP.get(apnType);
return apnTypeString == null ? "Unknown" : apnTypeString;
}
diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java
index bb5c251b69e1..cde6db4888fa 100644
--- a/telephony/java/com/android/internal/telephony/DctConstants.java
+++ b/telephony/java/com/android/internal/telephony/DctConstants.java
@@ -94,7 +94,7 @@ public class DctConstants {
public static final int EVENT_ROAMING_SETTING_CHANGE = BASE + 48;
public static final int EVENT_DATA_SERVICE_BINDING_CHANGED = BASE + 49;
public static final int EVENT_DEVICE_PROVISIONED_CHANGE = BASE + 50;
- public static final int EVENT_APN_WHITE_LIST_CHANGE = BASE + 51;
+ public static final int EVENT_DATA_ENABLED_OVERRIDE_RULES_CHANGED = BASE + 51;
/***** Constants *****/
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index b47ec8bd3a46..bd26e1a5f2c7 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1612,7 +1612,7 @@ interface ITelephony {
* <p>
* See {@link UiccCardInfo} for more details on the kind of information available.
*
- * @param callingPackage package making the call, used to evaluate carrier privileges
+ * @param callingPackage package making the call, used to evaluate carrier privileges
* @return a list of UiccCardInfo objects, representing information on the currently inserted
* UICCs and eUICCs. Each UiccCardInfo in the list will have private information filtered out if
* the caller does not have adequate permissions for that card.
@@ -1983,4 +1983,15 @@ interface ITelephony {
* Returns the MMS user agent profile URL.
*/
String getMmsUAProfUrl(int subId);
+
+ /**
+ * Set allowing mobile data during voice call.
+ */
+ boolean setDataAllowedDuringVoiceCall(int subId, boolean allow);
+
+ /**
+ * Check whether data is allowed during voice call. Note this is for dual sim device that
+ * data might be disabled on non-default data subscription but explicitly turned on by settings.
+ */
+ boolean isDataAllowedInVoiceCall(int subId);
}