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

Commit 20ef4024 authored by Jason Monk's avatar Jason Monk
Browse files

Hide hotspot tile if 'provisioning' is needed

If we need carrier entitlement checks don't show the hotspot tile
which could bypass them, instead make the user go to settings.

Bug: 17879554
Change-Id: I30a5b51b26a2d4e977579b71a16c3c7a8d004eea
parent 53c84002
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -66,7 +66,8 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {

    @Override
    protected void handleUpdateState(BooleanState state, Object arg) {
        state.visible = mController.isHotspotSupported() && mUsageTracker.isRecentlyUsed();
        state.visible = mController.isHotspotSupported() && mUsageTracker.isRecentlyUsed()
                && !mController.isProvisioningNeeded();
        state.label = mContext.getString(R.string.quick_settings_hotspot_label);

        state.value = mController.isHotspotEnabled();
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ public interface HotspotController {
    boolean isHotspotEnabled();
    boolean isHotspotSupported();
    void setHotspotEnabled(boolean enabled);
    boolean isProvisioningNeeded();

    public interface Callback {
        void onHotspotChanged(boolean enabled);
+15 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
@@ -73,6 +74,20 @@ public class HotspotControllerImpl implements HotspotController {
        return !isSecondaryUser && mConnectivityManager.isTetheringSupported();
    }

    @Override
    public boolean isProvisioningNeeded() {
        // Keep in sync with other usage of config_mobile_hotspot_provision_app.
        // TetherSettings#isProvisioningNeeded and
        // ConnectivityManager#enforceTetherChangePermission
        String[] provisionApp = mContext.getResources().getStringArray(
                com.android.internal.R.array.config_mobile_hotspot_provision_app);
        if (SystemProperties.getBoolean("net.tethering.noprovisioning", false)
                || provisionApp == null) {
            return false;
        }
        return (provisionApp.length == 2);
    }

    @Override
    public void setHotspotEnabled(boolean enabled) {
        final ContentResolver cr = mContext.getContentResolver();