From 5bd33845e1214a0be820ede6d5f092649fee2a61 Mon Sep 17 00:00:00 2001 From: ocean <503259349@qq.com> Date: Mon, 15 Dec 2025 10:11:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/proguard-rules.pro | 4 ++-- .../pdf/reader/ui/act/MergePdfActivity.kt | 2 ++ .../pdf/reader/ui/act/PdfPickerActivity.kt | 2 ++ .../pdf/reader/ui/act/PdfResultActivity.kt | 14 +++++++++----- .../pdfreader/pdf/reader/util/PDFSearchManager.kt | 5 +++-- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index d5a4fd6..ba09a0d 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -42,8 +42,8 @@ # 保留所有 Parcelable 类 -keep class * implements android.os.Parcelable { *; } - -# 保留所有 Parcelable 的 CREATOR 字段 +-keep @kotlinx.parcelize.Parcelize class * -keepclassmembers class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } + diff --git a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/MergePdfActivity.kt b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/MergePdfActivity.kt index 8fa3508..eb356e4 100644 --- a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/MergePdfActivity.kt +++ b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/MergePdfActivity.kt @@ -39,6 +39,7 @@ class MergePdfActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + intent.extras?.classLoader = PdfDocumentEntity::class.java.classLoader binding = ActivityPdfMergeBinding.inflate(layoutInflater) setContentView(binding.root) AnalyticsUtils.logEvent(AnalyticsUtils.Event.MERGE_SHOW) @@ -210,6 +211,7 @@ class MergePdfActivity : BaseActivity() { */ @Suppress("DEPRECATION") private inline fun requireParcelableArrayList(key: String): ArrayList { + intent.extras?.classLoader = T::class.java.classLoader val result: ArrayList? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { intent.getParcelableArrayListExtra(key, T::class.java) } else { diff --git a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfPickerActivity.kt b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfPickerActivity.kt index c5d91f3..d0e956c 100644 --- a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfPickerActivity.kt +++ b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfPickerActivity.kt @@ -42,6 +42,7 @@ class PdfPickerActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + intent.extras?.classLoader = PdfDocumentEntity::class.java.classLoader binding = ActivityPdfPickerBinding.inflate(layoutInflater) setContentView(binding.root) source = getSerializableOrDefault(EXTRA_SOURCE, PdfPickerSource.NONE) @@ -334,6 +335,7 @@ class PdfPickerActivity : BaseActivity() { @Suppress("DEPRECATION") private inline fun requireParcelableArrayList(key: String): ArrayList { + intent.extras?.classLoader = T::class.java.classLoader val result: ArrayList? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { intent.getParcelableArrayListExtra(key, T::class.java) } else { diff --git a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfResultActivity.kt b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfResultActivity.kt index 57629c4..8292d31 100644 --- a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfResultActivity.kt +++ b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfResultActivity.kt @@ -557,12 +557,16 @@ class PdfResultActivity : BaseActivity() { @Suppress("DEPRECATION") private inline fun requireParcelableArrayList(key: String): ArrayList { - val result: ArrayList? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - intent.getParcelableArrayListExtra(key, T::class.java) - } else { - intent.getParcelableArrayListExtra(key) + intent.extras?.classLoader = T::class.java.classLoader + return try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + intent.getParcelableArrayListExtra(key, T::class.java) + } else { + intent.getParcelableArrayListExtra(key) + } ?: arrayListOf() + } catch (e: Throwable) { + arrayListOf() } - return result ?: arrayListOf() } private fun requireStringArrayList(key: String): ArrayList { diff --git a/app/src/main/java/com/all/pdfreader/pdf/reader/util/PDFSearchManager.kt b/app/src/main/java/com/all/pdfreader/pdf/reader/util/PDFSearchManager.kt index 17d0502..bfcca60 100644 --- a/app/src/main/java/com/all/pdfreader/pdf/reader/util/PDFSearchManager.kt +++ b/app/src/main/java/com/all/pdfreader/pdf/reader/util/PDFSearchManager.kt @@ -2,6 +2,7 @@ package com.all.pdfreader.pdf.reader.util import android.util.Log import com.github.barteksc.pdfviewer.PDFView +import com.tom_roush.pdfbox.io.MemoryUsageSetting import com.tom_roush.pdfbox.pdmodel.PDDocument import com.tom_roush.pdfbox.pdmodel.PDPage import com.tom_roush.pdfbox.text.PDFTextStripper @@ -76,9 +77,9 @@ class PDFSearchManager(private val pdfView: PDFView) { // 如果是新的文件,则关闭旧文档 cachedDoc?.close() cachedDoc = if (!password.isNullOrEmpty()) { - PDDocument.load(file, password) + PDDocument.load(file, password, MemoryUsageSetting.setupTempFileOnly()) } else { - PDDocument.load(file) + PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly()) } cachedPath = file.absolutePath