Don't allow secondary users apps to start restricted Settings fragment.

On a secondary user, the fragments ApnSettings, TetherSettings and VpnSettings
should not be started.

But an app can still send an intent to start these fragments.
Prevent this by checkin the userId in these fragments.

BUG:15313261
BUG:15312781
BUG:15312494

Change-Id: I2a36bb89a8e37e4440aa28372d7a1800b33dae37
This commit is contained in:
Nicolas Prevot
2015-06-02 22:27:49 +01:00
parent 96e25b8d93
commit a5df4779a0
3 changed files with 8 additions and 3 deletions

View File

@@ -33,6 +33,7 @@ import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
@@ -173,7 +174,8 @@ public class ApnSettings extends SettingsPreferenceFragment implements
getListView().setEmptyView(empty); getListView().setEmptyView(empty);
} }
if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) { if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
|| UserHandle.myUserId()!= UserHandle.USER_OWNER) {
mUnavailable = true; mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getActivity(), null)); setPreferenceScreen(new PreferenceScreen(getActivity(), null));
return; return;

View File

@@ -38,6 +38,7 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
@@ -123,7 +124,8 @@ public class TetherSettings extends SettingsPreferenceFragment
mUm = (UserManager) getSystemService(Context.USER_SERVICE); mUm = (UserManager) getSystemService(Context.USER_SERVICE);
if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)) { if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)
|| UserHandle.myUserId() != UserHandle.USER_OWNER) {
mUnavailable = true; mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getActivity(), null)); setPreferenceScreen(new PreferenceScreen(getActivity(), null));
return; return;

View File

@@ -106,7 +106,8 @@ public class VpnSettings extends SettingsPreferenceFragment implements
super.onCreate(savedState); super.onCreate(savedState);
mUserManager = (UserManager) getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) { if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)
|| UserHandle.myUserId() != UserHandle.USER_OWNER) {
mUnavailable = true; mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getActivity(), null)); setPreferenceScreen(new PreferenceScreen(getActivity(), null));
return; return;