Android デバイスが WIFI に接続されているときに、WIFI ネットワークの SSID を取得しようとしています。
をリッスンする BroadcastReceiver を登録しましたandroid.net.wifi.supplicant.CONNECTION_CHANGE
。WIFI が切断または再接続されたときに通知を受け取ります。残念ながら、ネットワークの SSID を取得できません。
次のコードを使用して SSID を検索しています。
WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
SSID の代わりに文字列を取得します<unknown ssid>
。
これらはマニフェストのアクセス許可です (確認のために ACCESS_NETWORK_STATE を追加しましたが、実際には必要ありません)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
なぜこれが起こるのですか?実際の SSID を取得するにはどうすればよいですか? ブロードキャストは、接続が確立される前に開始されますか? 私が聞くべき別の放送はありますか?WIFI 接続のみに関心があり、3G 接続には関心がありません。
更新: チェックしたところ、wifiInfo.getBSSID()
null が返されます。