diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 42cfaa3f..f74ec779 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -32,6 +32,10 @@ android {
buildConfigField("boolean", "EVENT_AND_CRASH_LOGGING_ENABLED", "false")
buildConfigField("String", "PSPDFKIT_KEY", "\"\"")
manifestPlaceholders["enableCrashReporting"] = false
+
+ ndk {
+ abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
+ }
}
signingConfigs {
create("release") {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 36541a7a..9fe18dc4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,9 +37,9 @@
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:requestLegacyExternalStorage"
tools:targetApi="n">
-
-
-
+
diff --git a/app/src/main/java/org/zotero/android/ZoteroApplication.kt b/app/src/main/java/org/zotero/android/ZoteroApplication.kt
index ff56cdf6..1c7ddd93 100644
--- a/app/src/main/java/org/zotero/android/ZoteroApplication.kt
+++ b/app/src/main/java/org/zotero/android/ZoteroApplication.kt
@@ -5,7 +5,6 @@ import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
import com.google.gson.Gson
-import com.pspdfkit.PSPDFKit
import dagger.hilt.android.HiltAndroidApp
import org.zotero.android.BuildConfig.EVENT_AND_CRASH_LOGGING_ENABLED
import org.zotero.android.api.ForGsonWithRoundedDecimals
@@ -56,13 +55,6 @@ open class ZoteroApplication: Application(), DefaultLifecycleObserver {
controllers.init()
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
- initializePspdfKit()
- }
-
- private fun initializePspdfKit() {
- if (BuildConfig.PSPDFKIT_KEY.isNotBlank()) {
- PSPDFKit.initialize(this, BuildConfig.PSPDFKIT_KEY)
- }
}
override fun onStart(owner: LifecycleOwner) {
diff --git a/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt b/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt
index 966a2f33..f9e3c728 100644
--- a/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt
+++ b/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt
@@ -11,6 +11,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavHostController
import com.google.accompanist.insets.navigationBarsPadding
import com.google.accompanist.navigation.animation.composable
@@ -71,6 +72,8 @@ internal fun DashboardRootPhoneNavigation(
val navigation = remember(navController) {
ZoteroNavigation(navController, dispatcher)
}
+ val context = LocalContext.current
+
Box{
Column(modifier = Modifier.background(color = CustomTheme.colors.surface)) {
ZoteroNavHost(
@@ -114,7 +117,7 @@ internal fun DashboardRootPhoneNavigation(
navigateToZoterWebViewScreen = navigation::toZoteroWebViewScreen,
navigateToTagFilter = navigation::toTagFilter,
navigateToCollectionPicker = navigation::toCollectionPicker,
- onShowPdf = navigation::toPdfScreen,
+ onShowPdf = { navigation.toPdfScreen(context) },
)
itemDetailsScreen(
navigateToCreatorEdit = navigation::toCreatorEdit,
@@ -128,7 +131,7 @@ internal fun DashboardRootPhoneNavigation(
onOpenFile = onOpenFile,
onOpenWebpage = onOpenWebpage,
onPickFile = { onPickFile(EventBusConstants.FileWasSelected.CallPoint.ItemDetails) },
- onShowPdf = navigation::toPdfScreen,
+ onShowPdf = { navigation.toPdfScreen(context) },
)
composable(
diff --git a/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt b/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt
index 1c1965bf..1e04051c 100644
--- a/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt
+++ b/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt
@@ -6,6 +6,7 @@ import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavGraphBuilder
import com.google.accompanist.insets.navigationBarsPadding
import com.google.accompanist.navigation.animation.composable
@@ -31,6 +32,7 @@ internal fun DashboardRootTopLevelTabletNavigation(
onOpenWebpage: (uri: Uri) -> Unit,
viewModel: DashboardViewModel,
) {
+ val context = LocalContext.current
val navController = rememberAnimatedNavController()
val dispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
val navigation = remember(navController) {
@@ -47,7 +49,7 @@ internal fun DashboardRootTopLevelTabletNavigation(
onOpenFile = onOpenFile,
onOpenWebpage = onOpenWebpage,
viewModel = viewModel,
- onShowPdf = navigation::toPdfScreen,
+ onShowPdf = { navigation.toPdfScreen(context) },
toAddOrEditNote = navigation::toAddOrEditNote,
toZoteroWebViewScreen = navigation::toZoteroWebViewScreen,
)
diff --git a/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt b/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt
index d148f1b9..2085607b 100644
--- a/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt
+++ b/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt
@@ -1,12 +1,16 @@
package org.zotero.android.pdf
+import android.content.Context
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.navigation.NavGraphBuilder
import com.google.accompanist.navigation.animation.composable
+import com.pspdfkit.PSPDFKit
+import org.zotero.android.BuildConfig
+import org.zotero.android.androidx.content.longToast
import org.zotero.android.architecture.navigation.ZoteroNavigation
import org.zotero.android.architecture.navigation.dialogFixedDimens
import org.zotero.android.pdf.annotation.PdfAnnotationNavigation
@@ -21,6 +25,7 @@ import org.zotero.android.pdf.settings.PdfSettingsScreen
import org.zotero.android.pdffilter.PdfFilterNavigation
import org.zotero.android.pdffilter.pdfFilterNavScreens
import org.zotero.android.pdffilter.toPdfFilterScreen
+import timber.log.Timber
internal fun NavGraphBuilder.pdfReaderScreenAndNavigationForTablet(
navigation: ZoteroNavigation,
@@ -150,8 +155,25 @@ private object PdfReaderDestinations {
const val PDF_ANNOTATION_MORE_NAVIGATION = "pdfAnnotationMoreNavigation"
}
-fun ZoteroNavigation.toPdfScreen() {
- navController.navigate(PdfReaderDestinations.PDF_SCREEN)
+fun ZoteroNavigation.toPdfScreen(context: Context) {
+ if (initializePspdfKit(context)) {
+ navController.navigate(PdfReaderDestinations.PDF_SCREEN)
+ }
+}
+
+private fun initializePspdfKit(context: Context): Boolean {
+ try {
+ if (BuildConfig.PSPDFKIT_KEY.isNotBlank()) {
+ PSPDFKit.initialize(context, BuildConfig.PSPDFKIT_KEY)
+ } else {
+ PSPDFKit.initialize(context, null)
+ }
+ } catch (e: Exception) {
+ Timber.e(e, "Unable to initialize PSPDFKIT")
+ context.longToast("Unable to initialize PSPDFKIT")
+ return false
+ }
+ return true
}
private fun ZoteroNavigation.toPdfFilterNavigation() {