...
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user