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

Commit 2c1e3963 authored by ltrochtova's avatar ltrochtova Committed by Gerrit Code Review
Browse files

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

parents 0645c211 c6f0e23f
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);
        }
    };

@@ -938,7 +947,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()) {
@@ -1995,6 +2010,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);