...
This commit is contained in:
parent
897992f914
commit
33d0a930fd
@ -44,8 +44,11 @@ import android.support.v4.media.MediaBrowserCompat
|
||||
import android.telephony.TelephonyManager
|
||||
import android.view.KeyEvent
|
||||
import android.view.KeyEvent.ACTION_UP
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_A
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_SELECT
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_START
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_X
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_Y
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_DOWN
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_LEFT
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_RIGHT
|
||||
@ -87,8 +90,11 @@ import bums.lunatic.launcher.home.LauncherHome
|
||||
import bums.lunatic.launcher.home.RssViewBuilder
|
||||
import bums.lunatic.launcher.home.adapters.RssItemAdapter.Companion.rssList
|
||||
import bums.lunatic.launcher.model.RssData
|
||||
import bums.lunatic.launcher.model.RssDataType
|
||||
import bums.lunatic.launcher.receiver.NLService
|
||||
import bums.lunatic.launcher.utils.Blog
|
||||
import bums.lunatic.launcher.utils.FeedParseManager
|
||||
import bums.lunatic.launcher.utils.getJ
|
||||
import bums.lunatic.launcher.workers.AppInfoGetter
|
||||
import bums.lunatic.launcher.workers.ArcaGetter
|
||||
import bums.lunatic.launcher.workers.CalendarGetter
|
||||
@ -116,8 +122,12 @@ import bums.lunatic.launcher.workers.YoutubeGetter.Companion.YT_WORK_TAG
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import io.realm.kotlin.ext.query
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kr.lunaticbum.utils.ui.DisplayUtil
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Base64
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
@ -323,26 +333,26 @@ internal class LauncherActivity : CommonActivity() {
|
||||
override fun dispatchKeyEvent(ev: KeyEvent): Boolean {
|
||||
Blog.LOGE("dispatch ev?.device?.name >>> ${ev?.device?.name}")
|
||||
if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
|
||||
Blog.LOGE("dispatch dispatchKeyEvent>>> ${ev}")
|
||||
|
||||
when(ev.action) {
|
||||
ACTION_UP -> {
|
||||
Blog.LOGE("dispatch dispatchKeyEvent>>> ${ev}")
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_DPAD_LEFT->{
|
||||
|
||||
KEYCODE_BUTTON_Y->{
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
String(Base64.getMimeDecoder().decode("aHR0cHM6Ly9qYXZtb3N0LnRvL2xhdGVzdC11cGRhdGVzCg==".toByteArray())).getJ().let { doc -> FeedParseManager.parse(doc){Blog.LOGE(it)} }
|
||||
}
|
||||
KEYCODE_DPAD_RIGHT->{
|
||||
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
String.format(String(Base64.getMimeDecoder().decode("aHR0cHM6Ly9qYXZtb3N0LnRvL3NlYXJjaC9tb3ZpZS8lcw==".toByteArray())),"").getJ().let { doc -> FeedParseManager.parse(doc){Blog.LOGE(it)} }
|
||||
}
|
||||
KEYCODE_DPAD_DOWN->{
|
||||
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
String.format(String(Base64.getMimeDecoder().decode("aHR0cHM6Ly9rcjcxLnNvZ2lybC5zby8/cz0lcw==".toByteArray())),"").getJ().let { doc -> FeedParseManager.parse(doc){Blog.LOGE(it)} }
|
||||
}
|
||||
KEYCODE_DPAD_UP->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_START->{
|
||||
KEYCODE_BUTTON_X->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery(null, null,false).limit(100).find()).map { it.originPage() }
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", RssDataType.getAdts(),false).limit(100).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
@ -352,13 +362,39 @@ internal class LauncherActivity : CommonActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
KEYCODE_BUTTON_A->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", arrayListOf(),false).limit(100).query("read == $0", 0).query("vote != $0", true).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
}
|
||||
}
|
||||
}
|
||||
KEYCODE_DPAD_DOWN->{
|
||||
|
||||
}
|
||||
KEYCODE_DPAD_UP->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_START->{
|
||||
onClickCenterButton()
|
||||
}
|
||||
KEYCODE_BUTTON_SELECT->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getVotedRss().limit(100).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(ddd)
|
||||
this.addAll(jjjj)}
|
||||
)
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
@ -374,6 +410,24 @@ internal class LauncherActivity : CommonActivity() {
|
||||
}
|
||||
return super.dispatchKeyEvent(ev)
|
||||
}
|
||||
|
||||
|
||||
fun onClickCenterButton() {
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", RssDataType.getExcAdt(),false).limit(100).query("read == $0", 0).query("vote != $0", true).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(ddd)
|
||||
this.addAll(jjjj) })
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
}
|
||||
}
|
||||
}
|
||||
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
|
||||
// Blog.LOGE("dispatchKeyEvent ev?.device?.name >>> ${ev?.device?.name}")
|
||||
/// || ev?.device?.name?.contains("SM-031N Mouse") == true
|
||||
@ -409,17 +463,7 @@ internal class LauncherActivity : CommonActivity() {
|
||||
Blog.LOGE("DisplayUtil.width >>> ${DisplayUtil.height} ${actionButtonPressY}")
|
||||
if(actionButtonPressX.toInt() == 480 && actionButtonPressY < 2000) {
|
||||
Blog.LOGE("Arrow Center Click")
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", arrayListOf(),false).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
}
|
||||
}
|
||||
onClickCenterButton()
|
||||
} else if(ev.y > 2000) {
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package bums.lunatic.launcher.common
|
||||
import android.content.Intent
|
||||
import android.os.Environment
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.app.ComponentActivity
|
||||
import bums.lunatic.launcher.R
|
||||
import bums.lunatic.launcher.apps.SearchMenu
|
||||
import bums.lunatic.launcher.helpers.PrefBoolean
|
||||
|
||||
@ -391,6 +391,18 @@ internal class LauncherHome : Fragment() {
|
||||
it.notifyDataSetChanged()
|
||||
}
|
||||
mWeatherAdapter?.let {
|
||||
fun onclick() {
|
||||
requireContext().startActivity(Intent().apply {
|
||||
action = Intent.ACTION_VIEW
|
||||
setData(Uri.parse("https://www.accuweather.com/ko/search-locations?query=${LocationGetter.latitude},${LocationGetter.longitude}"))
|
||||
})
|
||||
}
|
||||
binding.weathers.weatherViewPager.setOnTouchListener { v, event ->
|
||||
onclick()
|
||||
true
|
||||
}
|
||||
binding.weathers.weatherViewPager.setOnClickListener { onclick() }
|
||||
binding.weathers.root.setOnClickListener { onclick() }
|
||||
binding.weathers.textLocation =
|
||||
if (hours.isNotEmpty()) WeatherInfoManager.getShowingInfo(hours.first()).textLocation else "도시 / 나라"
|
||||
it.notifyDataSetChanged()
|
||||
|
||||
@ -211,7 +211,7 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
fun rightClick() {
|
||||
if (currentIdx < rssList.size - 1) {
|
||||
currentIdx += 1
|
||||
rssId = rssList.get(currentIdx)
|
||||
rssId = rssList.removeAt(currentIdx)
|
||||
Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
|
||||
load(rssId)
|
||||
registCancelSearch()
|
||||
@ -224,7 +224,7 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
fun leftClick() {
|
||||
if (currentIdx > 0) {
|
||||
currentIdx -= 1
|
||||
rssId = rssList.get(currentIdx)
|
||||
rssId = rssList.removeAt(currentIdx)
|
||||
Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
|
||||
load(rssId)
|
||||
registCancelSearch()
|
||||
@ -315,6 +315,18 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
registCancelSearch()
|
||||
}
|
||||
protected fun load(newUrl: String) {
|
||||
newUrl.toUri().host?.let {
|
||||
val splits = it.replace("http://","").replace("https://","").split(".")
|
||||
when(splits.size) {
|
||||
1-> host = splits[0]
|
||||
2-> host = splits[0]
|
||||
3-> host = splits[1]
|
||||
4-> host = splits[2]
|
||||
else -> {
|
||||
host = null
|
||||
}
|
||||
}
|
||||
}
|
||||
if (extraHeaders == null) {
|
||||
webView!!.loadUrl(newUrl!!)
|
||||
} else {
|
||||
@ -340,6 +352,9 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
}
|
||||
override fun webviewOnPageFinished() {
|
||||
double = false
|
||||
if(hasYoutubePlayer) {
|
||||
LogUtil.e("hasYoutubePlayer >>> ${hasYoutubePlayer}")
|
||||
}
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
val result =
|
||||
@ -347,6 +362,8 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
.find()
|
||||
if (result.size == 1) {
|
||||
result.first().read += 1
|
||||
} else {
|
||||
result.forEach { it.read += 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ object RssFeedsParser {
|
||||
|
||||
|
||||
if (date > limitDateTime && title != null && link != null) {
|
||||
Blog.LOGE("date ${date} title ${title} link ${link}")
|
||||
// Blog.LOGE("date ${date} title ${title} link ${link}")
|
||||
val item = NewsData(title, link)
|
||||
item.pubDate = date
|
||||
item.source = source
|
||||
|
||||
@ -94,7 +94,11 @@ internal class RssItemAdapter (
|
||||
openReddit(rss.originPage())
|
||||
} else {
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(rssList)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(rssList)
|
||||
this.addAll(jjjj)
|
||||
})
|
||||
.setRssId(rss.originPage())
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(rss.originPage!!)
|
||||
@ -107,7 +111,11 @@ internal class RssItemAdapter (
|
||||
}
|
||||
RssDataType.DOTAX -> {
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(rssList)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(rssList)
|
||||
this.addAll(jjjj)
|
||||
})
|
||||
.setRssId(rss.originPage())
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).webViewMixedContentMode(0)
|
||||
.show(rss.originPage!!)
|
||||
@ -119,7 +127,11 @@ internal class RssItemAdapter (
|
||||
}
|
||||
else -> {
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(rssList)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(rssList)
|
||||
this.addAll(jjjj)
|
||||
})
|
||||
.setRssId(rss.originPage())
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).webViewMixedContentMode(0)
|
||||
.show(rss.originPage!!)
|
||||
|
||||
@ -40,6 +40,7 @@ class NewsData : RssDataInterface {
|
||||
return RssDataType.NEWSFEED
|
||||
}
|
||||
override fun getCho(): String? {
|
||||
return JamoUtils.split(title()).joinToString("")
|
||||
var cho = JamoUtils.split(title()).joinToString("")
|
||||
return if(cho.length > 0 ) cho else title()
|
||||
}
|
||||
}
|
||||
@ -50,6 +50,10 @@ enum class RssDataType {
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getExcAdt() = arrayListOf(NEWSFEED, REDDIT, DOTAX, FMKORAE, DCINSIDE, RULIWEB, CLIEN, THEQOO, ARCA).map { it.name }
|
||||
fun getAdts() = arrayListOf( REDDIT_NSFW, MOST,GURU).map { it.name }
|
||||
}
|
||||
}
|
||||
|
||||
interface RssDataInterface {
|
||||
|
||||
@ -198,7 +198,7 @@ object WorkersDb {
|
||||
fun getVotedRss() = getRealm().query<RssData>().query("vote == $0", true)
|
||||
|
||||
fun getRssQuery(keyword: String?,
|
||||
category: ArrayList<String>? = arrayListOf(),
|
||||
category: Collection<String>? = arrayListOf(),
|
||||
noLimit: Boolean = false) : RealmQuery<RssData>{
|
||||
var rQ = getRealm().query<RssData>()
|
||||
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
|
||||
|
||||
@ -59,6 +59,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/textDress"
|
||||
android:maxLines="2"
|
||||
style="@style/small"
|
||||
android:text="@{info.textCondition}"
|
||||
android:gravity="center"
|
||||
|
||||
@ -58,6 +58,7 @@
|
||||
android:includeFontPadding="false"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxWidth="80dp"
|
||||
android:id="@+id/textDress"
|
||||
style="@style/small"
|
||||
android:text="@{info.textCondition}"
|
||||
|
||||
@ -35,6 +35,8 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation( "com.github.bumptech.glide:glide:4.11.0")
|
||||
annotationProcessor ("com.github.bumptech.glide:compiler:4.11.0")
|
||||
// implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation ("androidx.annotation:annotation:1.9.1")
|
||||
implementation ("androidx.appcompat:appcompat:1.7.0")
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<application>
|
||||
<application
|
||||
android:usesCleartextTraffic="true">
|
||||
<provider
|
||||
android:name="kr.lunaticbum.awesomewebview.helpers.FileProvider4WebView"
|
||||
android:authorities="${applicationId}.awesome_web_view.file_provider"
|
||||
|
||||
@ -63,6 +63,8 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.net.toUri
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kr.lunaticbum.awesomewebview.databinding.AwesomeWebViewBinding
|
||||
import kr.lunaticbum.awesomewebview.enums.Position
|
||||
@ -86,11 +88,14 @@ import kr.lunaticbum.utils.service.ClipboardManagerUtil
|
||||
import kr.lunaticbum.utils.ui.DisplayUtil
|
||||
import kr.lunaticbum.utils.ui.ViewUtil
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.net.URL
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import kotlin.math.abs
|
||||
|
||||
|
||||
@ -564,7 +569,11 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
||||
val chechHandler = Handler(Looper.getMainLooper())
|
||||
|
||||
val cancelSearch = Runnable {
|
||||
if(!hasYoutubePlayer) {
|
||||
finish()
|
||||
} else {
|
||||
registCancelSearch()
|
||||
}
|
||||
}
|
||||
|
||||
fun fast() {
|
||||
@ -1305,9 +1314,6 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
|
||||
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 {
|
||||
@ -1390,6 +1396,7 @@ LogUtil.e("url!!.toUri(). >> ${url!!.toUri().authority}")
|
||||
|
||||
|
||||
|
||||
@SuppressLint("MissingSuperCall")
|
||||
override fun onBackPressed() {
|
||||
LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibility}")
|
||||
if (webChromeClient is MyWebChromeClient && (webChromeClient as MyWebChromeClient).onBackPressed()) {
|
||||
@ -1833,27 +1840,75 @@ LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibi
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
return File.createTempFile(new_name, if (isVideo) ".mp4" else ".jpg", sd_directory)
|
||||
}
|
||||
var hasYoutubePlayer = false
|
||||
open fun webviewOnPageFinished(){}
|
||||
inner class MyWebViewClient : WebViewClient() {
|
||||
override fun shouldInterceptRequest(
|
||||
view: WebView,
|
||||
request: WebResourceRequest
|
||||
): WebResourceResponse? {
|
||||
// LogUtil.e("shouldInterceptRequest request >>> ${request.url.toString()}")
|
||||
if (request.url.toString().contains("gif") && request.url.toString().contains("sogirl")) {
|
||||
var skipResource =
|
||||
(host != null) && ((request.url?.host?.contains(host!!) ?: true) == false)
|
||||
if (skipResource && request.url.toString().contains("gif")) {
|
||||
LogUtil.e("shouldInterceptRequest request block gif resource >>> ${request.url.toString()}")
|
||||
return WebResourceResponse(
|
||||
"text/plain", "utf-8",
|
||||
ByteArrayInputStream("".toByteArray())
|
||||
)
|
||||
}
|
||||
return super.shouldInterceptRequest(view, request)
|
||||
val url = request.url.toString()
|
||||
if(!hasYoutubePlayer) {
|
||||
hasYoutubePlayer = url.toLowerCase(Locale.ROOT)
|
||||
.contains("https://www.youtube.com/s/player".toLowerCase(Locale.ROOT))
|
||||
}
|
||||
if (url.toLowerCase(Locale.ROOT)
|
||||
.contains("ads".toLowerCase(Locale.ROOT))) {
|
||||
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")
|
||||
val adblock = adblockKeyWords.filter { url.toLowerCase(Locale.ROOT).contains(it.toLowerCase(Locale.ROOT)) }.size > 0
|
||||
return if(adblock) {
|
||||
try {
|
||||
LogUtil.e("shouldInterceptRequest request block adblockKeyWords resource >>> ${request.url.toString()}")
|
||||
WebResourceResponse("text/plain", "utf-8", ByteArrayInputStream("".toByteArray()))
|
||||
} catch (e : Exception) {
|
||||
super.shouldInterceptRequest(view, url)
|
||||
}
|
||||
}else if(url.toLowerCase(Locale.ROOT).contains(".jpg") || url.toLowerCase(Locale.ROOT).contains(".jpeg")){
|
||||
try {
|
||||
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))
|
||||
} catch (e : Exception) {
|
||||
super.shouldInterceptRequest(view, url)
|
||||
}
|
||||
}else if(url.toLowerCase(Locale.ROOT).contains(".png")){
|
||||
try {
|
||||
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))
|
||||
} catch (e : Exception) {
|
||||
super.shouldInterceptRequest(view, url)
|
||||
}
|
||||
|
||||
}else if(url.toLowerCase(Locale.ROOT).contains(".webp")){
|
||||
try {
|
||||
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))
|
||||
} catch (e : Exception) {
|
||||
super.shouldInterceptRequest(view, url)
|
||||
}
|
||||
}else{
|
||||
super.shouldInterceptRequest(view, url)
|
||||
}
|
||||
|
||||
}
|
||||
private fun getBitmapInputStream(bitmap: Bitmap, compressFormat: Bitmap.CompressFormat): InputStream {
|
||||
val byteArrayOutputStream = ByteArrayOutputStream()
|
||||
bitmap.compress(compressFormat, 80, byteArrayOutputStream)
|
||||
val bitmapData: ByteArray = byteArrayOutputStream.toByteArray()
|
||||
return ByteArrayInputStream(bitmapData)
|
||||
}
|
||||
|
||||
// override fun shouldInterceptRequest(view: WebView, url: String): WebResourceResponse? {
|
||||
// LogUtil.e("shouldInterceptRequest String >>> $url")
|
||||
// if (url.contains("gif")) {
|
||||
// return null
|
||||
// }
|
||||
// return super.shouldInterceptRequest(view, url)
|
||||
// }
|
||||
|
||||
@ -1862,6 +1917,19 @@ LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibi
|
||||
if (!url.contains("docs.google.com") && url.endsWith(".pdf")) {
|
||||
webView!!.loadUrl("http://docs.google.com/gview?embedded=true&url=$url")
|
||||
}
|
||||
url.toUri().host?.let {
|
||||
val splits = it.replace("http://","").replace("https://","").split(".")
|
||||
when(splits.size) {
|
||||
1-> host = splits[0]
|
||||
2-> host = splits[0]
|
||||
3-> host = splits[1]
|
||||
4-> host = splits[2]
|
||||
else -> {
|
||||
host = null
|
||||
}
|
||||
}
|
||||
}
|
||||
hasYoutubePlayer = false
|
||||
}
|
||||
|
||||
override fun onPageFinished(view: WebView, url: String) {
|
||||
@ -1899,7 +1967,12 @@ LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibi
|
||||
|
||||
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
|
||||
handler.sendEmptyMessage(MSG_CLICK_ON_URL)
|
||||
// LogUtil.e("host >>> ${host} , url >>> ${url}")
|
||||
|
||||
var skipResource = host!= null && ((url.contains(host!!) ?: true) == false) && (host!!.contains("google") == false)
|
||||
if (skipResource) {
|
||||
LogUtil.e("shouldOverrideUrlLoading block url $url , host >>>> $host ")
|
||||
return true
|
||||
}
|
||||
if (url.contains("coupang") == false && url.contains("aliex") == false) {
|
||||
if (url.endsWith(".mp4")) {
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
|
||||
@ -10,7 +10,10 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/finestWhite">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dummy"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<FrameLayout
|
||||
android:id="@+id/webLayout"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user