Reputation: 10641
When attempting to determine if Wi-fi is even available, my app crashes.
I have a try/catch block surrounding
WifiManager wifi = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
but it's mere presence crashes the app with a null pointer exception.
Manifest permissions:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
How does one determine if wi-fi is even available otherwise?
EDIT
Stack Trace:
10-08 20:10:21.820: E/AndroidRuntime(14331): FATAL EXCEPTION: main
10-08 20:10:21.820: E/AndroidRuntime(14331): java.lang.NullPointerException
10-08 20:10:21.820: E/AndroidRuntime(14331): at com.myapp.ui.FragmentSettingsDetailWireless.loadControls(FragmentSettingsDetailWireless.jav a:121)
10-08 20:10:21.820: E/AndroidRuntime(14331): at com.myapp.ui.FragmentSettingsDetailWireless.onActivityCreated(FragmentSettingsDetailWireles s.java:110)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:814)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:998)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.app.BackStackRecord.run(BackStackRecord.java:622)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1330)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:417)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.os.Handler.handleCallback(Handler.java:605)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.os.Handler.dispatchMessage(Handler.java:92)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.os.Looper.loop(Looper.java:137)
10-08 20:10:21.820: E/AndroidRuntime(14331): at android.app.ActivityThread.main(ActivityThread.java:4340)
10-08 20:10:21.820: E/AndroidRuntime(14331): at java.lang.reflect.Method.invokeNative(Native Method)
10-08 20:10:21.820: E/AndroidRuntime(14331): at java.lang.reflect.Method.invoke(Method.java:511)
10-08 20:10:21.820: E/AndroidRuntime(14331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-08 20:10:21.820: E/AndroidRuntime(14331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-08 20:10:21.820: E/AndroidRuntime(14331): at dalvik.system.NativeStart.main(Native Method)
The activity variable was NULL. Mea Culpa!
Upvotes: 1
Views: 1053
Reputation: 14941
I would take a look at the Android Advanced Training: Managing Network Usage, Check a Device's Network Connection. It is a good tutorial on how to properly check the network state of an Android device.
Inside, you'll find a way to more generally query the network state and then in particular, you can check if the user is on WiFi or not.
The relevant code:
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean isWifiConn = networkInfo.isConnected();
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
The relevant permissions:
android.permission.INTERNET - Allows applications to open network sockets.
android.permission.ACCESS_NETWORK_STATE - Allows applications to access information about networks.
Upvotes: 1
Reputation: 12058
Repalce activity
in your code above by your activity name, or just remove it if you are within the activity.
Upvotes: 0