Android Studio(java)でアプリ開発中です。
アプリ開発は全くの初めてではないのですが、ほぼそれに近い状態です。
ネットや書籍を購入していろいろ勉強しながらの開発をしています。
宜しくお願いします。
###開発環境
---Android Studio Ver4.2.1 for Windows 64-bit
---Gradle Version 6.7.1
---API 30
###やりたい事
社内Webサーバに接続し、アプリ側で使用する出荷予定データをファイルで取得したいと
考えています。
###困り事の詳細内容
ネットでHTTPプロトコルによるサンプルコードを調査して
以下のコードになりましたが、
http.connect();
を実行すると
「Debug Console」に
/********************************************************
I/System.out: null
I/Choreographer: Skipped 741 frames! The application may be doing too much work on its main thread.
W/View: couldn't find view with id 2131231119
/********************************************************
と表示され、エラーで終わります。
"I/System.out: null"がキーワードと思ってネットでいろいろと調べましたが
いろいろな勉強不足が重なっているようで、
どのように解決すればいいのかさっぱりの状態です。
ご助力いただけると助かります。
######あるActivity内のコード
java
1 public void onClick(View v) { 2 // 書き込みファイル名 3 String filename = "index.html"; 4 File filFolder = getFilesDir(); 5 if(filFolder.exists()){ 6 filFolder.mkdir(); 7 } 8 File file = new File(getFilesDir(), filename); 9 try { 10 FileWriter fw = new FileWriter(file, false); 11 PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); 12 // URL文字列 13 String str = "http://vm-main/systems-test/MainMenu/index.html"; 14 // ターゲット 15 URL url = new URL( str ); 16 // 接続オブジェクト 17 HttpURLConnection http = (HttpURLConnection)url.openConnection(); 18 // GET メソッド 19 http.setRequestMethod("GET"); 20 // 接続 <<<===ここでエラー発生 21 http.connect(); 22 // UTF-8 でリーダーを作成 23 InputStreamReader isr = new InputStreamReader(http.getInputStream(), "utf8"); 24 // 行単位で読み込む為の準備 25 BufferedReader br = new BufferedReader(isr); 26 String line_buffer; 27 // BufferedReader は、readLine が null を返すと読み込み終了 28 while ( null != (line_buffer = br.readLine() ) ) { 29 pw.write(line_buffer + "\r\n"); 30 } 31 32 // 閉じる 33 br.close(); // BufferedReader 34 isr.close(); // InputStreamReader 35 http.disconnect(); // HttpURLConnection 36 pw.close(); // BufferedWriter 37 38 } 39 catch( Exception e ) { 40 System.out.println( e.getMessage() ); 41 } 42 }
尚、HTTP通信は
「Android 9 (API level 28) からはHTTP通信がデフォルトで無効になっている」
との事ですのでその対応策を以下の様にしています。
######manifest.xml
xml
1<manifest xmlns:android="http://schemas.android.com/apk/res/android" 2 package="jp.xxx.check_desuyo"> 3 <!-- 以下の uses-permission を追記 --> 4 <uses-permission android:name="android.permission.INTERNET"/> 5 <application 6・ 7・ 8・ 9 <!-- 以下の usesCleartextTraffic を追記 --> 10 android:usesCleartextTraffic="true" 11・ 12・ 13・ 14 </application> 15</manifest>
####■2021/06/30 追記
本現象は実機によるデバッグモードで発生していました。
なので、エミュレータではどうか?と思いやってみたところ同じ現象。
だが、エミュレータ内のブラウザで接続するとうまくいく。。。。
という事はWebサーバ環境が原因でない?
とりあえず0.1歩ぐらいは進んだかな・・・・
####■2021/06/30 追記その2
えー...
上記ソース内の内容を若干修正しました。
公開しないほうが良さげなものや調べて追記したのに
記載をしていないものがあり、
少し文字の大きさを変化させて見やすくした・・・・つもりです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。