1

Wi-Fi が利用可能かどうかを判断しようとすると、アプリがクラッシュします。

周りに try/catch ブロックがあります

WifiManager wifi = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);

しかし、それは単に存在するだけで、null ポインター例外でアプリがクラッシュします。

マニフェストのアクセス許可:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

それ以外の場合は、wi-fi が利用可能かどうかをどのように判断しますか?

編集

スタックトレース:

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)

アクティビティ変数が NULL でした。メア・カルパ!

4

2 に答える 2

1

Android Advanced Training: Managing Network Usage, Check a Device's Network Connection をご覧ください。これは、Android デバイスのネットワーク状態を適切にチェックする方法に関する優れたチュートリアルです。

内部では、ネットワークの状態をより一般的に照会する方法が見つかります。特に、ユーザーが WiFi を使用しているかどうかを確認できます。

関連するコード:

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

関連する権限:

android.permission.INTERNET - Allows applications to open network sockets.
android.permission.ACCESS_NETWORK_STATE - Allows applications to access information about networks.
于 2012-10-08T20:06:55.250 に答える
0

上記のコードをアクティビティ名に置き換えるactivityか、アクティビティ内にいる場合は削除してください。

于 2012-10-08T19:55:08.617 に答える