diff --git a/res/raw/lineage_wizard_script_managed_profile.xml b/res/raw/lineage_wizard_script_managed_profile.xml
index d32f5bba..00a66e3d 100644
--- a/res/raw/lineage_wizard_script_managed_profile.xml
+++ b/res/raw/lineage_wizard_script_managed_profile.xml
@@ -21,6 +21,10 @@
wizard:firstAction="welcome">
+
+
+
+
diff --git a/src/org/lineageos/setupwizard/LocationSettingsActivity.java b/src/org/lineageos/setupwizard/LocationSettingsActivity.java
index 846020bb..3a0bac34 100644
--- a/src/org/lineageos/setupwizard/LocationSettingsActivity.java
+++ b/src/org/lineageos/setupwizard/LocationSettingsActivity.java
@@ -19,7 +19,8 @@ package org.lineageos.setupwizard;
import android.location.LocationManager;
import android.os.Bundle;
-import android.os.UserHandle;
+import android.os.Process;
+import android.os.UserManager;
import android.view.View;
import android.widget.CheckBox;
@@ -32,6 +33,8 @@ public class LocationSettingsActivity extends BaseSetupWizardActivity {
private LocationManager mLocationManager;
+ private UserManager mUserManager;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -39,18 +42,27 @@ public class LocationSettingsActivity extends BaseSetupWizardActivity {
mLocationAccess = (CheckBox) findViewById(R.id.location_checkbox);
mLocationManager = getSystemService(LocationManager.class);
+ mUserManager = getSystemService(UserManager.class);
View locationAccessView = findViewById(R.id.location);
locationAccessView.setOnClickListener(v -> {
- mLocationManager.setLocationEnabledForUser(!mLocationAccess.isChecked(),
- new UserHandle(UserHandle.USER_CURRENT));
mLocationAccess.setChecked(!mLocationAccess.isChecked());
+ mLocationManager.setLocationEnabledForUser(mLocationAccess.isChecked(),
+ Process.myUserHandle());
+ if (mUserManager.isManagedProfile()) {
+ mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION,
+ !mLocationAccess.isChecked());
+ }
});
}
@Override
public void onResume() {
super.onResume();
- mLocationAccess.setChecked(mLocationManager.isLocationEnabled());
+ boolean checked = mLocationManager.isLocationEnabled();
+ if (mUserManager.isManagedProfile()) {
+ checked &= mUserManager.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION);
+ }
+ mLocationAccess.setChecked(checked);
}
@Override