Skip to content

Commit f35bdc5

Browse files
authored
Merge pull request #23 from frogobox/release/2.0.1
Release/2.0.1
2 parents 725371a + 6877004 commit f35bdc5

11 files changed

Lines changed: 296 additions & 191 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010

1111
## Version Release
1212

13-
$version_release = 1.0.0
13+
$version_release = 2.0.1
1414

1515
What's New??
1616

17-
* Base WebView Project *
17+
* New Libs to Latest Version *
18+
* Can Back Inside Website *
1819

1920
## How To Use / Implement This Project
2021

app/src/main/java/com/frogobox/webview/ConfigApp.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.frogobox.webview
22

3+
import com.frogobox.webview.ui.util.sampleHtmlText
4+
35
/**
46
* Created by Faisal Amir on 24/10/22
57
* -----------------------------------------
@@ -13,8 +15,22 @@ package com.frogobox.webview
1315

1416
object ConfigApp {
1517

18+
/**
19+
* Link for your Website
20+
*/
1621
const val URL_LINK_WEBSITE = "https://github.com/amirisback"
1722

23+
/**
24+
* Inline your html text string
25+
*/
26+
const val URL_LINK_DATA = sampleHtmlText
27+
28+
/**
29+
* Set Your Server Domain
30+
*/
31+
const val URL_WEB = URL_LINK_WEBSITE
32+
33+
1834
object Flag {
1935

2036
/*
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.frogobox.webview.common.ext
2+
3+
import android.util.Patterns
4+
5+
/**
6+
* Created by faisalamircs on 01/09/2025
7+
* -----------------------------------------
8+
* Name : Muhammad Faisal Amir
9+
* E-mail : faisalamircs@gmail.com
10+
* Github : github.com/amirisback
11+
* -----------------------------------------
12+
*/
13+
14+
15+
fun String.validateUrl(): String {
16+
return if (this.contains("http://") || this.contains("https://") || this.isValidUrl()) {
17+
this
18+
} else {
19+
"https://$this"
20+
}
21+
}
22+
23+
fun String.isValidUrl(): Boolean {
24+
return Patterns.WEB_URL.matcher(this).matches()
25+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.frogobox.webview.common.ext
2+
3+
import android.annotation.SuppressLint
4+
import android.view.View
5+
import android.webkit.CookieManager
6+
import android.webkit.WebChromeClient
7+
import android.webkit.WebResourceError
8+
import android.webkit.WebResourceRequest
9+
import android.webkit.WebSettings
10+
import android.webkit.WebView
11+
import android.webkit.WebViewClient
12+
import com.frogobox.webview.common.callback.WebViewCallback
13+
14+
/**
15+
* Created by Faisal Amir on 24/10/22
16+
* -----------------------------------------
17+
* E-mail : faisalamircs@gmail.com
18+
* Github : github.com/amirisback
19+
* -----------------------------------------
20+
* Copyright (C) Frogobox ID / amirisback
21+
* All rights reserved
22+
*/
23+
24+
25+
@SuppressLint("SetJavaScriptEnabled")
26+
fun WebView.loadUrlExt(
27+
url: String,
28+
auth: HashMap<String, String>? = null,
29+
callback: WebViewCallback? = null,
30+
) {
31+
callback?.onShowProgress()
32+
33+
if (url == "") {
34+
callback?.onHideProgress()
35+
callback?.onFailed()
36+
} else {
37+
38+
CookieManager.getInstance().setAcceptCookie(true)
39+
CookieManager.getInstance().setAcceptThirdPartyCookies(this, true)
40+
41+
apply {
42+
43+
settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL
44+
settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
45+
46+
settings.mediaPlaybackRequiresUserGesture = false
47+
settings.loadsImagesAutomatically = true
48+
settings.loadWithOverviewMode = true
49+
50+
settings.useWideViewPort = true
51+
settings.allowFileAccess = true
52+
settings.allowContentAccess = true
53+
54+
settings.javaScriptEnabled = true
55+
settings.javaScriptCanOpenWindowsAutomatically = true
56+
settings.domStorageEnabled = true
57+
58+
settings.setSupportZoom(true)
59+
settings.builtInZoomControls = true
60+
settings.displayZoomControls = false
61+
62+
scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
63+
64+
webChromeClient = WebChromeClient()
65+
66+
webViewClient = object : WebViewClient() {
67+
override fun onPageFinished(view: WebView?, url: String?) {
68+
super.onPageFinished(view, url)
69+
callback?.onHideProgress()
70+
callback?.onFinish()
71+
}
72+
73+
override fun onReceivedError(
74+
view: WebView?,
75+
request: WebResourceRequest?,
76+
error: WebResourceError?,
77+
) {
78+
super.onReceivedError(view, request, error)
79+
callback?.onHideProgress()
80+
callback?.onFailed()
81+
}
82+
}
83+
84+
}
85+
86+
if (url.contains("</html>") || url.contains("</div>") || url.contains("</body>")) {
87+
loadDataWithBaseURL(null, url, "text/html", "utf-8", null)
88+
} else {
89+
val validUrl = url.validateUrl()
90+
91+
if (!validUrl.isValidUrl()) {
92+
callback?.onHideProgress()
93+
callback?.onFailed()
94+
} else {
95+
auth?.let {
96+
loadUrl(validUrl, it)
97+
} ?: run {
98+
loadUrl(validUrl)
99+
}
100+
}
101+
}
102+
103+
}
104+
105+
}

app/src/main/java/com/frogobox/webview/common/ext/WebviewExt.kt

Lines changed: 0 additions & 163 deletions
This file was deleted.

app/src/main/java/com/frogobox/webview/ui/main/MainActivity.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.frogobox.sdk.ext.gone
77
import com.frogobox.sdk.ext.startActivityExtOpenApp
88
import com.frogobox.sdk.ext.visible
99
import com.frogobox.webview.ConfigApp
10-
import com.frogobox.webview.ConfigApp.URL_LINK_WEBSITE
10+
import com.frogobox.webview.ConfigApp.URL_WEB
1111
import com.frogobox.webview.common.callback.AdCallback
1212
import com.frogobox.webview.common.callback.WebViewCallback
1313
import com.frogobox.webview.common.core.BaseActivity
@@ -32,7 +32,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
3232
}
3333

3434
override fun doOnBackPressedExt() {
35-
showDialog()
35+
if (binding.mainWebview.canGoBack()) {
36+
binding.mainWebview.goBack()
37+
} else {
38+
showDialog()
39+
}
40+
3641
}
3742

3843
private fun setupFlagAd() {
@@ -67,7 +72,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
6772

6873
private fun setupLoadWeb() {
6974
binding.apply {
70-
mainWebview.loadUrlExt(URL_LINK_WEBSITE, object : WebViewCallback {
75+
mainWebview.loadUrlExt(url = URL_WEB, callback = object : WebViewCallback {
7176

7277
override fun onShowProgress() {
7378
containerProgressView.progressView.visible()

0 commit comments

Comments
 (0)