diff --git a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt index 800b442..c382a51 100644 --- a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt +++ b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt @@ -11,6 +11,7 @@ import android.webkit.ConsoleMessage import android.webkit.WebView import androidx.core.content.withStyledAttributes import androidx.core.widget.TextViewCompat +import ru.touchin.extensions.openBrowser import ru.touchin.extensions.setOnRippleClickListener import ru.touchin.roboswag.views.widget.Switcher import ru.touchin.roboswag.webview.R @@ -42,6 +43,7 @@ open class BaseWebView @JvmOverloads constructor( } var isRedirectEnable = false + var onRedirectInsideWebView: ((String) -> Unit) = {context.openBrowser(it)} init { binding.pullToRefresh.isEnabled = isPullToRefreshEnable @@ -105,6 +107,10 @@ open class BaseWebView @JvmOverloads constructor( onCookieLoaded?.invoke(cookies) } + override fun onInsideWebViewRedirect(url: String?) { + onRedirectInsideWebView + } + fun setBaseWebViewClient(isSSlPinningEnable: Boolean = false) { binding.webView.webViewClient = BaseWebViewClient(this, isSSlPinningEnable) binding.webView.webChromeClient = BaseChromeWebViewClient(onJsConfirm, onJsAlert, onJsPrompt, onJsError) diff --git a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt index 06f79da..8bad382 100644 --- a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt +++ b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt @@ -1,6 +1,8 @@ package ru.touchin.roboswag.webview.web_view +import android.content.Intent import android.graphics.Bitmap +import android.net.Uri import android.net.http.SslError import android.os.Handler import android.os.Looper @@ -11,6 +13,7 @@ import android.webkit.WebResourceRequest import android.webkit.WebView import android.webkit.WebViewClient import androidx.core.os.postDelayed +import ru.touchin.extensions.openBrowser open class BaseWebViewClient(private val callback: WebViewCallback, private val isSslPinningEnable: Boolean) : WebViewClient() { @@ -55,6 +58,7 @@ open class BaseWebViewClient(private val callback: WebViewCallback, private val } override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean { + callback.onInsideWebViewRedirect(url) return !callback.onOverrideUrlLoading(url) && view.originalUrl != null } diff --git a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt index 299221d..68db81f 100644 --- a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt +++ b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt @@ -1,5 +1,7 @@ package ru.touchin.roboswag.webview.web_view +import androidx.annotation.StringRes + interface WebViewCallback { fun onStateChanged(newState: WebViewLoadingState) @@ -8,4 +10,6 @@ interface WebViewCallback { fun onPageCookiesLoaded(cookies: Map?) + fun onInsideWebViewRedirect(url:String?) + }