Merge "Link WifiAssistant card with actual settings." into lmp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
878ca0edb9
@@ -19,13 +19,6 @@ package com.android.settings.wifi;
|
||||
import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID;
|
||||
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.RestrictedSettingsFragment;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settings.search.SearchIndexableRaw;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -33,15 +26,17 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.content.SharedPreferences;
|
||||
import android.location.LocationManager;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.NetworkInfo.DetailedState;
|
||||
import android.net.NetworkScoreManager;
|
||||
import android.net.NetworkScorerAppManager;
|
||||
import android.net.NetworkScorerAppManager.NetworkScorerAppData;
|
||||
import android.net.wifi.ScanResult;
|
||||
import android.net.wifi.SupplicantState;
|
||||
import android.net.wifi.WifiConfiguration;
|
||||
@@ -66,6 +61,13 @@ import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.RestrictedSettingsFragment;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settings.search.SearchIndexableRaw;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -86,6 +88,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
private static final String TAG = "WifiSettings";
|
||||
|
||||
private static final int REQUEST_ENABLE_WIFI_ASSISTANT = 1;
|
||||
|
||||
/* package */ static final int MENU_ID_WPS_PBC = Menu.FIRST;
|
||||
private static final int MENU_ID_WPS_PIN = Menu.FIRST + 1;
|
||||
private static final int MENU_ID_SAVED_NETWORK = Menu.FIRST + 2;
|
||||
@@ -153,7 +157,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
private boolean mDlgEdit;
|
||||
private AccessPoint mDlgAccessPoint;
|
||||
private Bundle mAccessPointSavedState;
|
||||
private Preference mWifiAssistant;
|
||||
private Preference mWifiAssistantPreference;
|
||||
private NetworkScorerAppData mWifiAssistantApp;
|
||||
|
||||
/** verbose logging flag. this flag is set thru developer debugging options
|
||||
* and used so as to assist with in-the-field WiFi connectivity debugging */
|
||||
@@ -162,19 +167,15 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
/* End of "used in Wifi Setup context" */
|
||||
|
||||
/** Holds the Wifi Assistant Card. */
|
||||
private static class WifiAssistantPreference extends Preference {
|
||||
final WifiSettings mWifiSettings;
|
||||
|
||||
public WifiAssistantPreference(WifiSettings wifiSettings) {
|
||||
super(wifiSettings.getActivity());
|
||||
mWifiSettings = wifiSettings;
|
||||
private class WifiAssistantPreference extends Preference {
|
||||
public WifiAssistantPreference() {
|
||||
super(getActivity());
|
||||
setLayoutResource(R.layout.wifi_assistant_card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
final Preference pref = this;
|
||||
Button setup = (Button)view.findViewById(R.id.setup);
|
||||
Button noThanks = (Button)view.findViewById(R.id.no_thanks_button);
|
||||
|
||||
@@ -182,19 +183,29 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
setup.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(NetworkScoreManager.ACTION_CHANGE_ACTIVE);
|
||||
intent.putExtra(NetworkScoreManager.EXTRA_PACKAGE_NAME, "wifi-assistant");
|
||||
mWifiSettings.startActivity(intent);
|
||||
mWifiSettings.setWifiAssistantTimeout();
|
||||
mWifiSettings.getPreferenceScreen().removePreference(pref);
|
||||
Intent intent = new Intent();
|
||||
if (mWifiAssistantApp.mConfigurationActivityClassName != null) {
|
||||
// App has a custom configuration activity; launch that.
|
||||
// This custom activity will be responsible for launching the system
|
||||
// dialog.
|
||||
intent.setClassName(mWifiAssistantApp.mPackageName,
|
||||
mWifiAssistantApp.mConfigurationActivityClassName);
|
||||
} else {
|
||||
// Fall back on the system dialog.
|
||||
intent.setAction(NetworkScoreManager.ACTION_CHANGE_ACTIVE);
|
||||
intent.putExtra(NetworkScoreManager.EXTRA_PACKAGE_NAME,
|
||||
mWifiAssistantApp.mPackageName);
|
||||
}
|
||||
startActivityForResult(intent, REQUEST_ENABLE_WIFI_ASSISTANT);
|
||||
}
|
||||
});
|
||||
|
||||
noThanks.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mWifiSettings.setWifiAssistantTimeout();
|
||||
mWifiSettings.getPreferenceScreen().removePreference(pref);
|
||||
setWifiAssistantTimeout();
|
||||
getPreferenceScreen().removePreference(WifiAssistantPreference.this);
|
||||
mWifiAssistantApp = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -359,7 +370,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
addPreferencesFromResource(R.xml.wifi_settings);
|
||||
|
||||
mWifiAssistant = new WifiAssistantPreference(this);
|
||||
prepareWifiAssistantCard();
|
||||
|
||||
mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
|
||||
getListView().setEmptyView(mEmptyView);
|
||||
@@ -367,6 +378,19 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
setHasOptionsMenu(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
|
||||
if (requestCode == REQUEST_ENABLE_WIFI_ASSISTANT) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
setWifiAssistantTimeout();
|
||||
getPreferenceScreen().removePreference(mWifiAssistantPreference);
|
||||
mWifiAssistantApp = null;
|
||||
}
|
||||
} else {
|
||||
super.onActivityResult(requestCode, resultCode, resultData);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
@@ -681,8 +705,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
addMessagePreference(R.string.wifi_empty_list_wifi_on);
|
||||
}
|
||||
|
||||
if (showWifiAssistantCard()) {
|
||||
getPreferenceScreen().addPreference(mWifiAssistant);
|
||||
if (mWifiAssistantApp != null) {
|
||||
getPreferenceScreen().addPreference(mWifiAssistantPreference);
|
||||
}
|
||||
|
||||
for (AccessPoint accessPoint : accessPoints) {
|
||||
@@ -704,12 +728,34 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
}
|
||||
}
|
||||
|
||||
private boolean showWifiAssistantCard() {
|
||||
private boolean prepareWifiAssistantCard() {
|
||||
if (mWifiAssistantPreference != null) {
|
||||
mWifiAssistantPreference = new WifiAssistantPreference();
|
||||
}
|
||||
|
||||
if (NetworkScorerAppManager.getActiveScorer(getActivity()) != null) {
|
||||
// A scorer is already enabled; don't show the card.
|
||||
return false;
|
||||
}
|
||||
|
||||
Collection<NetworkScorerAppData> scorers =
|
||||
NetworkScorerAppManager.getAllValidScorers(getActivity());
|
||||
if (scorers.isEmpty()) {
|
||||
// No scorers are available to enable; don't show the card.
|
||||
return false;
|
||||
}
|
||||
|
||||
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
|
||||
long lastTimeoutEndTime = sharedPreferences.getLong(KEY_ASSISTANT_START_TIME, 0);
|
||||
long dismissTime = sharedPreferences.getLong(KEY_ASSISTANT_DISMISS_TIME, 0);
|
||||
|
||||
return ((System.currentTimeMillis() - lastTimeoutEndTime) > dismissTime);
|
||||
boolean shouldShow = ((System.currentTimeMillis() - lastTimeoutEndTime) > dismissTime);
|
||||
if (shouldShow) {
|
||||
// TODO: b/13780935 - Implement proper scorer selection. Rather than pick the first
|
||||
// scorer on the system, we should allow the user to select one.
|
||||
mWifiAssistantApp = scorers.iterator().next();
|
||||
}
|
||||
return shouldShow;
|
||||
}
|
||||
|
||||
private void setWifiAssistantTimeout() {
|
||||
|
Reference in New Issue
Block a user