|
|
@@ -36,7 +36,6 @@ import android.webkit.CookieSyncManager
|
|
|
|
import android.webkit.DownloadListener
|
|
|
|
import android.webkit.DownloadListener
|
|
|
|
import android.webkit.GeolocationPermissions
|
|
|
|
import android.webkit.GeolocationPermissions
|
|
|
|
import android.webkit.PermissionRequest
|
|
|
|
import android.webkit.PermissionRequest
|
|
|
|
import android.webkit.URLUtil
|
|
|
|
|
|
|
|
import android.webkit.ValueCallback
|
|
|
|
import android.webkit.ValueCallback
|
|
|
|
import android.webkit.WebChromeClient
|
|
|
|
import android.webkit.WebChromeClient
|
|
|
|
import android.webkit.WebResourceRequest
|
|
|
|
import android.webkit.WebResourceRequest
|
|
|
@@ -46,10 +45,8 @@ import android.webkit.WebSettings.LayoutAlgorithm
|
|
|
|
import android.webkit.WebView
|
|
|
|
import android.webkit.WebView
|
|
|
|
import android.webkit.WebView.HitTestResult
|
|
|
|
import android.webkit.WebView.HitTestResult
|
|
|
|
import android.webkit.WebViewClient
|
|
|
|
import android.webkit.WebViewClient
|
|
|
|
import android.widget.FrameLayout
|
|
|
|
|
|
|
|
import android.widget.ImageButton
|
|
|
|
import android.widget.ImageButton
|
|
|
|
import android.widget.LinearLayout
|
|
|
|
import android.widget.LinearLayout
|
|
|
|
import android.widget.ProgressBar
|
|
|
|
|
|
|
|
import android.widget.RelativeLayout
|
|
|
|
import android.widget.RelativeLayout
|
|
|
|
import android.widget.TextView
|
|
|
|
import android.widget.TextView
|
|
|
|
import android.widget.Toast
|
|
|
|
import android.widget.Toast
|
|
|
@@ -57,8 +54,6 @@ import androidx.annotation.DrawableRes
|
|
|
|
import androidx.annotation.RequiresApi
|
|
|
|
import androidx.annotation.RequiresApi
|
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
import androidx.appcompat.widget.AppCompatImageButton
|
|
|
|
|
|
|
|
import androidx.appcompat.widget.Toolbar
|
|
|
|
|
|
|
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
|
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
import androidx.core.content.FileProvider
|
|
|
|
import androidx.core.content.FileProvider
|
|
|
@@ -92,7 +87,6 @@ import java.io.ByteArrayOutputStream
|
|
|
|
import java.io.File
|
|
|
|
import java.io.File
|
|
|
|
import java.io.IOException
|
|
|
|
import java.io.IOException
|
|
|
|
import java.io.InputStream
|
|
|
|
import java.io.InputStream
|
|
|
|
import java.net.URL
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat
|
|
|
|
import java.text.SimpleDateFormat
|
|
|
|
import java.util.Date
|
|
|
|
import java.util.Date
|
|
|
|
import java.util.Locale
|
|
|
|
import java.util.Locale
|
|
|
@@ -1443,7 +1437,22 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
|
|
|
webView!!.reload()
|
|
|
|
webView!!.reload()
|
|
|
|
hideMenu()
|
|
|
|
hideMenu()
|
|
|
|
} else if (viewId == R.id.menuPdf) {
|
|
|
|
} else if (viewId == R.id.menuPdf) {
|
|
|
|
// PDFPrint
|
|
|
|
LogUtil.e("onClick on menuPdf")
|
|
|
|
|
|
|
|
val fileName = host.plus(SimpleDateFormat("_yyyyMMddhhmmss").format(Date())).plus(".pdf")
|
|
|
|
|
|
|
|
val path = File(Environment.getExternalStorageDirectory(),"bums")
|
|
|
|
|
|
|
|
if (path.exists() == false) {
|
|
|
|
|
|
|
|
path.mkdirs()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
val file = File(path, fileName)
|
|
|
|
|
|
|
|
PDFPrint.generatePDFFromWebView(file,webView,object :PDFPrint.OnPDFPrintListener {
|
|
|
|
|
|
|
|
override fun onSuccess(file: File?) {
|
|
|
|
|
|
|
|
LogUtil.e("file.absolutePath >>> ${file?.absolutePath ?: "fail"}")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onError(exception: java.lang.Exception?) {
|
|
|
|
|
|
|
|
exception?.printStackTrace()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
hideMenu()
|
|
|
|
hideMenu()
|
|
|
|
} else if (viewId == R.id.menuFind) {
|
|
|
|
} else if (viewId == R.id.menuFind) {
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) webView!!.showFindDialog(
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) webView!!.showFindDialog(
|
|
|
@@ -1865,7 +1874,7 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
|
|
|
.contains("ads".toLowerCase(Locale.ROOT))) {
|
|
|
|
.contains("ads".toLowerCase(Locale.ROOT))) {
|
|
|
|
LogUtil.e("shouldInterceptRequest request url contains ads >>> ${request.url.toString()}")
|
|
|
|
LogUtil.e("shouldInterceptRequest request url contains ads >>> ${request.url.toString()}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var adblockKeyWords = arrayOf("adcr.naver.com","daumcdn.net/biz/ui/ad/adcm","imgad","ad.daum.net","cr.adsappier.com","ar-adview","adtrafficquality","criteo","adlib.nhnace.com","google.com/ads","googleads.","/pagead","/adpost/","ads/search")
|
|
|
|
var adblockKeyWords = arrayOf("adcr.naver.com","daumcdn.net/biz/ui/ad/adcm","imgad","ad.daum.net","cr.adsappier.com","ar-adview","adtrafficquality","criteo","adlib.nhnace.com","google.com/ads","googleads.","/pagead","/adpost/","ads/search","plugin.adplex")
|
|
|
|
val adblock = adblockKeyWords.filter { url.toLowerCase(Locale.ROOT).contains(it.toLowerCase(Locale.ROOT)) }.size > 0
|
|
|
|
val adblock = adblockKeyWords.filter { url.toLowerCase(Locale.ROOT).contains(it.toLowerCase(Locale.ROOT)) }.size > 0
|
|
|
|
return if(adblock) {
|
|
|
|
return if(adblock) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@@ -1877,14 +1886,18 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
|
|
|
}else if(url.toLowerCase(Locale.ROOT).contains(".jpg") || url.toLowerCase(Locale.ROOT).contains(".jpeg")){
|
|
|
|
}else if(url.toLowerCase(Locale.ROOT).contains(".jpg") || url.toLowerCase(Locale.ROOT).contains(".jpeg")){
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
|
|
|
|
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
|
|
|
|
WebResourceResponse("image/jpg", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.JPEG))
|
|
|
|
WebResourceResponse("image/jpg", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.JPEG)).apply {
|
|
|
|
|
|
|
|
LogUtil.e("shouldInterceptRequest request url down from Glide >>> ${request.url.toString()}")
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (e : Exception) {
|
|
|
|
} catch (e : Exception) {
|
|
|
|
super.shouldInterceptRequest(view, url)
|
|
|
|
super.shouldInterceptRequest(view, url)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else if(url.toLowerCase(Locale.ROOT).contains(".png")){
|
|
|
|
}else if(url.toLowerCase(Locale.ROOT).contains(".png")){
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
|
|
|
|
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
|
|
|
|
WebResourceResponse("image/png", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.PNG))
|
|
|
|
WebResourceResponse("image/png", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.PNG)).apply {
|
|
|
|
|
|
|
|
LogUtil.e("shouldInterceptRequest request url down from Glide >>> ${request.url.toString()}")
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (e : Exception) {
|
|
|
|
} catch (e : Exception) {
|
|
|
|
super.shouldInterceptRequest(view, url)
|
|
|
|
super.shouldInterceptRequest(view, url)
|
|
|
|
}
|
|
|
|
}
|
|
|
@@ -1892,7 +1905,9 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
|
|
|
}else if(url.toLowerCase(Locale.ROOT).contains(".webp")){
|
|
|
|
}else if(url.toLowerCase(Locale.ROOT).contains(".webp")){
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
|
|
|
|
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
|
|
|
|
WebResourceResponse("image/webp", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.WEBP))
|
|
|
|
WebResourceResponse("image/webp", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.WEBP)).apply {
|
|
|
|
|
|
|
|
LogUtil.e("shouldInterceptRequest request url down from Glide >>> ${request.url.toString()}")
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (e : Exception) {
|
|
|
|
} catch (e : Exception) {
|
|
|
|
super.shouldInterceptRequest(view, url)
|
|
|
|
super.shouldInterceptRequest(view, url)
|
|
|
|
}
|
|
|
|
}
|
|
|
@@ -1971,9 +1986,31 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
|
|
|
var skipResource = host!= null && ((url.contains(host!!) ?: true) == false) && (host!!.contains("google") == false)
|
|
|
|
var skipResource = host!= null && ((url.contains(host!!) ?: true) == false) && (host!!.contains("google") == false)
|
|
|
|
if (skipResource) {
|
|
|
|
if (skipResource) {
|
|
|
|
LogUtil.e("shouldOverrideUrlLoading block url $url , host >>>> $host ")
|
|
|
|
LogUtil.e("shouldOverrideUrlLoading block url $url , host >>>> $host ")
|
|
|
|
|
|
|
|
val alertDialog = AlertDialog.Builder(view.context).create()
|
|
|
|
|
|
|
|
alertDialog.setCancelable(false)
|
|
|
|
|
|
|
|
alertDialog.setTitle("링크 열거임?!")
|
|
|
|
|
|
|
|
alertDialog.setMessage("$host 와 다른 사이트인데 브라우저로 열거임?")
|
|
|
|
|
|
|
|
alertDialog.setButton(
|
|
|
|
|
|
|
|
AlertDialog.BUTTON_NEUTRAL, "NO"
|
|
|
|
|
|
|
|
) { dialog, which ->
|
|
|
|
|
|
|
|
Toast.makeText(applicationContext, "취소를 선택하심.", Toast.LENGTH_SHORT)
|
|
|
|
|
|
|
|
.show()
|
|
|
|
|
|
|
|
dialog.dismiss()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
alertDialog.setButton(
|
|
|
|
|
|
|
|
AlertDialog.BUTTON_POSITIVE, "OK"
|
|
|
|
|
|
|
|
) { dialog, which ->
|
|
|
|
|
|
|
|
Toast.makeText(applicationContext, "오~ 브라우저로 열릴꺼임.", Toast.LENGTH_SHORT)
|
|
|
|
|
|
|
|
.show()
|
|
|
|
|
|
|
|
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
|
|
|
|
|
|
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
|
|
|
|
|
|
|
view.context.startActivity(intent)
|
|
|
|
|
|
|
|
dialog.dismiss()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alertDialog.show()
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (url.contains("coupang") == false && url.contains("aliex") == false) {
|
|
|
|
|
|
|
|
if (url.endsWith(".mp4")) {
|
|
|
|
if (url.endsWith(".mp4")) {
|
|
|
|
val intent = Intent(Intent.ACTION_VIEW)
|
|
|
|
val intent = Intent(Intent.ACTION_VIEW)
|
|
|
|
intent.setDataAndType(Uri.parse(url), "video/*")
|
|
|
|
intent.setDataAndType(Uri.parse(url), "video/*")
|
|
|
@@ -2024,9 +2061,7 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
|
|
|
return super.shouldOverrideUrlLoading(view, url)
|
|
|
|
return super.shouldOverrideUrlLoading(view, url)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onLoadResource(view: WebView, url: String) {
|
|
|
|
override fun onLoadResource(view: WebView, url: String) {
|
|
|
|