diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a2d80b9daae..b3d84539018 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -69,6 +69,7 @@
+
Scan
Advanced
+
+ Show Apps
+
+ Show WiFi Strength
Connect to network
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java
index dda8d9e5ccd..a736e6c1c13 100644
--- a/src/com/android/settings/wifi/AccessPoint.java
+++ b/src/com/android/settings/wifi/AccessPoint.java
@@ -19,6 +19,8 @@ package com.android.settings.wifi;
import com.android.settings.R;
import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.net.NetworkInfo.DetailedState;
@@ -286,6 +288,26 @@ class AccessPoint extends Preference {
}
}
+ public void showAppIcon() {
+ PackageManager pm = getContext().getPackageManager();
+ String systemName = pm.getNameForUid(android.os.Process.SYSTEM_UID);
+
+ Drawable drawable = pm.getDefaultActivityIcon();
+ if (mConfig == null) {
+ drawable.setAlpha(0);
+ } else if (mConfig.creatorName.equals(systemName)) {
+ drawable = getContext().getApplicationInfo().loadIcon(pm);
+ } else {
+ try {
+ drawable = pm.getApplicationIcon(mConfig.creatorName);
+ } catch (NameNotFoundException nnfe) {
+ // use default app icon
+ }
+ }
+
+ setIcon(drawable);
+ }
+
@Override
public int compareTo(Preference preference) {
if (!(preference instanceof AccessPoint)) {
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 258c220438d..3c8ac998b39 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -102,6 +102,7 @@ public class WifiSettings extends RestrictedSettingsFragment
private static final int MENU_ID_FORGET = Menu.FIRST + 7;
private static final int MENU_ID_MODIFY = Menu.FIRST + 8;
private static final int MENU_ID_WRITE_NFC = Menu.FIRST + 9;
+ private static final int MENU_ID_APPS = Menu.FIRST + 10;
private static final String KEY_ASSISTANT_DISMISS_PLATFORM = "assistant_dismiss_platform";
@@ -142,6 +143,9 @@ public class WifiSettings extends RestrictedSettingsFragment
private TextView mEmptyView;
+ private boolean showAppIcons = false;
+ private MenuItem showAppMenuItem = null;
+
// this boolean extra specifies whether to disable the Next button when not connected. Used by
// account creation outside of setup wizard.
private static final String EXTRA_ENABLE_NEXT_ON_CONNECT = "wifi_enable_next_on_connect";
@@ -420,6 +424,8 @@ public class WifiSettings extends RestrictedSettingsFragment
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ showAppMenuItem = menu.add(Menu.NONE, MENU_ID_APPS, 0, R.string.wifi_menu_apps);
+ showAppMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
ta.recycle();
}
@@ -496,6 +502,16 @@ public class WifiSettings extends RestrictedSettingsFragment
null);
}
return true;
+ case MENU_ID_APPS:
+ showAppIcons = !showAppIcons;
+
+ if (showAppIcons) {
+ showAppMenuItem.setTitle(R.string.wifi_menu_apps_strength);
+ } else {
+ showAppMenuItem.setTitle(R.string.wifi_menu_apps);
+ }
+ updateAccessPoints();
+ return true;
}
return super.onOptionsItemSelected(item);
}
@@ -663,6 +679,10 @@ public class WifiSettings extends RestrictedSettingsFragment
}
for (AccessPoint accessPoint : accessPoints) {
+ if (showAppIcons) {
+ accessPoint.showAppIcon();
+ }
+
// Ignore access points that are out of range.
if (accessPoint.getLevel() != -1) {
getPreferenceScreen().addPreference(accessPoint);