@OwnerUser @ProfileUser @WorkerThread public static void reprovisionManagedProfile(final Context context) {
		final DevicePolicies policies = new DevicePolicies(context);
		final boolean owner = Users.isOwner();
		if (! owner) {
			// Always perform all the required provisioning steps covered by stock ManagedProvisioning, in case something is missing there.
			// This is also required for manual provision via ADB shell.
			policies.execute(DevicePolicyManager::clearCrossProfileIntentFilters);
			final int provision_type = PreferenceManager.getDefaultSharedPreferences(context).getInt(PREF_KEY_PROFILE_PROVISION_TYPE, 0);
			if (provision_type == 1) ProfileOwnerManualProvisioning.start(context, policies);	// Simulate the stock managed profile provision
		}
		startProfileOwnerPostProvisioning(context, policies);
		if (! owner) setupLauncherActivityInIsland(context);
	}
This is the normal procedure after ManagedProvision finished its provisioning, running in profile.
engine/src/main/java/com/oasisfeng/island/provisioning/IslandProvisioning.java