Tried to fix bug that due to scoped storage on Android 10 and above no files are displayed in AndroidFileChooserDialog at least on Android 10. Set target SDK version therefore to Android 10 (for details see https://developer.android.com/training/data-storage/use-cases#opt-out-scoped-storage). TODO: remove debug log output after fixing the bug completely

This commit is contained in:
dankito 2020-11-19 22:25:18 +01:00
parent 94e4c7b542
commit 103968710c
3 changed files with 23 additions and 3 deletions

View File

@ -43,13 +43,13 @@ ext {
/* Android */ /* Android */
androidCompileSdkVersion = 30 androidCompileSdkVersion = 29
androidBuildToolsVersion = "30.0.2" androidBuildToolsVersion = "29.0.2"
androidMinSdkVersion = 21 // TODO: fix SSLv3 / TLS and set back to 16 androidMinSdkVersion = 21 // TODO: fix SSLv3 / TLS and set back to 16
androidTargetSdkVersion = 30 androidTargetSdkVersion = 29
fileChooserDialogVersion = "1.3.0-androidx" fileChooserDialogVersion = "1.3.0-androidx"

View File

@ -10,6 +10,10 @@
<uses-permission android:name="android.permission.USE_FINGERPRINT" /> <uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" /> <uses-permission android:name="android.permission.USE_BIOMETRIC" />
<!-- FileChooserDialog for reading PDFs and exporting CSVs -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Both are required for ZXing --> <!-- Both are required for ZXing -->
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
@ -25,6 +29,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:requestLegacyExternalStorage="true"
> >
<activity <activity

View File

@ -2,6 +2,7 @@ package net.dankito.banking.ui.android.views
import android.Manifest import android.Manifest
import android.content.Context import android.content.Context
import android.os.Environment
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
@ -18,6 +19,7 @@ import net.dankito.filechooserdialog.FileChooserDialog
import net.dankito.filechooserdialog.model.FileChooserDialogConfig import net.dankito.filechooserdialog.model.FileChooserDialogConfig
import net.dankito.utils.android.extensions.asActivity import net.dankito.utils.android.extensions.asActivity
import net.dankito.utils.android.permissions.IPermissionsService import net.dankito.utils.android.permissions.IPermissionsService
import org.slf4j.LoggerFactory
import java.io.File import java.io.File
@ -27,6 +29,12 @@ open class MainActivityFloatingActionMenuButton(
protected val presenter: BankingPresenter protected val presenter: BankingPresenter
) : FloatingActionMenuButton(floatingActionMenu) { ) : FloatingActionMenuButton(floatingActionMenu) {
companion object {
// TODO: remove again as soon as bug that no files are displayed in FileChooserDialog (on Android 10 and higher?) is fixed
private val log = LoggerFactory.getLogger(MainActivityFloatingActionMenuButton::class.java)
}
protected lateinit var fabTransferMoney: FloatingActionButton protected lateinit var fabTransferMoney: FloatingActionButton
protected lateinit var fabMoneyTransferFromScanningQrCode: FloatingActionButton protected lateinit var fabMoneyTransferFromScanningQrCode: FloatingActionButton
@ -96,6 +104,13 @@ open class MainActivityFloatingActionMenuButton(
protected open fun showTransferMoneyDialogWithDataFromPdf() { protected open fun showTransferMoneyDialogWithDataFromPdf() {
(floatingActionMenu.context.asActivity() as? FragmentActivity)?.let { activity -> (floatingActionMenu.context.asActivity() as? FragmentActivity)?.let { activity ->
// TODO: remove again as soon as bug that no files are displayed in FileChooserDialog (on Android 10 and higher?) is fixed
log.info("config.initialDirectory = ${presenter.appSettings.lastSelectedOpenPdfFolder}, Environment.getExternalStorageDirectory() = ${Environment.getExternalStorageDirectory()}, " +
"Downloads dir = ${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)}")
log.info("External storage files: ${Environment.getExternalStorageDirectory()?.listFiles()?.map { it.name }}")
log.info("getExternalStorageState() = ${Environment.getExternalStorageState()}, isExternalStorageEmulated() = ${Environment.isExternalStorageEmulated()}, " +
"isExternalStorageRemovable() = ${Environment.isExternalStorageRemovable()}")
val config = FileChooserDialogConfig(listOf("*.pdf"), presenter.appSettings.lastSelectedOpenPdfFolder.toFile()) val config = FileChooserDialogConfig(listOf("*.pdf"), presenter.appSettings.lastSelectedOpenPdfFolder.toFile())
FileChooserDialog().showOpenSingleFileDialog(activity, permissionsService, config) { _, selectedFile -> FileChooserDialog().showOpenSingleFileDialog(activity, permissionsService, config) { _, selectedFile ->