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.net.wifi.WifiConfiguration.INVALID_NETWORK_ID;
|
||||||
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
|
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.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
@@ -33,15 +26,17 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
import android.net.NetworkInfo.DetailedState;
|
import android.net.NetworkInfo.DetailedState;
|
||||||
import android.net.NetworkScoreManager;
|
import android.net.NetworkScoreManager;
|
||||||
|
import android.net.NetworkScorerAppManager;
|
||||||
|
import android.net.NetworkScorerAppManager.NetworkScorerAppData;
|
||||||
import android.net.wifi.ScanResult;
|
import android.net.wifi.ScanResult;
|
||||||
import android.net.wifi.SupplicantState;
|
import android.net.wifi.SupplicantState;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
@@ -66,6 +61,13 @@ import android.widget.Button;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
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.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -86,6 +88,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
private static final String TAG = "WifiSettings";
|
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;
|
/* 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_WPS_PIN = Menu.FIRST + 1;
|
||||||
private static final int MENU_ID_SAVED_NETWORK = Menu.FIRST + 2;
|
private static final int MENU_ID_SAVED_NETWORK = Menu.FIRST + 2;
|
||||||
@@ -153,7 +157,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
private boolean mDlgEdit;
|
private boolean mDlgEdit;
|
||||||
private AccessPoint mDlgAccessPoint;
|
private AccessPoint mDlgAccessPoint;
|
||||||
private Bundle mAccessPointSavedState;
|
private Bundle mAccessPointSavedState;
|
||||||
private Preference mWifiAssistant;
|
private Preference mWifiAssistantPreference;
|
||||||
|
private NetworkScorerAppData mWifiAssistantApp;
|
||||||
|
|
||||||
/** verbose logging flag. this flag is set thru developer debugging options
|
/** verbose logging flag. this flag is set thru developer debugging options
|
||||||
* and used so as to assist with in-the-field WiFi connectivity debugging */
|
* 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" */
|
/* End of "used in Wifi Setup context" */
|
||||||
|
|
||||||
/** Holds the Wifi Assistant Card. */
|
/** Holds the Wifi Assistant Card. */
|
||||||
private static class WifiAssistantPreference extends Preference {
|
private class WifiAssistantPreference extends Preference {
|
||||||
final WifiSettings mWifiSettings;
|
public WifiAssistantPreference() {
|
||||||
|
super(getActivity());
|
||||||
public WifiAssistantPreference(WifiSettings wifiSettings) {
|
|
||||||
super(wifiSettings.getActivity());
|
|
||||||
mWifiSettings = wifiSettings;
|
|
||||||
setLayoutResource(R.layout.wifi_assistant_card);
|
setLayoutResource(R.layout.wifi_assistant_card);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindView(View view) {
|
public void onBindView(View view) {
|
||||||
super.onBindView(view);
|
super.onBindView(view);
|
||||||
final Preference pref = this;
|
|
||||||
Button setup = (Button)view.findViewById(R.id.setup);
|
Button setup = (Button)view.findViewById(R.id.setup);
|
||||||
Button noThanks = (Button)view.findViewById(R.id.no_thanks_button);
|
Button noThanks = (Button)view.findViewById(R.id.no_thanks_button);
|
||||||
|
|
||||||
@@ -182,19 +183,29 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
setup.setOnClickListener(new OnClickListener() {
|
setup.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
Intent intent = new Intent(NetworkScoreManager.ACTION_CHANGE_ACTIVE);
|
Intent intent = new Intent();
|
||||||
intent.putExtra(NetworkScoreManager.EXTRA_PACKAGE_NAME, "wifi-assistant");
|
if (mWifiAssistantApp.mConfigurationActivityClassName != null) {
|
||||||
mWifiSettings.startActivity(intent);
|
// App has a custom configuration activity; launch that.
|
||||||
mWifiSettings.setWifiAssistantTimeout();
|
// This custom activity will be responsible for launching the system
|
||||||
mWifiSettings.getPreferenceScreen().removePreference(pref);
|
// 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() {
|
noThanks.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
mWifiSettings.setWifiAssistantTimeout();
|
setWifiAssistantTimeout();
|
||||||
mWifiSettings.getPreferenceScreen().removePreference(pref);
|
getPreferenceScreen().removePreference(WifiAssistantPreference.this);
|
||||||
|
mWifiAssistantApp = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -359,7 +370,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
addPreferencesFromResource(R.xml.wifi_settings);
|
addPreferencesFromResource(R.xml.wifi_settings);
|
||||||
|
|
||||||
mWifiAssistant = new WifiAssistantPreference(this);
|
prepareWifiAssistantCard();
|
||||||
|
|
||||||
mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
|
mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
|
||||||
getListView().setEmptyView(mEmptyView);
|
getListView().setEmptyView(mEmptyView);
|
||||||
@@ -367,6 +378,19 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
setHasOptionsMenu(true);
|
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
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
@@ -681,8 +705,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
addMessagePreference(R.string.wifi_empty_list_wifi_on);
|
addMessagePreference(R.string.wifi_empty_list_wifi_on);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showWifiAssistantCard()) {
|
if (mWifiAssistantApp != null) {
|
||||||
getPreferenceScreen().addPreference(mWifiAssistant);
|
getPreferenceScreen().addPreference(mWifiAssistantPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (AccessPoint accessPoint : accessPoints) {
|
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();
|
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
|
||||||
long lastTimeoutEndTime = sharedPreferences.getLong(KEY_ASSISTANT_START_TIME, 0);
|
long lastTimeoutEndTime = sharedPreferences.getLong(KEY_ASSISTANT_START_TIME, 0);
|
||||||
long dismissTime = sharedPreferences.getLong(KEY_ASSISTANT_DISMISS_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() {
|
private void setWifiAssistantTimeout() {
|
||||||
|
Reference in New Issue
Block a user