This commit is contained in:
lunaticbum
2024-11-13 17:41:40 +09:00
parent 0a2cd56c93
commit d2dd6e8cd0
46 changed files with 573 additions and 3900 deletions
+3 -3
View File
@@ -5,12 +5,12 @@ plugins {
android {
namespace = "kr.lunaticbum.awesomewebview"
compileSdk = 34
compileSdk = 35
defaultConfig {
// applicationId = "kr.lunaticbum.awesomewebview"
minSdk = 26
targetSdk = 34
// targetSdk = 34
// versionCode = 1
// versionName = "0.0.1"
}
@@ -40,6 +40,6 @@ dependencies {
implementation ("androidx.appcompat:appcompat:1.7.0")
implementation ("com.google.android.material:material:1.12.0")
// implementation ("com.nineoldandroids:library:2.4.0")
implementation ("androidx.core:core-ktx:1.13.1")
implementation ("androidx.core:core-ktx:1.15.0")
implementation(project(":utils"))
}
@@ -92,6 +92,9 @@ class AwesomeWebView {
var menuTextPaddingLeft: Float? = null
var menuTextPaddingRight: Float? = null
var showMenuPdf: Boolean? = null
var stringResPdf: Int? = null
var showMenuRefresh: Boolean? = null
var stringResRefresh: Int? = null
var showMenuFind: Boolean? = null
@@ -16,6 +16,7 @@ import android.os.Bundle
import android.os.Environment
import android.os.Handler
import android.os.Message
import android.print.PDFPrint
import android.provider.MediaStore
import android.util.TypedValue
import android.view.Gravity
@@ -59,6 +60,7 @@ import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.core.net.toUri
import com.google.android.material.snackbar.Snackbar
import kr.lunaticbum.awesomewebview.databinding.AwesomeWebViewBinding
import kr.lunaticbum.awesomewebview.enums.Position
@@ -81,6 +83,7 @@ import kr.lunaticbum.utils.log.LogUtil
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.File
import java.io.IOException
import java.text.SimpleDateFormat
@@ -149,6 +152,8 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
protected var menuTextPaddingLeft: Float = 0f
protected var menuTextPaddingRight: Float = 0f
protected var showMenuPdf: Boolean = false
protected var stringResPdf: Int = 0
protected var showMenuRefresh: Boolean = false
protected var stringResRefresh: Int = 0
protected var showMenuFind: Boolean = false
@@ -416,6 +421,11 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
showMenuRefresh = if (builder?.showMenuRefresh != null) builder?.showMenuRefresh!! else true
stringResRefresh =
if (builder?.stringResRefresh != null) builder?.stringResRefresh!! else R.string.refresh
showMenuPdf = if (builder?.showMenuPdf != null) builder?.showMenuPdf!! else true
stringResPdf =
if (builder?.stringResPdf != null) builder?.stringResPdf!! else R.string.save_pdf
showMenuFind = if (builder?.showMenuFind != null) builder?.showMenuFind!! else false
stringResFind = if (builder?.stringResFind != null) builder?.stringResFind!! else R.string.find
showMenuShareVia = if (builder?.showMenuShareVia != null) builder?.showMenuShareVia!! else true
@@ -715,7 +725,8 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
binding.toolbarContent.close.visibility = if (showIconClose) View.VISIBLE else View.GONE
binding.toolbarContent.close.isEnabled = !disableIconClose
if (((showMenuRefresh
if (((showMenuPdf
||showMenuRefresh
|| showMenuFind
|| showMenuShareVia
|| showMenuCopyLink
@@ -1076,6 +1087,20 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
params.addRule(if (rtl) RelativeLayout.ALIGN_PARENT_LEFT else RelativeLayout.ALIGN_PARENT_RIGHT)
binding.menus.shadowLayout.layoutParams = params
binding.menus.menuPdf.visibility = if (showMenuPdf) View.VISIBLE else View.GONE
binding.menus.menuPdf.setBackgroundResource(menuSelector)
binding.menus.menuPdf.gravity = menuTextGravity
binding.menus.menuPdfTv.setText(stringResPdf)
binding.menus.menuPdfTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, menuTextSize)
binding.menus.menuPdfTv.setTypeface(TypefaceHelper.get(this, menuTextFont))
binding.menus.menuPdfTv.setTextColor(menuTextColor)
binding.menus.menuPdfTv.setPadding(
menuTextPaddingLeft.toInt(),
0,
menuTextPaddingRight.toInt(),
0
)
binding.menus.menuRefresh.visibility = if (showMenuRefresh) View.VISIBLE else View.GONE
binding.menus.menuRefresh.setBackgroundResource(menuSelector)
binding.menus.menuRefresh.gravity = menuTextGravity
@@ -1090,6 +1115,7 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
0
)
binding.menus.menuFind.visibility = if (showMenuFind) View.VISIBLE else View.GONE
binding.menus.menuFind.setBackgroundResource(menuSelector)
binding.menus.menuFind.gravity = menuTextGravity
@@ -1145,7 +1171,11 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
customMenuLayout.findViewById<TextView>(R.id.customMenu)
customMenuLayout.setBackgroundResource(menuSelector)
customMenuLayout.gravity = menuTextGravity
customMenuTv.setText(customMenu.titleRes)
if (customMenu.titleRes > -1) {
customMenuTv.setText(customMenu.titleRes)
} else {
customMenuTv.setText(customMenu.title)
}
customMenuTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, menuTextSize)
customMenuTv.setTypeface(TypefaceHelper.get(this, menuTextFont))
customMenuTv.setTextColor(menuTextColor)
@@ -1320,9 +1350,11 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
load()
}
@SuppressLint("MissingSuperCall")
override fun onBackPressed() {
override fun onBackPressed() {
LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibility}")
if (webChromeClient is MyWebChromeClient && (webChromeClient as MyWebChromeClient).onBackPressed()) {
return
}
@@ -1366,7 +1398,10 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
} else if (viewId == R.id.menuRefresh) {
webView!!.reload()
hideMenu()
} else if (viewId == R.id.menuFind) {
} else if (viewId == R.id.menuPdf) {
// PDFPrint
hideMenu()
} else if (viewId == R.id.menuFind) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) webView!!.showFindDialog(
"",
true
@@ -1764,19 +1799,27 @@ class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
}
inner class MyWebViewClient : WebViewClient() {
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun shouldInterceptRequest(
view: WebView,
request: WebResourceRequest
): WebResourceResponse? {
LogUtil.e("shouldInterceptRequest request >>> ${request.url.toString()}")
if (request.url.toString().contains("gif")) {
return WebResourceResponse(
"text/plain", "utf-8",
ByteArrayInputStream("".toByteArray())
)
}
return super.shouldInterceptRequest(view, request)
}
override fun shouldInterceptRequest(view: WebView, url: String): WebResourceResponse? {
LogUtil.e("shouldInterceptRequest String >>> $url")
return super.shouldInterceptRequest(view, url)
}
// override fun shouldInterceptRequest(view: WebView, url: String): WebResourceResponse? {
// LogUtil.e("shouldInterceptRequest String >>> $url")
// if (url.contains("gif")) {
// return null
// }
// return super.shouldInterceptRequest(view, url)
// }
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
BroadCastManager.onPageStarted(this@AwesomeWebViewActivity, key, url)
@@ -1,5 +1,6 @@
package kr.lunaticbum.awesomewebview.jsInterface;
import android.annotation.SuppressLint;
import android.text.TextUtils;
import android.util.Pair;
import android.webkit.WebView;
@@ -44,6 +45,7 @@ public class CommonJsHelper<T extends BaseJsInterface> {
* do not call, only for internal
* @param webView
*/
@SuppressLint("JavascriptInterface")
public void addJavascriptInterface(WebView webView) {
for (Pair<Class<T>, String> pair: interfacesInternal) {
if (pair == null || pair.first == null || TextUtils.isEmpty(pair.second)) {
@@ -5,18 +5,23 @@ import androidx.annotation.StringRes;
import java.io.Serializable;
public class CustomMenu implements Serializable {
private int titleRes;
private int titleRes = -1;
private String code;
private String titleString;
public CustomMenu(@StringRes int titleRes, String code) {
this.titleRes = titleRes;
this.code = code;
}
public CustomMenu( String titleString, String code) {
this.titleString = titleString;
this.code = code;
}
public int getTitleRes() {
return titleRes;
}
public String getTitle() {
return titleString;
}
public String getCode() {
return code;
}
+20
View File
@@ -144,7 +144,27 @@
android:textColor="@color/finestBlack"
android:textSize="@dimen/defaultMenuTextSize" />
</LinearLayout>
<LinearLayout
android:id="@+id/menuPdf"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/selector_light_theme"
android:gravity="center_vertical|left"
android:onClick="onClick">
<TextView
android:id="@+id/menuPdfTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:includeFontPadding="false"
android:paddingLeft="16dp"
android:paddingRight="32dp"
android:singleLine="true"
android:text="@string/save_pdf"
android:textColor="@color/finestBlack"
android:textSize="@dimen/defaultMenuTextSize" />
</LinearLayout>
</LinearLayout>
</kr.lunaticbum.awesomewebview.views.ShadowLayout>
</RelativeLayout>
@@ -6,4 +6,5 @@
<string name="copy_link">주소 복사하기</string>
<string name="open_with">다른 앱으로 열기</string>
<string name="copied_to_clipboard">주소가 복사 되었습니다</string>
<string name="save_pdf">Save Pdf</string>
</resources>
+1
View File
@@ -11,4 +11,5 @@
<string name="file_chooser">File Chooser</string>
<string name="copied_to_clipboard">Copied to clipboard</string>
<string name="loading_video">Loading video…</string>
<string name="save_pdf">Save Pdf</string>
</resources>