Fix data export/import on Android V

The mime type mapping for sqlite files was added in
https://r.android.com/2988915.
This commit is contained in:
FooIbar committed 2024-06-02 22:22:42 +08:00
1 parent be1eecf3b5
commit 26921c8ae1
2 files changed
+6 -2

No files matched your search

@@ -46,6 +46,7 @@ import com.hippo.ehviewer.util.Crash
import com.hippo.ehviewer.util.ReadableTime import com.hippo.ehviewer.util.ReadableTime
import com.hippo.ehviewer.util.getAppLanguage import com.hippo.ehviewer.util.getAppLanguage
import com.hippo.ehviewer.util.getLanguages import com.hippo.ehviewer.util.getLanguages
import com.hippo.ehviewer.util.isAtLeastV
import com.hippo.ehviewer.util.setAppLanguage import com.hippo.ehviewer.util.setAppLanguage
import com.hippo.unifile.asUniFile import com.hippo.unifile.asUniFile
import com.jamal.composeprefs3.ui.prefs.DropDownPref import com.jamal.composeprefs3.ui.prefs.DropDownPref
@@ -179,11 +180,12 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
} }
} }
val exportFailed = stringResource(id = R.string.settings_advanced_export_data_failed) val exportFailed = stringResource(id = R.string.settings_advanced_export_data_failed)
val now = ReadableTime.getFilenamableTime(System.currentTimeMillis())
LauncherPreference( LauncherPreference(
title = stringResource(id = R.string.settings_advanced_export_data), title = stringResource(id = R.string.settings_advanced_export_data),
summary = stringResource(id = R.string.settings_advanced_export_data_summary), summary = stringResource(id = R.string.settings_advanced_export_data_summary),
contract = ActivityResultContracts.CreateDocument("application/vnd.sqlite3"), contract = ActivityResultContracts.CreateDocument("application/vnd.sqlite3"),
key = ReadableTime.getFilenamableTime(System.currentTimeMillis()) + ".db", key = if (isAtLeastV) now else "$now.db",
) { uri -> ) { uri ->
uri?.let { uri?.let {
context.runCatching { context.runCatching {
@@ -202,7 +204,7 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
title = stringResource(id = R.string.settings_advanced_import_data), title = stringResource(id = R.string.settings_advanced_import_data),
summary = stringResource(id = R.string.settings_advanced_import_data_summary), summary = stringResource(id = R.string.settings_advanced_import_data_summary),
contract = ActivityResultContracts.GetContent(), contract = ActivityResultContracts.GetContent(),
key = "application/octet-stream", key = if (isAtLeastV) "application/vnd.sqlite3" else "application/octet-stream",
) { uri -> ) { uri ->
uri?.let { uri?.let {
context.runCatching { context.runCatching {
@@ -2,6 +2,7 @@ package com.hippo.ehviewer.util
import android.os.Build import android.os.Build
import android.os.ext.SdkExtensions import android.os.ext.SdkExtensions
import androidx.core.os.BuildCompat
val isAtLeastN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N val isAtLeastN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
val isAtLeastO = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O val isAtLeastO = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
@@ -12,4 +13,5 @@ val isAtLeastR = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
val isAtLeastS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S val isAtLeastS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
val isAtLeastT = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU val isAtLeastT = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
val isAtLeastU = Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE val isAtLeastU = Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
val isAtLeastV = BuildCompat.isAtLeastV()
val isAtLeastSExtension7 = isAtLeastR && SdkExtensions.getExtensionVersion(Build.VERSION_CODES.S) >= 7 val isAtLeastSExtension7 = isAtLeastR && SdkExtensions.getExtensionVersion(Build.VERSION_CODES.S) >= 7