Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 180e7935 authored by ltrochtova's avatar ltrochtova Committed by android-build-merger
Browse files

Merge "Don't offer the BT sharing option to the user if BT is disallowed."

am: 2c1e396382

Change-Id: I132bdd6aee36e32ddbcfdc8f38aed1e88424297e
parents 6695f518 5e992dbc
Loading
Loading
Loading
Loading
+38 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.os.Message;
import android.os.Process;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
@@ -58,6 +59,8 @@ import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Slog;

import com.android.server.pm.PackageManagerService;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.concurrent.ConcurrentHashMap;
@@ -217,6 +220,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
        @Override
        public void onUserRestrictionsChanged(int userId, Bundle newRestrictions,
                Bundle prevRestrictions) {
            if (!newRestrictions.containsKey(UserManager.DISALLOW_BLUETOOTH)
                    && !prevRestrictions.containsKey(UserManager.DISALLOW_BLUETOOTH)) {
                // The relevant restriction has not changed - do nothing.
                return;
            }
            final boolean bluetoothDisallowed =
                    newRestrictions.getBoolean(UserManager.DISALLOW_BLUETOOTH);
            if ((mEnable || mEnableExternal) && bluetoothDisallowed) {
@@ -227,6 +235,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
                  // when from system.
                }
            }
            updateOppLauncherComponentState(bluetoothDisallowed);
        }
    };

@@ -944,7 +953,13 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
        UserManagerInternal userManagerInternal =
                LocalServices.getService(UserManagerInternal.class);
        userManagerInternal.addUserRestrictionsListener(mUserRestrictionsListener);
        if (isBluetoothDisallowed()) {
        final boolean isBluetoothDisallowed = isBluetoothDisallowed();
        PackageManagerService packageManagerService =
                (PackageManagerService) ServiceManager.getService("package");
        if (packageManagerService != null && !packageManagerService.isOnlyCoreApps()) {
            updateOppLauncherComponentState(isBluetoothDisallowed);
        }
        if (isBluetoothDisallowed) {
            return;
        }
        if (mEnableExternal && isBluetoothPersistedStateOnBluetooth()) {
@@ -2001,6 +2016,28 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
        }
    }

    /**
     * Disables BluetoothOppLauncherActivity component, so the Bluetooth sharing option is not
     * offered to the user if Bluetooth is disallowed. Puts the component to its default state if
     * Bluetooth is not disallowed.
     *
     * @param bluetoothDisallowed whether the {@link UserManager.DISALLOW_BLUETOOTH} user
     * restriction was set.
     */
    private void updateOppLauncherComponentState(boolean bluetoothDisallowed) {
        final ComponentName oppLauncherComponent = new ComponentName("com.android.bluetooth",
                "com.android.bluetooth.opp.BluetoothOppLauncherActivity");
        final int newState = bluetoothDisallowed
                ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
                : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
        try {
            mContext.getPackageManager()
                    .setComponentEnabledSetting(oppLauncherComponent, newState, 0);
        } catch (Exception e) {
            // The component was not found, do nothing.
        }
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);