Merge "Supported data enabled override for different scenarios" into qt-dev
am: 02e9e32b90
Change-Id: Ibf541df3b68f476257f79ff458b55edf0efba9db
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index addd9e0..65db458 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -302,11 +302,27 @@
* 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 d6500f4..ed1c00f 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -11187,4 +11187,52 @@
}
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 a78bae4..165be64 100644
--- a/telephony/java/android/telephony/data/ApnSetting.java
+++ b/telephony/java/android/telephony/data/ApnSetting.java
@@ -1310,6 +1310,9 @@
* @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 bb5c251..cde6db4 100644
--- a/telephony/java/com/android/internal/telephony/DctConstants.java
+++ b/telephony/java/com/android/internal/telephony/DctConstants.java
@@ -94,7 +94,7 @@
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 cf1323a..5a27a0f 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1619,7 +1619,7 @@
* <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.
@@ -1996,4 +1996,15 @@
* 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);
}