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

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

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

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

Q&A

解決済

2回答

8301閲覧

AndroidStudioのエミュレーターでWebVIewがネットに繋がらない

退会済みユーザー

退会済みユーザー

総合スコア0

Android

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

0グッド

0クリップ

投稿2020/03/02 20:31

編集2021/06/29 05:18

Android Studioでアプリ開発をしている初心者です。
ネットで勉強しながら開発しているのですが、以下のサイトを参考にサンプルを作成したところエミュレーターでネットに繋がりませんでした。
【参考にしたサンプルコード】
https://akira-watson.com/android/webview.html
エミュレーターのブラウザ → 繋がらない
エミュレーターのWebView → 繋がらない
エラーメッセージ
ERR_NAME_NOT_RESOLVED
さらに他のサイトで調べて、DNSサーバを8.8.8.8にすると解決すると書いてあったので、試してみると
エミュレーターのブラウザ → 繋がる
エミュレーターのWebView → 繋がらない
エラーメッセージ
ERR_ACCESS_DENIED
上記の通り、エミュレーターのブラウザではネットに接続できるようになり、エラーメッセージが変わりました。
WebViewでの接続ができるように調べていたのですが、いまだに解決に至らず、こちらに質問させて頂きました。
ぜひ、お力をお貸しください。
MainActivity.java

package

1import androidx.appcompat.app.AppCompatActivity; 2import android.os.Bundle; 3import android.content.Intent; 4import android.net.Uri; 5import android.view.KeyEvent; 6import android.view.View; 7import android.view.WindowManager; 8import android.webkit.WebView; 9import android.widget.Button; 10public class MainActivity extends AppCompatActivity { 11 private WebView webView; 12 private String accessUrl = "https://akira-watson.com/"; 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 Button button1 = findViewById(R.id.button_1); 18 Button button2 = findViewById(R.id.button_2); 19 // WebView 20 button1.setOnClickListener(new View.OnClickListener() { 21 @Override 22 public void onClick(View v) { 23 setContentView(R.layout.web); 24 webView = findViewById(R.id.web_view); 25 // JavaScriptを有効化 26 webView.getSettings().setJavaScriptEnabled(true); 27 // Web Storage を有効化 28 webView.getSettings().setDomStorageEnabled(true); 29 // Hardware Acceleration ON 30 getWindow().setFlags( 31 WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, 32 WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 33 webView.loadUrl(accessUrl); 34 } 35 }); 36 // Browser 37 button2.setOnClickListener(new View.OnClickListener() { 38 @Override 39 public void onClick(View v) { 40 Uri uri = Uri.parse(accessUrl); 41 Intent intent = new Intent(Intent.ACTION_VIEW,uri); 42 startActivity(intent); 43 } 44 }); 45 } 46 @Override 47 public boolean onKeyDown(int keyCode, KeyEvent event) { 48 // 戻るページがある場合 49 if (event.getAction() == KeyEvent.ACTION_DOWN 50 && keyCode == KeyEvent.KEYCODE_BACK){ 51 if(webView.canGoBack()){ 52 webView.goBack(); 53 } 54 else{ 55 finish(); 56 } 57 return true; 58 } 59 return super.onKeyDown(keyCode, event); 60 } 61}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:background="#dfe" tools:context=".MainActivity"> <Button android:id="@+id/button_1" android:text="@string/button1" android:layout_margin="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> <Button android:id="@+id/button_2" android:text="@string/button2" android:layout_margin="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testapp002"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" > <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

web.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent"> </WebView> </LinearLayout>

strings.xml

<resources> <string name="app_name">YourAppName</string> <string name="button1">WebView</string> <string name="button2">Browser</string> </resources>

エミュレーター
イメージ説明
ビルド画面
イメージ説明
エラーメッセージ
イメージ説明
Browser画面
イメージ説明

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

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

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

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

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

hoshi-takanori

2020/03/02 21:22

参考ページにも書いてありますが、AndroidManifest.xml に android.permission.INTERNET のパーミッションを追加しましたか?
退会済みユーザー

退会済みユーザー

2020/03/03 02:26

コメントありがとうございます。 はい、追記しております。 AndroidManifest.xmlは以下のようになっています。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testapp002"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
退会済みユーザー

退会済みユーザー

2020/03/03 03:54

AAPT: error: attribute android:cleartextTrafficPermitted not found. 追記してみましたが、エラーが発生します。 最後はtrueじゃなくてfalseでいいんですかね? ちなみに、trueでも試しましたが、同様のエラーになります。
hoshi-takanori

2020/03/03 04:01

ごめんなさい、android:usesCleartextTraffic="true" ですね。ちなみにこれは http のページを見るときに必要になるやつで、https ならなくても大丈夫みたいです。
退会済みユーザー

退会済みユーザー

2020/03/03 04:04

なるほどですね。 こちら参考サイトのコピペのままなので、参照先のURLは、 https://akira-watson.com/ のままになっています。
guest

回答2

0

ベストアンサー

※コメントの返信欄に画像が貼れなかったため、回答欄の方で再投稿させていただきます

ソースコードのご提示ありがとうございます。
手元で新規プロジェクトを作成し、ご提示いただいたコードを動かしてみました。

結果としては、WebViewも正常表示される状態でした。
イメージ説明

イメージ説明

エミュレーターも同じ条件のものを使用しております。
イメージ説明

一点気になったのが、手元ではDNSサーバの設定は特にせず正常表示されたという点です。

ERR_NAME_NOT_RESOLVED のエラーに対して、具体的にどのような対応をされたのかわかりませんが…

もしかしたらアプリとは別に、マシンのLAN環境などのネットワークまわりに何か問題がありそうな気もしました。

すみませんが私の方ではこれ以上追えそうになかったため、ひとまず手元での状況を報告させていただきましたm(__)m

投稿2020/03/04 13:41

unsoluble_sugar

総合スコア222

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

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

退会済みユーザー

退会済みユーザー

2021/06/28 13:35 編集

削除
guest

0

AndroidManifest.xmlandroid:usesCleartextTraffic の設定は追加されていますでしょうか?

xml

1 2<application 3 ... 4 android:usesCleartextTraffic="true" 5 ... 6> 7</application>

Android 9(API レベル 28)からTLS(Transport Layer Security)がデフォルトとなり、上記設定が不足している場合、HTTPプロトコルの通信が許可されません。

API レベル 27 以前をターゲットとしているアプリの場合、デフォルト値は "true" です。API レベル 28 以降をターゲットとしているアプリの場合、デフォルト値は "false" です。

<application>  |  Android デベロッパー  |  Android Developers

もし設定が抜けているようであれば android:usesCleartextTraffic="true" を追加することで、ネット接続ができるようになるのではないかと思われます。

投稿2020/03/03 12:21

unsoluble_sugar

総合スコア222

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

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

退会済みユーザー

退会済みユーザー

2021/06/28 13:36 編集

削除
unsoluble_sugar

2020/03/03 16:32 編集

なるほど。 android:usesCleartextTraffic="true" の追記後、一度エミュレーターにインストール済みのアプリをアンインストールして、再ビルド&インストールした場合はどうでしょうか? エミュレーターのOSバージョンや画面スクショなど、もう少し詳細情報をいただけると、わかる方が出てくるかもしれません。
退会済みユーザー

退会済みユーザー

2021/06/28 13:36 編集

削除
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問