2020import android .content .Context ;
2121import android .database .ContentObserver ;
2222import android .os .Handler ;
23+ import android .os .UserHandle ;
2324import android .provider .Settings ;
2425import android .util .Log ;
2526import android .util .Slog ;
@@ -48,6 +49,8 @@ public final class LocationBlacklist extends ContentObserver {
4849 // all fields below synchronized on mLock
4950 private String [] mWhitelist = new String [0 ];
5051 private String [] mBlacklist = new String [0 ];
52+
53+ private int mCurrentUserId = UserHandle .USER_OWNER ;
5154
5255 public LocationBlacklist (Context context , Handler handler ) {
5356 super (handler );
@@ -56,20 +59,22 @@ public LocationBlacklist(Context context, Handler handler) {
5659
5760 public void init () {
5861 mContext .getContentResolver ().registerContentObserver (Settings .Secure .getUriFor (
59- BLACKLIST_CONFIG_NAME ), false , this );
62+ BLACKLIST_CONFIG_NAME ), false , this , UserHandle . USER_ALL );
6063// mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
61- // WHITELIST_CONFIG_NAME), false, this);
64+ // WHITELIST_CONFIG_NAME), false, this, UserHandle.USER_ALL );
6265 reloadBlacklist ();
6366 }
6467
68+ private void reloadBlacklistLocked () {
69+ mWhitelist = getStringArrayLocked (WHITELIST_CONFIG_NAME );
70+ Slog .i (TAG , "whitelist: " + Arrays .toString (mWhitelist ));
71+ mBlacklist = getStringArrayLocked (BLACKLIST_CONFIG_NAME );
72+ Slog .i (TAG , "blacklist: " + Arrays .toString (mBlacklist ));
73+ }
74+
6575 private void reloadBlacklist () {
66- String blacklist [] = getStringArray (BLACKLIST_CONFIG_NAME );
67- String whitelist [] = getStringArray (WHITELIST_CONFIG_NAME );
6876 synchronized (mLock ) {
69- mWhitelist = whitelist ;
70- Slog .i (TAG , "whitelist: " + Arrays .toString (mWhitelist ));
71- mBlacklist = blacklist ;
72- Slog .i (TAG , "blacklist: " + Arrays .toString (mBlacklist ));
77+ reloadBlacklistLocked ();
7378 }
7479 }
7580
@@ -78,7 +83,6 @@ private void reloadBlacklist() {
7883 * (package name matches blacklist, and does not match whitelist)
7984 */
8085 public boolean isBlacklisted (String packageName ) {
81- /*
8286 synchronized (mLock ) {
8387 for (String black : mBlacklist ) {
8488 if (packageName .startsWith (black )) {
@@ -92,7 +96,6 @@ public boolean isBlacklisted(String packageName) {
9296 }
9397 }
9498 }
95- */
9699 return false ;
97100 }
98101
@@ -113,8 +116,19 @@ public void onChange(boolean selfChange) {
113116 reloadBlacklist ();
114117 }
115118
116- private String [] getStringArray (String key ) {
117- String flatString = Settings .Secure .getString (mContext .getContentResolver (), key );
119+ public void switchUser (int userId ) {
120+ synchronized (mLock ) {
121+ mCurrentUserId = userId ;
122+ reloadBlacklistLocked ();
123+ }
124+ }
125+
126+ private String [] getStringArrayLocked (String key ) {
127+ String flatString ;
128+ synchronized (mLock ) {
129+ flatString = Settings .Secure .getStringForUser (mContext .getContentResolver (), key ,
130+ mCurrentUserId );
131+ }
118132 if (flatString == null ) {
119133 return new String [0 ];
120134 }
0 commit comments