This commit is contained in:
lunaticbum
2024-11-14 16:03:38 +09:00
parent d2dd6e8cd0
commit 8ba7005c53
10 changed files with 172 additions and 191 deletions
@@ -35,6 +35,7 @@ import android.webkit.CookieSyncManager
import android.webkit.DownloadListener
import android.webkit.GeolocationPermissions
import android.webkit.PermissionRequest
import android.webkit.URLUtil
import android.webkit.ValueCallback
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
@@ -86,6 +87,7 @@ import kr.lunaticbum.utils.ui.ViewUtil
import java.io.ByteArrayInputStream
import java.io.File
import java.io.IOException
import java.net.URL
import java.text.SimpleDateFormat
import java.util.Date
import kotlin.math.abs
@@ -1268,10 +1270,14 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
CommonJsHelper.getInstance().addJavascriptInterface(webView)
}
var host : String? = ""
protected fun load() {
if (data != null) {
webView!!.loadData(data!!, mimeType, encoding)
} else if (url != null) {
// host = url!!.toUri().host?.replace("www.","")?.replace("m.","")
LogUtil.e("url!!.toUri(). >> ${url!!.toUri().authority}")
LogUtil.e("url!!.toUri(). >> ${url!!.toUri().encodedFragment}")
if (extraHeaders == null) {
webView!!.loadUrl(url!!)
} else {
@@ -1861,57 +1867,61 @@ LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibi
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
handler.sendEmptyMessage(MSG_CLICK_ON_URL)
if (url.endsWith(".mp4")) {
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse(url), "video/*")
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
// If we return true, onPageStarted, onPageFinished won't be called.
return true
} else if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url
.startsWith("mms:") || url.startsWith("mmsto:")
) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
return true // If we return true, onPageStarted, onPageFinished won't be called.
} else if (url.startsWith("mailto:")) {
val mt = MailTo.parse(url)
val emailIntent = Intent(Intent.ACTION_SEND)
emailIntent.setType("text/html")
emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf(mt.to))
emailIntent.putExtra(Intent.EXTRA_SUBJECT, mt.subject)
emailIntent.putExtra(Intent.EXTRA_CC, mt.cc)
emailIntent.putExtra(Intent.EXTRA_TEXT, mt.body)
startActivity(emailIntent)
return true
} else if (url.startsWith("http") || url.startsWith("https") || url.startsWith("ftp")) {
if (extraHeaders == null || extraHeadersMainPage!! && url != this@AwesomeWebViewActivity.url) {
return super.shouldOverrideUrlLoading(view, url)
} else {
view.loadUrl(url, extraHeaders!!)
LogUtil.e("host >>> ${host} , url >>> ${url}")
// if (host?.length ?: 0 > 2 && url.contains(host!!)) {
if (url.endsWith(".mp4")) {
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse(url), "video/*")
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
// If we return true, onPageStarted, onPageFinished won't be called.
return true
}
} else {
if (webViewAppJumpEnabled!!) {
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
return true // If we return true, onPageStarted, onPageFinished won't be called.
} catch (exception: Exception) {
exception.printStackTrace()
} else if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url
.startsWith("mms:") || url.startsWith("mmsto:")
) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
return true // If we return true, onPageStarted, onPageFinished won't be called.
} else if (url.startsWith("mailto:")) {
val mt = MailTo.parse(url)
val emailIntent = Intent(Intent.ACTION_SEND)
emailIntent.setType("text/html")
emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf(mt.to))
emailIntent.putExtra(Intent.EXTRA_SUBJECT, mt.subject)
emailIntent.putExtra(Intent.EXTRA_CC, mt.cc)
emailIntent.putExtra(Intent.EXTRA_TEXT, mt.body)
startActivity(emailIntent)
return true
} else if (url.startsWith("http") || url.startsWith("https") || url.startsWith("ftp")) {
if (extraHeaders == null || extraHeadersMainPage!! && url != this@AwesomeWebViewActivity.url) {
return super.shouldOverrideUrlLoading(view, url)
} else {
view.loadUrl(url, extraHeaders!!)
return true
}
} else {
return super.shouldOverrideUrlLoading(view, url)
if (webViewAppJumpEnabled!!) {
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
return true // If we return true, onPageStarted, onPageFinished won't be called.
} catch (exception: Exception) {
exception.printStackTrace()
return true
}
} else {
return super.shouldOverrideUrlLoading(view, url)
}
}
}
// } else {
// return true
// }
}
override fun onLoadResource(view: WebView, url: String) {