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

Commit a2bf987b authored by Sanket Padawe's avatar Sanket Padawe
Browse files

Doing provisioning check for wifi tethering from SystemUI

+ Calling activity which calls provisioning app only if provisioning
is needed.
+ Hiding Hotspot tile from quick settings when screen is locked.

Bug: 18368949
Change-Id: I5b92a7f2d46c8b5d9b323d6a5d49315694c599f7
parent b13c12f5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -303,6 +303,9 @@
    -->
    </string-array>

    <!-- Activity name to enable wifi tethering after provisioning app succeeds -->
    <string translatable="false" name="config_wifi_tether_enable">com.android.settings/.EnableWifiTether</string>

    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+1 −0
Original line number Diff line number Diff line
@@ -1877,6 +1877,7 @@

  <!-- From Settings -->
  <java-symbol type="array" name="config_mobile_hotspot_provision_app" />
  <java-symbol type="string" name="config_wifi_tether_enable" />
  <java-symbol type="bool" name="config_intrusiveNotificationLed" />
  <java-symbol type="dimen" name="preference_fragment_padding_bottom" />
  <java-symbol type="dimen" name="preference_fragment_padding_side" />
+6 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.R;
import com.android.systemui.qs.UsageTracker;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;

/** Quick settings tile: Hotspot **/
public class HotspotTile extends QSTile<QSTile.BooleanState> {
@@ -34,12 +35,14 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
    private final HotspotController mController;
    private final Callback mCallback = new Callback();
    private final UsageTracker mUsageTracker;
    private final KeyguardMonitor mKeyguard;

    public HotspotTile(Host host) {
        super(host);
        mController = host.getHotspotController();
        mUsageTracker = newUsageTracker(host.getContext());
        mUsageTracker.setListening(true);
        mKeyguard = host.getKeyguardMonitor();
    }

    @Override
@@ -85,7 +88,9 @@ 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() && mKeyguard.isSecure()
                && mKeyguard.isShowing());
        state.label = mContext.getString(R.string.quick_settings_hotspot_label);

        state.value = mController.isHotspotEnabled();
+17 −7
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.policy;

import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -35,9 +36,6 @@ public class HotspotControllerImpl implements HotspotController {

    private static final String TAG = "HotspotController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final String TETHER_ENABLE_PACKAGE = "com.android.settings";
    private static final String TETHER_ENABLE_CLASS = "com.android.settings.EnableWifiTether";

    private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>();
    private final Receiver mReceiver = new Receiver();
    private final Context mContext;
@@ -95,10 +93,22 @@ public class HotspotControllerImpl implements HotspotController {
        final ContentResolver cr = mContext.getContentResolver();
        // Call provisioning app which is called when enabling Tethering from Settings
        if (enabled) {
            if (isProvisioningNeeded()) {
                String tetherEnable = mContext.getResources().getString(
                        com.android.internal.R.string.config_wifi_tether_enable);
                Intent intent = new Intent();
            intent.setClassName(TETHER_ENABLE_PACKAGE, TETHER_ENABLE_CLASS);
                intent.setComponent(ComponentName.unflattenFromString(tetherEnable));
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivity(intent);
                mContext.startActivityAsUser(intent, UserHandle.CURRENT);
            } else {
                int wifiState = mWifiManager.getWifiState();
                if ((wifiState == WifiManager.WIFI_STATE_ENABLING) ||
                        (wifiState == WifiManager.WIFI_STATE_ENABLED)) {
                    mWifiManager.setWifiEnabled(false);
                    Settings.Global.putInt(cr, Settings.Global.WIFI_SAVED_STATE, 1);
                }
                mWifiManager.setWifiApEnabled(null, true);
            }
        } else {
            mWifiManager.setWifiApEnabled(null, false);
            if (Settings.Global.getInt(cr, Settings.Global.WIFI_SAVED_STATE, 0) == 1) {