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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Q&A

解決済

2回答

1024閲覧

androidでWi-Fiインターネット未接続時のHttpURLConnection利用

yamayamak

総合スコア131

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

0グッド

1クリップ

投稿2019/02/02 13:03

編集2019/02/02 14:15

Android9.0のPixel3端末を利用して、デバイスと直接通信しようとしています。
デバイスはWi-Fi親機となってSSIDを送信していますがインターネット未接続です。

AndroidからデバイスのSSIDに接続できていますが、デバイスWi-Fiはインターネット未接続のため「インターネット未接続」と表示され、HttpURLConnectionを利用してデバイスに接続しようとしていますが、接続できません。

デバイスとAndroidを接続し初期設定などを実施しようとしています。

「インターネット未接続」のWi-Fiを利用してHttpURLConnectionを利用できますでしょうか?
(もしくは他のHTTP通信を行う方法でもあればご教授をお願いします。)

Android8までは問題なくできたのですが、Android9からはできないので何か良い方法がないか探してます。

java

1HttpURLConnection con; 2(省略) 3try { 4 con.connect(); 5} catch (java.net.SocketTimeoutException e1) { 6 e1.printStackTrace(); 7} 8の結果(java.net.SocketTimeoutException)が以下のエラーになっています。 9java.net.SocketTimeoutException: failed to connect to /192.168.1.111 from /10.235.100.82 (port 42442) after 10000ms

192.168.1.10がAndroid端末のIPなのですが、10.235.100.82からアクセスしようとしているために失敗しているように見えてます。
192.168.1.111が接続しようとしているデバイス(無線親機)のIPです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/02/02 14:34

んー?  111 にGWをおいているなら 10とか位置関係がおかしいな(これは関係ない) IPの確認ってどうしてます?
yamayamak

2019/02/02 14:37

デバイスは固定IPで、AndroidはDHCPと固定と両方試してます。 IPアドレスは自由に設定できますので、GWを1と端末を10でも同じでした。。。
jimbe

2019/02/16 18:38

解決済み?に失礼します. 10.235.100.82 は何のアドレスかは判明されたのでしょうか. 私は「3G/4G側のアドレス」かと思ったのですが.
yamayamak

2019/02/17 03:51

当初、それも考えたのですが、プライベートアドレスなので違うかと思ったんです。 でも、キャリア内でグローバルに変換している可能性もあるので、「3G/4G側のアドレス」かもしれません。 ただ、稀に10.235.100.82が192.168.1.10からのエラーになっている場合もあったので、Wi-Fiを接続しているけど接続できないエラーが出るので関係なさそうです。 (インターネット未接続SSIDへの接続はマナーモードしかアクセスできなくなっているように見えてます。ただ、プログラムで解除する方法は発見できなかったです)
yamayamak

2019/02/17 07:24

ありがとうございます。アドレスも含めて接続も確認してみたいと思います。 現状はWi-Fi接続自体は成功しているけど、インターネット未接続環境の場合にHttpURLConnectionが使えないように見えています。 何か更新情報があれば追記させて頂きます。情報ありがとうございました。
yamayamak

2019/02/17 07:47

なるほど、ありがとうございます。 Wi-Fiインターフェースにソケットを強制的に作ってそれを使ってhttp通信するようにプログラムすればいけるんじゃ無いかということですね。 ちょっと今、Pixel3を手放してしまったり環境など色々あって出来ないのですが、別途、上記を確認してみたいと思います。 (Pixel3以外はマナーモードでなくても普通に接続できているので、Androidの細かな設定も関係しているようです。Pixel3は手動でWi-FiをSSIDに設定してChromeでも何度やってもアクセスできませんでした。マナーモードで接続できました。) 取り急ぎ、ありがとうございましたm(_ _)m
jimbe

2019/02/17 07:54

こちらもまだ仮定のみでして, これに繋がりそうな記事を探していますが見つかっておりませんので, 全く急がれなくて大丈夫です.
guest

回答2

0

自己解決

以下を参照し、静的IPを設定して試しましたがNGでした。
https://stackoverflow.com/questions/10278461/how-to-configure-a-static-ip-address-netmask-gateway-programmatically-on-andro

また、以下のセキュリティを設定し試しましたがNGでした。
https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted
試してNGだった内容を記載します。

xml

1<?xml version="1.0" encoding="utf-8"?> 2<network-security-config> 3 <domain-config cleartextTrafficPermitted="true"> 4 <domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain> 5 </domain-config> 6</network-security-config> 7 8 9<?xml version="1.0" encoding="utf-8"?> 10<manifest ...> 11 <uses-permission android:name="android.permission.INTERNET" /> 12 <application 13 ... 14 android:usesCleartextTraffic="true" 15 android:networkSecurityConfig="@xml/network_security_config" 16 ...> 17 ... 18 </application> 19</manifest>

最終的に、プログラムで解決する方法は見つからず、以下の対応を実施するしか方法がありませんでした。
(セキュリティの関係でダメなのかもしれません。。。)
1.スマホ画面上部から、2本指で下にスワイプ
2.「機内モード」アイコンをタップし、機内モードを有効にします。
機内モードを有効にすると、すべての通信がオフになります。
3.「Wi-Fi」アイコンをタップし、Wi-Fiを有効
https://www.buffalo.jp/support/faq/detail/16059.html

この状態でアプリを動かすと動作しました。

投稿2019/02/16 10:29

yamayamak

総合スコア131

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

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

0

Android9では、デフォルトでHTTP通信ができないようになっています(HTTPSはできます)
許可するには、AndroidManifest.xmlの<application>内に

xml

1android:usesCleartextTraffic="true"

を追加してください。

xml

1<application 2 android:usesCleartextTraffic="true" 3 (省略)> 45 (省略) 67</application>

投稿2019/02/02 13:18

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yamayamak

2019/02/02 13:23

ありがとうございます。 やってみましたがダメでした。。。 別の親機に接続した場合に、このAndroid端末とデバイス間(無線子機間)でhttp通信ができてました。。。
退会済みユーザー

退会済みユーザー

2019/02/02 14:46

回答者 多分それが原因だったら Timeout じゃなく BadGateway がかえってくるんじゃないのかな間違えてもタイムアウトは返してないと思う
退会済みユーザー

退会済みユーザー

2019/02/03 00:34

8で出来て9で出来ないってとこでこれかなとおもったんですが…そっか、Timeoutですもんね。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問