From a2bf987b742b328f56e71eab32a9fa37ec1961ca Mon Sep 17 00:00:00 2001 From: Sanket Padawe Date: Thu, 4 Dec 2014 13:41:17 -0800 Subject: [PATCH] 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 --- core/res/res/values/config.xml | 3 +++ core/res/res/values/symbols.xml | 1 + .../systemui/qs/tiles/HotspotTile.java | 7 +++++- .../policy/HotspotControllerImpl.java | 24 +++++++++++++------ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index cdbee61cc5077..44ffdd81b2c30 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -303,6 +303,9 @@ --> + + com.android.settings/.EnableWifiTether + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index a9123d1e4e08a..0cc4e8717b537 100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1877,6 +1877,7 @@ + diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java index 9744dca40f842..6e710ef837d71 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java @@ -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 { @@ -34,12 +35,14 @@ public class HotspotTile extends QSTile { 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 { @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(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java index 8f40011677bdb..b05cb31cfb6bc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java @@ -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 mCallbacks = new ArrayList(); 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) { - Intent intent = new Intent(); - intent.setClassName(TETHER_ENABLE_PACKAGE, TETHER_ENABLE_CLASS); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); + if (isProvisioningNeeded()) { + String tetherEnable = mContext.getResources().getString( + com.android.internal.R.string.config_wifi_tether_enable); + Intent intent = new Intent(); + intent.setComponent(ComponentName.unflattenFromString(tetherEnable)); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + 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) {