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);