見出し画像

【Android/java】WebViewでサイトを表示するのにつまずいたので、解決方法をまとめてみました。

AndroidでWebViewを使うには、

1. エミュレータがネットに接続できる
2. アプリの方で、接続できるドメインを指定する

以上の2つのことをする必要があります。1,2の順で解決方法を書いていきます。

1. PCでDNSの設定をする(Macのやり方)

1. システム環境設定を開き、ネットワークを選択する。
2. すると、右下の方に小さい詳細ボタンがあるので、それをクリック。
3. 移動さきの画面に、WiFi, TCP/IP, DNS, WINS...などのタブがあるので、DNSのタブを選択。

4. 検索ドメインの入力欄に、8.8.8.8入力。

これでエミュレーターはネットに接続できると思います。Chromeアプリとかが使える状態になります。


2. Manifestの設定

詳しくはわからないんですが、セキュリティーの問題とかでMainfestをいじる必要があるみたいです。

AndroidManifest.xmlにて...

<uses-permission android:name="android.permission.INTERNET" />

を<manifest...>の下あたりにおきます。
次に、<application .../>の中に、以下の三行を追加します。

android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="n"

2行目を追加すると、xml/network_security_configというファイルがないので、エラーが出ていると思います。

なので、次は、xml/network_security_configをresディレクトリーの中に作ります。

res/xml/network_security_configのコード

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
   <domain-config cleartextTrafficPermitted="true">
       <domain includeSubdomains="true">qiita.com</domain>
   </domain-config>
</network-security-config>

<domain includeSubdomains="true">qiita.com</domain>

のドメインは、webViewで表示したいドメインに応じて変更してやってください


あとは、WebViewをレイアウトに配置して、urlをロードするだけです。

(1例)

public class MainActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       WebView webView = findViewById(R.id.webView);
       webView.loadUrl("https://qiita.com/");
   }
}

この記事が気に入ったらサポートをしてみませんか?