Skip to content

Commit 1d847f9

Browse files
committed
feat(app/main): add 'WebView'
1 parent e1ee8d6 commit 1d847f9

File tree

2 files changed

+65
-17
lines changed

2 files changed

+65
-17
lines changed
Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,70 @@
11
package ru.voko.oracleplsql
22

3-
import androidx.appcompat.app.AppCompatActivity
3+
import android.annotation.SuppressLint
4+
import android.content.Intent
5+
import android.net.Uri
46
import android.os.Bundle
7+
import android.view.KeyEvent
8+
import android.webkit.WebResourceRequest
9+
import android.webkit.WebView
10+
import android.webkit.WebViewClient
11+
import androidx.appcompat.app.AppCompatActivity
12+
import ru.voko.oracleplsql.databinding.ActivityMainBinding
513

614
class MainActivity : AppCompatActivity() {
15+
16+
private lateinit var binding: ActivityMainBinding
17+
718
override fun onCreate(savedInstanceState: Bundle?) {
819
super.onCreate(savedInstanceState)
9-
setContentView(R.layout.activity_main)
20+
binding = ActivityMainBinding.inflate(layoutInflater)
21+
setContentView(binding.root)
22+
23+
binding.webView.webViewClient = MyWebViewClient()
24+
25+
val webSettings = binding.webView.settings
26+
@SuppressLint("SetJavaScriptEnabled")
27+
webSettings.javaScriptEnabled = true
28+
29+
if (savedInstanceState == null) {
30+
binding.webView.loadUrl("file:///android_asset/index.html")
31+
}
32+
}
33+
34+
override fun onSaveInstanceState(outState: Bundle) {
35+
super.onSaveInstanceState(outState)
36+
binding.webView.saveState(outState)
1037
}
11-
}
38+
39+
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
40+
super.onRestoreInstanceState(savedInstanceState)
41+
binding.webView.restoreState(savedInstanceState)
42+
}
43+
44+
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
45+
if (keyCode == KeyEvent.KEYCODE_BACK && binding.webView.canGoBack()) {
46+
binding.webView.goBack()
47+
return true
48+
}
49+
return super.onKeyDown(keyCode, event)
50+
}
51+
52+
private inner class MyWebViewClient : WebViewClient() {
53+
54+
override fun shouldOverrideUrlLoading(
55+
view: WebView?,
56+
request: WebResourceRequest?
57+
): Boolean {
58+
if (Uri.parse(request?.url.toString()).host
59+
== Uri.parse("file:///android_asset/index.html").host
60+
) {
61+
return false
62+
}
63+
Intent(Intent.ACTION_VIEW, Uri.parse(request?.url.toString())).apply {
64+
startActivity(this)
65+
}
66+
return true
67+
}
68+
}
69+
70+
}
Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:app="http://schemas.android.com/apk/res-auto"
2+
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
43
xmlns:tools="http://schemas.android.com/tools"
4+
android:id="@+id/webView"
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
7-
tools:context=".MainActivity">
8-
9-
<TextView
10-
android:layout_width="wrap_content"
11-
android:layout_height="wrap_content"
12-
android:text="Hello World!"
13-
app:layout_constraintBottom_toBottomOf="parent"
14-
app:layout_constraintEnd_toEndOf="parent"
15-
app:layout_constraintStart_toStartOf="parent"
16-
app:layout_constraintTop_toTopOf="parent" />
17-
18-
</androidx.constraintlayout.widget.ConstraintLayout>
7+
tools:context=".MainActivity" />

0 commit comments

Comments
 (0)