....
This commit is contained in:
parent
33d0a930fd
commit
ab2d0af594
@ -526,7 +526,7 @@ internal class LauncherHome : Fragment() {
|
|||||||
filter: Collection<RssDataType>? = arrayListOf(RssDataType.GURU, RssDataType.MOST,RssDataType.REDDIT_NSFW), noLimit: Boolean = false
|
filter: Collection<RssDataType>? = arrayListOf(RssDataType.GURU, RssDataType.MOST,RssDataType.REDDIT_NSFW), noLimit: Boolean = false
|
||||||
) {
|
) {
|
||||||
beforeQuery()
|
beforeQuery()
|
||||||
var rQ = WorkersDb.getRealm().query<RssData>().query("read < $0", nomoreShowCount)
|
var rQ = WorkersDb.getRealm().query<RssData>().query("read < $0", nomoreShowCount).distinct("originPage").distinct("title")
|
||||||
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
|
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
|
||||||
((filter?.size ?: 0) > 0).letTrue {filter!!.forEach {rQ = rQ.query("category != $0", it.name)}}
|
((filter?.size ?: 0) > 0).letTrue {filter!!.forEach {rQ = rQ.query("category != $0", it.name)}}
|
||||||
updateQuery(rQ)
|
updateQuery(rQ)
|
||||||
|
|||||||
@ -212,6 +212,7 @@ class RssData : RealmObject, RssDataInterface {
|
|||||||
|
|
||||||
@PrimaryKey
|
@PrimaryKey
|
||||||
var originPage : String? = null
|
var originPage : String? = null
|
||||||
|
|
||||||
var title : String? = null
|
var title : String? = null
|
||||||
var description : String? = null
|
var description : String? = null
|
||||||
var thumbnail : String? = null
|
var thumbnail : String? = null
|
||||||
|
|||||||
@ -195,7 +195,7 @@ object WorkersDb {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getVotedRss() = getRealm().query<RssData>().query("vote == $0", true)
|
fun getVotedRss() = getRealm().query<RssData>().query("vote == $0", true).distinct("originPage").distinct("title")
|
||||||
|
|
||||||
fun getRssQuery(keyword: String?,
|
fun getRssQuery(keyword: String?,
|
||||||
category: Collection<String>? = arrayListOf(),
|
category: Collection<String>? = arrayListOf(),
|
||||||
@ -230,7 +230,7 @@ object WorkersDb {
|
|||||||
if (keyword?.length ?: 0 == 0 && category?.size ?: 0 == 0) {
|
if (keyword?.length ?: 0 == 0 && category?.size ?: 0 == 0) {
|
||||||
rQ = rQ.query("read < $0", 3).query("vote != $0", true)
|
rQ = rQ.query("read < $0", 3).query("vote != $0", true)
|
||||||
}
|
}
|
||||||
return rQ
|
return rQ.distinct("originPage").distinct("title")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -132,7 +132,7 @@ class AwesomeWebView {
|
|||||||
var webViewLoadWithOverviewMode: Boolean? = null
|
var webViewLoadWithOverviewMode: Boolean? = null
|
||||||
var webViewSaveFormData: Boolean? = null
|
var webViewSaveFormData: Boolean? = null
|
||||||
var webViewTextZoom: Int? = null
|
var webViewTextZoom: Int? = null
|
||||||
var webViewUseWideViewPort: Boolean? = null
|
var webViewUseWideViewPort: Boolean = true
|
||||||
var webViewSupportMultipleWindows: Boolean? = null
|
var webViewSupportMultipleWindows: Boolean? = null
|
||||||
var webViewLayoutAlgorithm: LayoutAlgorithm? = null
|
var webViewLayoutAlgorithm: LayoutAlgorithm? = null
|
||||||
var webViewStandardFontFamily: String? = null
|
var webViewStandardFontFamily: String? = null
|
||||||
|
|||||||
@ -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,62 +1986,82 @@ 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 ")
|
||||||
return true
|
val alertDialog = AlertDialog.Builder(view.context).create()
|
||||||
}
|
alertDialog.setCancelable(false)
|
||||||
if (url.contains("coupang") == false && url.contains("aliex") == false) {
|
alertDialog.setTitle("링크 열거임?!")
|
||||||
if (url.endsWith(".mp4")) {
|
alertDialog.setMessage("$host 와 다른 사이트인데 브라우저로 열거임?")
|
||||||
val intent = Intent(Intent.ACTION_VIEW)
|
alertDialog.setButton(
|
||||||
intent.setDataAndType(Uri.parse(url), "video/*")
|
AlertDialog.BUTTON_NEUTRAL, "NO"
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
) { dialog, which ->
|
||||||
view.context.startActivity(intent)
|
Toast.makeText(applicationContext, "취소를 선택하심.", Toast.LENGTH_SHORT)
|
||||||
// If we return true, onPageStarted, onPageFinished won't be called.
|
.show()
|
||||||
return true
|
dialog.dismiss()
|
||||||
} else if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url
|
}
|
||||||
.startsWith("mms:") || url.startsWith("mmsto:")
|
alertDialog.setButton(
|
||||||
) {
|
AlertDialog.BUTTON_POSITIVE, "OK"
|
||||||
|
) { dialog, which ->
|
||||||
|
Toast.makeText(applicationContext, "오~ 브라우저로 열릴꺼임.", Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
|
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
view.context.startActivity(intent)
|
view.context.startActivity(intent)
|
||||||
return true // If we return true, onPageStarted, onPageFinished won't be called.
|
dialog.dismiss()
|
||||||
} else if (url.startsWith("mailto:")) {
|
}
|
||||||
val mt = MailTo.parse(url)
|
|
||||||
|
|
||||||
val emailIntent = Intent(Intent.ACTION_SEND)
|
alertDialog.show()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
|
||||||
emailIntent.setType("text/html")
|
val emailIntent = Intent(Intent.ACTION_SEND)
|
||||||
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)
|
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
|
return true
|
||||||
} else if (url.startsWith("http") || url.startsWith("https") || url.startsWith("ftp")) {
|
}
|
||||||
if (extraHeaders == null || extraHeadersMainPage!! && url != this@AwesomeWebViewActivity.url) {
|
} else {
|
||||||
return super.shouldOverrideUrlLoading(view, url)
|
if (webViewAppJumpEnabled!!) {
|
||||||
} else {
|
try {
|
||||||
view.loadUrl(url, extraHeaders!!)
|
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
|
return true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (webViewAppJumpEnabled!!) {
|
return super.shouldOverrideUrlLoading(view, url)
|
||||||
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) {
|
override fun onLoadResource(view: WebView, url: String) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user