Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,12 @@

## Version Release

$version_release = 1.0.0
$version_release = 2.0.1

What's New??

* Base WebView Project *
* New Libs to Latest Version *
* Can Back Inside Website *

## How To Use / Implement This Project

Expand Down
16 changes: 16 additions & 0 deletions app/src/main/java/com/frogobox/webview/ConfigApp.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.frogobox.webview

import com.frogobox.webview.ui.util.sampleHtmlText

/**
* Created by Faisal Amir on 24/10/22
* -----------------------------------------
Expand All @@ -13,8 +15,22 @@ package com.frogobox.webview

object ConfigApp {

/**
* Link for your Website
*/
const val URL_LINK_WEBSITE = "https://github.com/amirisback"

/**
* Inline your html text string
*/
const val URL_LINK_DATA = sampleHtmlText

/**
* Set Your Server Domain
*/
const val URL_WEB = URL_LINK_WEBSITE


object Flag {

/*
Expand Down
25 changes: 25 additions & 0 deletions app/src/main/java/com/frogobox/webview/common/ext/UrlExt.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.frogobox.webview.common.ext

import android.util.Patterns

/**
* Created by faisalamircs on 01/09/2025
* -----------------------------------------
* Name : Muhammad Faisal Amir
* E-mail : faisalamircs@gmail.com
* Github : github.com/amirisback
* -----------------------------------------
*/


fun String.validateUrl(): String {
return if (this.contains("http://") || this.contains("https://") || this.isValidUrl()) {
this
} else {
"https://$this"
}
}

fun String.isValidUrl(): Boolean {
return Patterns.WEB_URL.matcher(this).matches()
}
105 changes: 105 additions & 0 deletions app/src/main/java/com/frogobox/webview/common/ext/WebViewExt.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.frogobox.webview.common.ext

import android.annotation.SuppressLint
import android.view.View
import android.webkit.CookieManager
import android.webkit.WebChromeClient
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import com.frogobox.webview.common.callback.WebViewCallback

/**
* Created by Faisal Amir on 24/10/22
* -----------------------------------------
* E-mail : faisalamircs@gmail.com
* Github : github.com/amirisback
* -----------------------------------------
* Copyright (C) Frogobox ID / amirisback
* All rights reserved
*/


@SuppressLint("SetJavaScriptEnabled")
fun WebView.loadUrlExt(
url: String,
auth: HashMap<String, String>? = null,
callback: WebViewCallback? = null,
) {
callback?.onShowProgress()

if (url == "") {
callback?.onHideProgress()
callback?.onFailed()
} else {

CookieManager.getInstance().setAcceptCookie(true)
CookieManager.getInstance().setAcceptThirdPartyCookies(this, true)

apply {

settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL
settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW

settings.mediaPlaybackRequiresUserGesture = false
settings.loadsImagesAutomatically = true
settings.loadWithOverviewMode = true

settings.useWideViewPort = true
settings.allowFileAccess = true
settings.allowContentAccess = true

settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true
settings.domStorageEnabled = true

settings.setSupportZoom(true)
settings.builtInZoomControls = true
settings.displayZoomControls = false

scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY

webChromeClient = WebChromeClient()

webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
callback?.onHideProgress()
callback?.onFinish()
}

override fun onReceivedError(
view: WebView?,
request: WebResourceRequest?,
error: WebResourceError?,
) {
super.onReceivedError(view, request, error)
callback?.onHideProgress()
callback?.onFailed()
}
}

}

if (url.contains("</html>") || url.contains("</div>") || url.contains("</body>")) {
loadDataWithBaseURL(null, url, "text/html", "utf-8", null)
} else {
val validUrl = url.validateUrl()

if (!validUrl.isValidUrl()) {
callback?.onHideProgress()
callback?.onFailed()
} else {
auth?.let {
loadUrl(validUrl, it)
} ?: run {
loadUrl(validUrl)
}
}
}

}

}
163 changes: 0 additions & 163 deletions app/src/main/java/com/frogobox/webview/common/ext/WebviewExt.kt

This file was deleted.

11 changes: 8 additions & 3 deletions app/src/main/java/com/frogobox/webview/ui/main/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import com.frogobox.sdk.ext.gone
import com.frogobox.sdk.ext.startActivityExtOpenApp
import com.frogobox.sdk.ext.visible
import com.frogobox.webview.ConfigApp
import com.frogobox.webview.ConfigApp.URL_LINK_WEBSITE
import com.frogobox.webview.ConfigApp.URL_WEB
import com.frogobox.webview.common.callback.AdCallback
import com.frogobox.webview.common.callback.WebViewCallback
import com.frogobox.webview.common.core.BaseActivity
Expand All @@ -32,7 +32,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}

override fun doOnBackPressedExt() {
showDialog()
if (binding.mainWebview.canGoBack()) {
binding.mainWebview.goBack()
} else {
showDialog()
}

}

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

private fun setupLoadWeb() {
binding.apply {
mainWebview.loadUrlExt(URL_LINK_WEBSITE, object : WebViewCallback {
mainWebview.loadUrlExt(url = URL_WEB, callback = object : WebViewCallback {

override fun onShowProgress() {
containerProgressView.progressView.visible()
Expand Down
Loading