【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/");
}
}
この記事が気に入ったらサポートをしてみませんか?