summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Paul Hu <paulhu@google.com> 2021-05-13 14:07:56 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-05-13 14:07:56 +0000
commit04d9298d4842644bc65de50d913648c3a83a9f59 (patch)
tree90694c50a4bdeeb85566abdf28c34dd1c579c74f
parent78a1add7d99d3c30ddaecfc2db83c3e78f646f5f (diff)
parent5a986ca45d001afd5a2aab4af984825fcfd13a09 (diff)
Merge "Update mobile data preference getter/setter" am: 5a986ca45d
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1702486 Change-Id: Ieb72b4f0284d5439f62037b9d68da054f276120d
-rw-r--r--packages/Connectivity/framework/api/module-lib-current.txt4
-rw-r--r--packages/Connectivity/framework/src/android/net/ConnectivitySettingsManager.java42
2 files changed, 33 insertions, 13 deletions
diff --git a/packages/Connectivity/framework/api/module-lib-current.txt b/packages/Connectivity/framework/api/module-lib-current.txt
index 524db18005ca..b219375aed70 100644
--- a/packages/Connectivity/framework/api/module-lib-current.txt
+++ b/packages/Connectivity/framework/api/module-lib-current.txt
@@ -57,7 +57,7 @@ package android.net {
method @Nullable public static android.net.ProxyInfo getGlobalProxy(@NonNull android.content.Context);
method @NonNull public static java.time.Duration getMobileDataActivityTimeout(@NonNull android.content.Context, @NonNull java.time.Duration);
method public static boolean getMobileDataAlwaysOn(@NonNull android.content.Context, boolean);
- method @Nullable public static String getMobileDataPreferredApps(@NonNull android.content.Context);
+ method @NonNull public static java.util.Set<java.lang.Integer> getMobileDataPreferredUids(@NonNull android.content.Context);
method public static int getNetworkAvoidBadWifi(@NonNull android.content.Context);
method @Nullable public static String getNetworkMeteredMultipathPreference(@NonNull android.content.Context);
method public static int getNetworkSwitchNotificationMaximumDailyCount(@NonNull android.content.Context, int);
@@ -77,7 +77,7 @@ package android.net {
method public static void setGlobalProxy(@NonNull android.content.Context, @NonNull android.net.ProxyInfo);
method public static void setMobileDataActivityTimeout(@NonNull android.content.Context, @NonNull java.time.Duration);
method public static void setMobileDataAlwaysOn(@NonNull android.content.Context, boolean);
- method public static void setMobileDataPreferredApps(@NonNull android.content.Context, @Nullable String);
+ method public static void setMobileDataPreferredUids(@NonNull android.content.Context, @NonNull java.util.Set<java.lang.Integer>);
method public static void setNetworkAvoidBadWifi(@NonNull android.content.Context, int);
method public static void setNetworkMeteredMultipathPreference(@NonNull android.content.Context, @NonNull String);
method public static void setNetworkSwitchNotificationMaximumDailyCount(@NonNull android.content.Context, @IntRange(from=0) int);
diff --git a/packages/Connectivity/framework/src/android/net/ConnectivitySettingsManager.java b/packages/Connectivity/framework/src/android/net/ConnectivitySettingsManager.java
index c4bb2d3f548f..07754e4af2ff 100644
--- a/packages/Connectivity/framework/src/android/net/ConnectivitySettingsManager.java
+++ b/packages/Connectivity/framework/src/android/net/ConnectivitySettingsManager.java
@@ -28,6 +28,8 @@ import android.annotation.SystemApi;
import android.content.ContentResolver;
import android.content.Context;
import android.net.ConnectivityManager.MultipathPreference;
+import android.os.Process;
+import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.ArraySet;
@@ -334,12 +336,12 @@ public class ConnectivitySettingsManager {
"network_metered_multipath_preference";
/**
- * A list of apps that should go on cellular networks in preference even when higher-priority
+ * A list of uids that should go on cellular networks in preference even when higher-priority
* networks are connected.
*
* @hide
*/
- public static final String MOBILE_DATA_PREFERRED_APPS = "mobile_data_preferred_apps";
+ public static final String MOBILE_DATA_PREFERRED_UIDS = "mobile_data_preferred_uids";
/**
* One of the private DNS modes that indicates the private DNS mode is off.
@@ -1002,28 +1004,46 @@ public class ConnectivitySettingsManager {
}
/**
- * Get the list of apps(from {@link Settings}) that should go on cellular networks in preference
+ * Get the list of uids(from {@link Settings}) that should go on cellular networks in preference
* even when higher-priority networks are connected.
*
* @param context The {@link Context} to query the setting.
- * @return A list of apps that should go on cellular networks in preference even when
+ * @return A list of uids that should go on cellular networks in preference even when
* higher-priority networks are connected or null if no setting value.
*/
- @Nullable
- public static String getMobileDataPreferredApps(@NonNull Context context) {
- return Settings.Secure.getString(context.getContentResolver(), MOBILE_DATA_PREFERRED_APPS);
+ @NonNull
+ public static Set<Integer> getMobileDataPreferredUids(@NonNull Context context) {
+ final String uidList = Settings.Secure.getString(
+ context.getContentResolver(), MOBILE_DATA_PREFERRED_UIDS);
+ final Set<Integer> uids = new ArraySet<>();
+ if (TextUtils.isEmpty(uidList)) {
+ return uids;
+ }
+ for (String uid : uidList.split(";")) {
+ uids.add(Integer.valueOf(uid));
+ }
+ return uids;
}
/**
- * Set the list of apps(to {@link Settings}) that should go on cellular networks in preference
+ * Set the list of uids(to {@link Settings}) that should go on cellular networks in preference
* even when higher-priority networks are connected.
*
* @param context The {@link Context} to set the setting.
- * @param list A list of apps that should go on cellular networks in preference even when
+ * @param uidList A list of uids that should go on cellular networks in preference even when
* higher-priority networks are connected.
*/
- public static void setMobileDataPreferredApps(@NonNull Context context, @Nullable String list) {
- Settings.Secure.putString(context.getContentResolver(), MOBILE_DATA_PREFERRED_APPS, list);
+ public static void setMobileDataPreferredUids(@NonNull Context context,
+ @NonNull Set<Integer> uidList) {
+ final StringJoiner joiner = new StringJoiner(";");
+ for (Integer uid : uidList) {
+ if (uid < 0 || UserHandle.getAppId(uid) > Process.LAST_APPLICATION_UID) {
+ throw new IllegalArgumentException("Invalid uid");
+ }
+ joiner.add(uid.toString());
+ }
+ Settings.Secure.putString(
+ context.getContentResolver(), MOBILE_DATA_PREFERRED_UIDS, joiner.toString());
}
/**