From c50d8b6d94a392b38079ed0b696dabed18bfa35b Mon Sep 17 00:00:00 2001 From: lucaslin Date: Fri, 16 Oct 2020 19:13:48 +0800 Subject: Use public API of Settings.Secure to get/put secure settings Get/put secure settings by using public API of Settings.Secure to prevent using hidden API. Bug: 171033200 Test: atest FrameworksNetTests Test: Install 3rd-party VPN app and create multiple users, then change the VPN always-on setting in one of users and check if the VPN always-on setting of the others is not changed. (i.e. Make sure they won't influence each other.) Change-Id: Icd455df3fa6eac52cdab1b162556f429da99e8f7 --- .../core/java/com/android/server/connectivity/Vpn.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index d3abe871b80e..35f9e2fae688 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -38,6 +38,7 @@ import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -1976,28 +1977,33 @@ public class Vpn { * @see Settings.Secure#putStringForUser */ public void settingsSecurePutStringForUser(String key, String value, int userId) { - Settings.Secure.putStringForUser(mContext.getContentResolver(), key, value, userId); + Settings.Secure.putString(getContentResolverAsUser(userId), key, value); } /** * @see Settings.Secure#putIntForUser */ public void settingsSecurePutIntForUser(String key, int value, int userId) { - Settings.Secure.putIntForUser(mContext.getContentResolver(), key, value, userId); + Settings.Secure.putInt(getContentResolverAsUser(userId), key, value); } /** * @see Settings.Secure#getStringForUser */ public String settingsSecureGetStringForUser(String key, int userId) { - return Settings.Secure.getStringForUser(mContext.getContentResolver(), key, userId); + return Settings.Secure.getString(getContentResolverAsUser(userId), key); } /** * @see Settings.Secure#getIntForUser */ public int settingsSecureGetIntForUser(String key, int def, int userId) { - return Settings.Secure.getIntForUser(mContext.getContentResolver(), key, def, userId); + return Settings.Secure.getInt(getContentResolverAsUser(userId), key, def); + } + + private ContentResolver getContentResolverAsUser(int userId) { + return mContext.createContextAsUser( + UserHandle.of(userId), 0 /* flags */).getContentResolver(); } public boolean isCallerSystem() { -- cgit v1.2.3-59-g8ed1b