[解決済み】AndroidでWi-Fiが接続されているかどうかを確認する方法を教えてください。
質問
Wi-Fiに接続していないユーザーには、ダウンロードをさせたくないのです。しかし、Wi-Fiが有効になっているかどうかしかわからないようですが、3G接続が可能な場合もあります。
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
return false;
}
しかし、その状態は私が期待するようなものではありません。Wi-Fiが接続されているにもかかわらず、次のような状態になっています。
OBTAINING_IPADDR
という状態です。
解決方法は?
ConnectivityManagerを使用して、Wi-Fiアダプタの状態を取得することができるはずです。そこから、次のことができます。 接続されているか、利用可能かどうかを確認する .
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
// Do whatever
}
NOTE 私たち初心者のために書いておきますが、次のように記述する必要があります。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
をあなたの
AndroidManifest.xml を実行する必要があります。
NOTE2
:
public NetworkInfo getNetworkInfo (int networkType)
は非推奨となりました。
このメソッドはAPIレベル23で非推奨となった。このメソッドは は、同じ種類の複数の接続されたネットワークをサポートしています。使用方法 getAllNetworks()とgetNetworkInfo(android.net.Network)で代用してください。
注3
:
public static final int TYPE_WIFI
は非推奨となりました。
この定数は API レベル 28 で非推奨となりました。 アプリケーションは、代わりに NetworkCapabilities.hasTransport(int) または requestNetwork(NetworkRequest, NetworkCallback) を使用して、サポートされるトランスポートの適切なネットワークを要求する必要があります。
関連
-
[解決済み】Android Studioで最新バージョンのgradleを使用する方法
-
[解決済み] sendUserActionEvent() は null です。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】まだ警告が出る:設定 'compile' は時代遅れで 'implementation' に置き換わった。
-
[解決済み】Android Studioです。「プロジェクトが C ドライブに作成されている場合、「タスク ':app:mergeDebugResources' の実行に失敗しました。
-
[解決済み】apkファイルのインストール中に「パッケージが破損しているようです」というエラーが発生する。
-
[解決済み】新しいAVDを作成すると、CPU/ABIフィールドに「システムイメージがインストールされていません」と表示される。
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み】findViewByIDがnullを返す。
-
[解決済み] TypeError: cb.apply は関数ではありません。
-
[解決済み] Android Studioで「URIが登録されていません」と報告されるのはなぜですか?[クローズド]
-
[解決済み] Looper.prepare()を呼び出していないスレッドではハンドラを作成できない
-
[解決済み] APKのインストール中にDELETE_FAILED_INTERNAL_ERRORエラーが発生する。