diff options
author | Jack Yu <jackyu@google.com> | 2019-05-23 16:37:35 -0700 |
---|---|---|
committer | Jack Yu <jackyu@google.com> | 2019-06-07 14:47:13 -0700 |
commit | a726a48fcda9b283c6c3621cb0b95f8a56ed5c7b (patch) | |
tree | 19f0fe78156701c372f8c958b310cb819897db8e | |
parent | bdc8e002113ed28783f7e1eeeb94046333ab8084 (diff) | |
download | base-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)
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); } |