web-dev-qa-db-ja.com

Android Kotlinを使用してWebView内にURLをロードする方法

私はAndroidとKotlin。

誰でもwebViewにURLをロードできますか?

アプリを開いたときにURLを読み込んでWebページを表示するだけです。

7

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout 
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"
tools:context="com.kotlinwebview.MainActivity">


<WebView
    Android:id="@+id/webview"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:ignore="MissingConstraints"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp" />

2.MainActivity.kt

class MainActivity : AppCompatActivity() {

    private lateinit var webView: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webView = findViewById(R.id.webview)
        webView.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
                view?.loadUrl(url)
                return true
            }
        }
        webView.loadUrl("https://www.google.co.in/")
    }
}
29
Ramesh sambu

Android Kotlin Extensionプラグインを使用します。Android Studio 3.0以降を使用している場合は、心配しないでください。既にプロジェクトにインストールされています。

レイアウトでWebViewのIDを使用し、loadUrl()メソッドを呼び出します。

Android WebViewの例-KotlinおよびJava

enter image description here

ここでWebViewのid:webview

webview.loadUrl("https://www.androidride.com")

追加することを忘れないでください

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

サードパーティのブラウザがWebViewにロードされたURLで開いている場合、WebViewClientを提供します。

webview.webViewClient = WebViewClient()

WebViewでYouTubeビデオを再生する場合は、WebViewでJavaScriptを有効にする必要があります。

enter image description here

webview.settings.javaScriptEnabled = true

あなたがAndroidアプリ開発の初心者であれば、このチュートリアルはWebViewについてのあなたの疑問をほぼすべてクリアするのに役立ちます。

ここをクリック

4
Thomas Daniel

これをアクティビティに追加します。

_@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_webview)

    val mWebView = findViewById<WebView>(R.id.webview)

    val webSettings = mWebView.settings
    webSettings.javaScriptEnabled = true
    mWebView.loadUrl(getString(R.string.website_url))
    mWebView.webViewClient = HelloWebViewClient()
    WebView.setWebContentsDebuggingEnabled(false)

}
_

そして、戻るボタンのナビゲーションと外部リンクの送信を許可するために、HelloWebViewClient()クラスに次を追加します。

_    override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
        if (Uri.parse(url).Host == getString(R.string.website_domain)) {
            return false
        }
        val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
        startActivity(intent)
        return true
    }

    override fun onPageFinished(view: WebView, url: String) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url)
    }

}

override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
    if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
        webview.goBack()
        return true
    }
    return super.onKeyDown(keyCode, event)
}
_

_website_domain_( https://stackoverflow.com/ )および_website_Host_(stackoverflow.com)を定義する文字列を追加します。

あなたがしようとしていることを達成するために困難に対処している場合、 この完全なサンプル を試して、指示に従ってください。

2
JorgeAmVF