質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

7849閲覧

android studio wifi接続する場合

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/10/14 09:24

編集2022/01/12 10:55

お世話になります。
過去一度でも接続したwifiについて接続する方法は以下で可能でした。

WifiManager.enableNetwork(k.networkId, true);

しかし、上記関数enableNetworkは過去接続したidとpassを見る為、パスの入力がtrueになっています。

wifiのssidとパスをユーザから取得した上で
wifiに初回接続する具体的プログラムについてご教授の程宜しくお願いします。

すごくわかりやすくいえば

上記ではパスを入力していません。
idとPASSを入力してwifiに接続するプログラムを教えてください。

String netSSIDNotQuote = String.format("\"%s\"", netSSID); WifiManager MyConnectWifiManager = (WifiManager) getSystemService (Context.WIFI_SERVICE); WifiInfo info = MyConnectWifiManager.getConnectionInfo (); MyConnectWifiManager.setWifiEnabled(true); List<WifiConfiguration> list = MyConnectWifiManager.getConfiguredNetworks(); for( WifiConfiguration i : list ) { if(i.SSID != null && i.SSID.equals(netSSIDNotQuote)) { MyConnectWifiManager.disconnect(); MyConnectWifiManager.enableNetwork(i.networkId, true); MyConnectWifiManager.reconnect();
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); String ssidWpaWpa2Psk = "xxxxx"; String targetSSID = "xxxxx"; WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"" + ssidWpaWpa2Psk + "\""; config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.preSharedKey = "\"xxxxxxxxxxxx\""; //ネットワークIDを取得する 成功は0 失敗は-1 int networkId = wifiManager.addNetwork(config); wifiManager.saveConfiguration(); wifiManager.updateNetwork(config); //WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); //int networkId = 0; // 上記設定で取得できたものを使用 //String targetSSID = "xxxxx"; // 例外処理 WiFi機能が無効の状態で呼び出されるとSSID検索の所でnullとなる try { // ssidの検索を開始 wifiManager.startScan(); for (ScanResult result : wifiManager.getScanResults()) { // Android4.2以降よりダブルクォーテーションが付いてくるので除去 String resultSSID = result.SSID.replace("\"", ""); if (resultSSID.equals(targetSSID)) { // ユーザが入力したIDと検索したIDが同一だった為、接続を開始する if (networkId > 0) { // 先に既存接続先を無効にしてから接続します for (WifiConfiguration c0 : wifiManager.getConfiguredNetworks()) { wifiManager.enableNetwork(c0.networkId, false); } wifiManager.enableNetwork(networkId, true); } break; } } } catch (NullPointerException e) { // 例外処理 Toast ts = Toast.makeText(login.this, "ERROR WiFi機能が無効の状態で呼び出されています。", Toast.LENGTH_SHORT); ts.setGravity(Gravity.CENTER, 0, 0); ts.show(); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

WifiConfigurationを使って設定を追加しないといけないですね。
具体的なプログラムはネットで調べて、自分なりに実装してからわからなければ再度質問してください。

投稿2016/10/14 11:39

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/14 11:50

ネットでは既に調べています。以下が参考になりました。 http://jp.androids.help/q27007 http://web-terminal.blogspot.jp/2013/12/wifilan.html http://www.codota.com/android/methods/android.net.wifi.WifiManager/enableNetwork WifiConfigurationは上記ソースで既に使っていますが、パスを設定する追加設定が不明の為質問しています。ネットの情報ではパスを入力する事は見つかりませんでした。 先日は丁寧に回答頂きありがとうございました。yonaさんが他の方に答えている回答で問題解決もしました。 宜しくお願いします。
退会済みユーザー

退会済みユーザー

2016/10/14 11:52

なお、既存のwifi接続は上記ソースでうまくいっております。 例えば、SSID:aaa pass:bbb で過去に接続した事のあるネットワークは 上記プログラムで aaa を指定してあげれば、パスを指定せずとも接続しにいきます。 逆にパスを引き出そうとしましたが、"*"となり閲覧する事が出来ませんでした。
yona

2016/10/14 11:58

回答では「追加」と言っています。 新規で登録するのでWifiManager#getConfiguredNetworksではそもそも取得できるはずはありません。 WifiConfigurationをインスタンス化し、各種値を設定後WifiManager#addNetworkで追加しないといけないですね。 また、インスタンス名はキャメルケースが一般的です。とくにこだわりがないなら癖にしたほうがいいですね。
yona

2016/10/17 02:40

私はサンプルコードを回答に書くつもりはありません。 WifiConfigurationをインスタンス化の仕方を調べてください。 できたインスタンスをaddNetworkに渡してください。
退会済みユーザー

退会済みユーザー

2016/10/17 05:41

サンプルコードすら書けないなら回答しないで下さい。
yona

2016/10/17 06:15

回答者全員がPCからアクセスしてると思っているんですか? では、親切な回答者を、待って数日無駄な時間を過ごしたらいいですよ。
退会済みユーザー

退会済みユーザー

2016/10/17 16:32 編集

全員がPCからアクセス?一体なんの話をしているのでしょうか? ま、戯言はいいのですが、とにかくこれ以上質問に対する具体的なコードや話がしずらい方と無駄な議論をしたくないので二度と回答してこないでください。迷惑です。(言うのも二回目です)。。 私が本サイトに質問させて頂いている理由は問題解決、答えです。 「親切な回答者を、待って数日無駄な時間を過ごしたらいい」 例えばこういった類のやりたりは、結局お互いに不毛ですし閲覧されている方も気分悪いと思います。色々な意味で、とても残念でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問