WifiEnabler.java revision 83bcc98af19597a213a8d174e8f1b47453d513ce
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License.
6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at
7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and
14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License.
15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings.wifi;
18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport static android.net.wifi.WifiManager.WIFI_STATE_DISABLED;
20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport static android.net.wifi.WifiManager.WIFI_STATE_DISABLING;
21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;
22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport static android.net.wifi.WifiManager.WIFI_STATE_ENABLING;
23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;
24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.settings.R;
2683bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwoodimport com.android.settings.AirplaneModeEnabler;
27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.BroadcastReceiver;
29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context;
30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent;
31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.IntentFilter;
32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.NetworkInfo;
33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiManager;
34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference;
35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.CheckBoxPreference;
3683bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwoodimport android.provider.Settings;
37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils;
38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Config;
39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Log;
40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class WifiEnabler implements Preference.OnPreferenceChangeListener {
42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final boolean LOCAL_LOGD = Config.LOGD || WifiLayer.LOGV;
44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String TAG = "SettingsWifiEnabler";
45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final Context mContext;
47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final WifiManager mWifiManager;
48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final CheckBoxPreference mWifiCheckBoxPref;
49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final CharSequence mOriginalSummary;
50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final IntentFilter mWifiStateFilter;
52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() {
53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        @Override
55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onReceive(Context context, Intent intent) {
56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                handleWifiStateChanged(
58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WIFI_STATE_UNKNOWN),
59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        intent.getIntExtra(WifiManager.EXTRA_PREVIOUS_WIFI_STATE,
60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                                WIFI_STATE_UNKNOWN));
61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                handleNetworkStateChanged(
63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO));
64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public WifiEnabler(Context context, WifiManager wifiManager,
69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            CheckBoxPreference wifiCheckBoxPreference) {
70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mContext = context;
71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiCheckBoxPref = wifiCheckBoxPreference;
72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiManager = wifiManager;
73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mOriginalSummary = wifiCheckBoxPreference.getSummary();
75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        wifiCheckBoxPreference.setPersistent(false);
76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiStateFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void resume() {
82afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        int state = mWifiManager.getWifiState();
83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // This is the widget enabled state, not the preference toggled state
84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiCheckBoxPref.setEnabled(state == WIFI_STATE_ENABLED || state == WIFI_STATE_DISABLED
85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                || state == WIFI_STATE_UNKNOWN);
86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mContext.registerReceiver(mWifiStateReceiver, mWifiStateFilter);
88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiCheckBoxPref.setOnPreferenceChangeListener(this);
89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void pause() {
92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mContext.unregisterReceiver(mWifiStateReceiver);
93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiCheckBoxPref.setOnPreferenceChangeListener(null);
94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public boolean onPreferenceChange(Preference preference, Object value) {
97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Turn on/off Wi-Fi
98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        setWifiEnabled((Boolean) value);
99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Don't update UI to opposite state until we're sure
101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return false;
102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void setWifiEnabled(final boolean enable) {
105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Disable button
106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mWifiCheckBoxPref.setEnabled(false);
107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (!mWifiManager.setWifiEnabled(enable)) {
109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setSummary(enable ? R.string.error_starting : R.string.error_stopping);
110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void handleWifiStateChanged(int wifiState, int previousWifiState) {
114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (LOCAL_LOGD) {
116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Log.d(TAG, "Received wifi state changed from "
117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    + getHumanReadableWifiState(previousWifiState) + " to "
118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    + getHumanReadableWifiState(wifiState));
119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (wifiState == WIFI_STATE_DISABLED || wifiState == WIFI_STATE_ENABLED) {
122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setChecked(wifiState == WIFI_STATE_ENABLED);
123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref
124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    .setSummary(wifiState == WIFI_STATE_DISABLED ? mOriginalSummary : null);
125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
12683bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood            mWifiCheckBoxPref.setEnabled(isWifiAllowed(mContext));
127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (wifiState == WIFI_STATE_DISABLING || wifiState == WIFI_STATE_ENABLING) {
129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setSummary(wifiState == WIFI_STATE_ENABLING ? R.string.wifi_starting
130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    : R.string.wifi_stopping);
131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (wifiState == WIFI_STATE_UNKNOWN) {
133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            int message = R.string.wifi_error;
134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (previousWifiState == WIFI_STATE_ENABLING) message = R.string.error_starting;
135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            else if (previousWifiState == WIFI_STATE_DISABLING) message = R.string.error_stopping;
136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setChecked(false);
138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setSummary(message);
139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setEnabled(true);
140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void handleNetworkStateChanged(NetworkInfo networkInfo) {
144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (LOCAL_LOGD) {
146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Log.d(TAG, "Received network state changed to " + networkInfo);
147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (mWifiManager.isWifiEnabled()) {
150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            String summary = WifiStatus.getStatus(mContext,
151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mWifiManager.getConnectionInfo().getSSID(), networkInfo.getDetailedState());
152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mWifiCheckBoxPref.setSummary(summary);
153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
15683bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood    private static boolean isWifiAllowed(Context context) {
15783bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        // allowed if we are not in airplane mode
15883bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        if (!AirplaneModeEnabler.isAirplaneModeOn(context)) {
159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
16183bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        // allowed if wifi is not in AIRPLANE_MODE_RADIOS
16283bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        String radios = Settings.System.getString(context.getContentResolver(),
16383bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood                Settings.System.AIRPLANE_MODE_RADIOS);
16483bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        if (radios == null || !radios.contains(Settings.System.RADIO_WIFI)) {
16583bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood            return true;
166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
16783bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        // allowed if wifi is in AIRPLANE_MODE_TOGGLEABLE_RADIOS
16883bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        radios = Settings.System.getString(context.getContentResolver(),
16983bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood                Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
17083bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood        return (radios != null && radios.contains(Settings.System.RADIO_WIFI));
171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
17283bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood
173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static String getHumanReadableWifiState(int wifiState) {
174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        switch (wifiState) {
175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case WIFI_STATE_DISABLED:
176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return "Disabled";
177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case WIFI_STATE_DISABLING:
178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return "Disabling";
179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case WIFI_STATE_ENABLED:
180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return "Enabled";
181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case WIFI_STATE_ENABLING:
182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return "Enabling";
183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case WIFI_STATE_UNKNOWN:
184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return "Unknown";
185afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            default:
186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return "Some other state!";
187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project}
190