Disable wifi display activity if device can't support it.
Change-Id: I19ab9d0d480b66e56b87cef7c49d4391a3608111
Fix: 36069170
Test: make RunSettingsRoboTests
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 7d6cf77..7a4d5f8 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -67,6 +67,7 @@
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.DynamicIndexableContentMonitor;
import com.android.settings.search2.SearchFeatureProvider;
+import com.android.settings.wfd.WifiDisplaySettings;
import com.android.settings.widget.SwitchBar;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
@@ -947,6 +948,10 @@
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
.hasDeviceOwner(), isAdmin);
+ setTileEnabled(new ComponentName(packageName,
+ Settings.WifiDisplaySettingsActivity.class.getName()),
+ WifiDisplaySettings.isAvailable(this), isAdmin);
+
if (UserHandle.MU_ENABLED && !isAdmin) {
// When on restricted users, disable all extra categories (but only the settings ones).
diff --git a/src/com/android/settings/wfd/WifiDisplaySettings.java b/src/com/android/settings/wfd/WifiDisplaySettings.java
index f7c2f6e..0d6b4dc 100755
--- a/src/com/android/settings/wfd/WifiDisplaySettings.java
+++ b/src/com/android/settings/wfd/WifiDisplaySettings.java
@@ -125,9 +125,9 @@
super.onCreate(icicle);
final Context context = getActivity();
- mRouter = (MediaRouter)context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
- mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
- mWifiP2pManager = (WifiP2pManager)context.getSystemService(Context.WIFI_P2P_SERVICE);
+ mRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
+ mDisplayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
+ mWifiP2pManager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);
mWifiP2pChannel = mWifiP2pManager.initialize(context, Looper.getMainLooper(), null);
addPreferencesFromResource(R.xml.wifi_display_settings);
@@ -211,6 +211,11 @@
return super.onOptionsItemSelected(item);
}
+ public static boolean isAvailable(Context context) {
+ return context.getSystemService(Context.DISPLAY_SERVICE) != null
+ && context.getSystemService(Context.WIFI_P2P_SERVICE) != null;
+ }
+
private void scheduleUpdate(int changes) {
if (mStarted) {
if (mPendingChanges == 0) {
@@ -237,7 +242,7 @@
mWifiDisplayCertificationOn = Settings.Global.getInt(getContentResolver(),
Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, 0) != 0;
mWpsConfig = Settings.Global.getInt(getContentResolver(),
- Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
+ Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
// The wifi display enabled setting may have changed.
invalidateOptions = true;
@@ -402,12 +407,12 @@
});
mWpsConfig = Settings.Global.getInt(getActivity().getContentResolver(),
Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
- String[] wpsEntries = { "Default", "PBC", "KEYPAD", "DISPLAY" };
+ String[] wpsEntries = {"Default", "PBC", "KEYPAD", "DISPLAY"};
String[] wpsValues = {
- "" + WpsInfo.INVALID,
- "" + WpsInfo.PBC,
- "" + WpsInfo.KEYPAD,
- "" + WpsInfo.DISPLAY };
+ "" + WpsInfo.INVALID,
+ "" + WpsInfo.PBC,
+ "" + WpsInfo.KEYPAD,
+ "" + WpsInfo.DISPLAY};
lp.setKey("wps");
lp.setTitle(R.string.wifi_display_wps_config);
lp.setEntries(wpsEntries);
@@ -430,8 +435,8 @@
return true;
}
});
- String[] lcEntries = { "Auto", "1", "6", "11" };
- String[] lcValues = { "0", "1", "6", "11" };
+ String[] lcEntries = {"Auto", "1", "6", "11"};
+ String[] lcValues = {"0", "1", "6", "11"};
lp.setKey("listening_channel");
lp.setTitle(R.string.wifi_display_listen_channel);
lp.setEntries(lcEntries);
@@ -454,8 +459,8 @@
return true;
}
});
- String[] ocEntries = { "Auto", "1", "6", "11", "36" };
- String[] ocValues = { "0", "1", "6", "11", "36" };
+ String[] ocEntries = {"Auto", "1", "6", "11", "36"};
+ String[] ocValues = {"0", "1", "6", "11", "36"};
lp.setKey("operating_channel");
lp.setTitle(R.string.wifi_display_operating_channel);
lp.setEntries(ocEntries);
@@ -512,14 +517,14 @@
public void onSuccess() {
if (DEBUG) {
Slog.d(TAG, "Successfully " + (enable ? "entered" : "exited")
- +" listen mode.");
+ + " listen mode.");
}
}
@Override
public void onFailure(int reason) {
Slog.e(TAG, "Failed to " + (enable ? "entered" : "exited")
- +" listen mode with reason " + reason + ".");
+ + " listen mode with reason " + reason + ".");
}
});
}
@@ -530,18 +535,18 @@
}
mWifiP2pManager.setWifiP2pChannels(mWifiP2pChannel,
lc, oc, new ActionListener() {
- @Override
- public void onSuccess() {
- if (DEBUG) {
- Slog.d(TAG, "Successfully set wifi p2p channels.");
- }
- }
+ @Override
+ public void onSuccess() {
+ if (DEBUG) {
+ Slog.d(TAG, "Successfully set wifi p2p channels.");
+ }
+ }
- @Override
- public void onFailure(int reason) {
- Slog.e(TAG, "Failed to set wifi p2p channels with reason " + reason + ".");
- }
- });
+ @Override
+ public void onFailure(int reason) {
+ Slog.e(TAG, "Failed to set wifi p2p channels with reason " + reason + ".");
+ }
+ });
}
private void toggleRoute(MediaRouter.RouteInfo route) {
@@ -561,7 +566,7 @@
private void showWifiDisplayOptionsDialog(final WifiDisplay display) {
View view = getActivity().getLayoutInflater().inflate(R.layout.wifi_display_options, null);
- final EditText nameEditText = (EditText)view.findViewById(R.id.name);
+ final EditText nameEditText = (EditText) view.findViewById(R.id.name);
nameEditText.setText(display.getFriendlyDisplayName());
DialogInterface.OnClickListener done = new DialogInterface.OnClickListener() {
@@ -707,7 +712,7 @@
TypedValue value = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.disabledAlpha,
value, true);
- deviceDetails.setImageAlpha((int)(value.getFloat() * 255));
+ deviceDetails.setImageAlpha((int) (value.getFloat() * 255));
deviceDetails.setEnabled(true); // always allow button to be pressed
}
}