Open dermitza opened 3 hours ago
Thanks for the detailed report and glad you like the app!
(Issue) App crashes when enabling require authentication
Hmm, I wasn't aware of this. It looks like both BIOMETRIC_STRONG
or DEVICE_CREDENTIAL
are only supported since API 30. I'll have to check to see if this functionality can be supported in API 28. I don't have an Android 9 device for testing--do you know if other third party apps support biometric auth?
(Issue) App cannot open any file on filesystem, other than files it has created
What were the exact filenames of the files that could and could not be selected for importing? I think this might be caused by the file extension. There's a chance it might only be allowing you to select files where the extension is unrecognized by Android. This should be an easy fix once I know what's going on.
(Minor issue) App window overextends under bottom navigation bar
It is expected for the list to extend into the navigation bar, but there is supposed to be extra padding after scrolling to the very bottom. This one might be a bug in Android's compatibility libraries. "edge to edge" mode is now mandatory in Android 15, but the Google's compatibility layer is meant to make it work properly in previous versions of Android too. I'll see if I can find a workaround for this.
(Feature request) Selectable theme
The app should already follow the system dark/light theme mode. (Or are you asking for a new option to force it to be always light or always dark?)
Thanks a lot for the (very!) prompt reply.
Thanks for the detailed report and glad you like the app!
(Issue) App crashes when enabling require authentication
Hmm, I wasn't aware of this. It looks like both
BIOMETRIC_STRONG
orDEVICE_CREDENTIAL
are only supported since API 30. I'll have to check to see if this functionality can be supported in API 28. I don't have an Android 9 device for testing--do you know if other third party apps support biometric auth?
I quickly checked functionality with KeePassDX, it has seperated biometrics and device credentials (two seperate toggle bars), biometric enabling worked fine (did not test further with a fingerprint), device credential as well, prompting me to enter device pin/password/gesture (worked fine, showing pin/password/gesture menu).
The fix might be as easy as replacing (line 220 in PreferenceBaseActivity.kt)
val promptInfo = BiometricPrompt.PromptInfo.Builder() .setAllowedAuthenticators(Authenticators.BIOMETRIC_STRONG or Authenticators.DEVICE_CREDENTIAL) .setTitle(getString(R.string.biometric_title)) .build()
with
val promptInfo = createPromptInfo() if (BiometricManager.from(context) .canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) { biometricPrompt.authenticate(promptInfo, cryptoObject) } else { // unsupported prompt perhaps }
as detailed here and here. It seems as though the above call is API agnostic (everything done under the hood) for down to API 23 (?). For instantiating a crypto object (maybe i missed it), possibly relevant post for that here.
(Issue) App cannot open any file on filesystem, other than files it has created
What were the exact filenames of the files that could and could not be selected for importing? I think this might be caused by the file extension. There's a chance it might only be allowing you to select files where the extension is unrecognized by Android. This should be an easy fix once I know what's going on.
Im not sure if it is file extension dependent. The pre-existing selectable files i saw had .zdjBDp and .ini extensions.
Duplicating (in total commander) any file created by the app is also openable, irrespective of extension (tried multiple extensions). Copying a .conf file into android (from a PC) is not openable. No discernible differences between files created by RSAF or externally according to total commander (both show uid 0, gid 9997, -rw-rw----).
(Minor issue) App window overextends under bottom navigation bar
It is expected for the list to extend into the navigation bar, but there is supposed to be extra padding after scrolling to the very bottom. This one might be a bug in Android's compatibility libraries. "edge to edge" mode is now mandatory in Android 15, but the Google's compatibility layer is meant to make it work properly in previous versions of Android too. I'll see if I can find a workaround for this.
No worries about this one, minor enough i think.
The app should already follow the system dark/light theme mode. (Or are you asking for a new option to force it to be always light or always dark?)
Yep, but as I mentioned, not really critical, thanks a lot again.
Thanks for the hint about KeePassDX. I'll check that out and see how they handle device credential auth. If it's too painful to implement, I'll just stick with biometric auth only for older Android versions.
Im not sure if it is file extension dependent. The pre-existing selectable files i saw had .zdjBDp and .ini extensions.
Duplicating (in total commander) any file created by the app is also openable, irrespective of extension (tried multiple extensions). Copying a .conf file into android (from a PC) is not openable. No discernible differences between files created by RSAF or externally according to total commander (both show uid 0, gid 9997, -rw-rw----).
Interesting. The way it's set up right now is that RSAF asks Android to allow picking any file with the text/plain
or application/octet-stream
MIME types. On later Android versions, this is based entirely on the file extension (txt/text/pot/brf/srt
for text/plain and bin/deploy/msu/msp
+ all unrecognized extensions for application/octet-stream).
I think it probably makes the most sense to just remove the filter. It doesn't seem all that useful anyway.
Oh, one quick question about the file selection: when you selected the files, was it from the hamburger menu -> "Downloads" section of the file picker or from hamburger menu -> (Phone name) -> Downloads folder?
(The reason I ask is because they are not the same and the files go through two completely different components in Android that may not treat file types the same way.)
Oh, one quick question about the file selection: when you selected the files, was it from the hamburger menu -> "Downloads" section of the file picker or from hamburger menu -> (Phone name) -> Downloads folder?
(The reason I ask is because they are not the same and the files go through two completely different components in Android that may not treat file types the same way.)
Both choices exhibit the same behaviour it seems.
I wonder if that behavior is Sony-specific. I can't reproduce it with a Samsung Galaxy Note 9 running Android 9. Anyway, I'll just remove the filter.
I was able to get biometric + device credential auth working on Android 9 (#94). It was a lot easier than I initially thought.
I can test run a test apk if you'd like (i'd compile the test branch and do it myself but the android dev environment i have around atm is quite outdated - was trying to resolve dependencies for the past half hour lol)
I wonder if that behavior is Sony-specific. I can't reproduce it with a Samsung Galaxy Note 9 running Android 9. Anyway, I'll just remove the filter.
is there a possibilty of a conflict with different content providers? But im not seeing anything in logcat tbh. Would there be a way to debug this further?
Hello,
thanks a lot for your efforts, its a quite nice app after a first look. Below are three issues (one important possibly) and a feature request.
Device: G8441, Android version 9, API 28
(Issue) App crashes when enabling require authentication
After enabling "require authentication", app crashes on open, clearing data is necessary (to clear the condition) in order to restore app to functional. ADB/logcat shows the following:
As i understand it is just an unsupported API call for this Android version, maybe a catch around the exception would mitigate this. Further, as I am not interested in the biometric aspect of authentication but rather the PIN functionality, maybe there is an easy conditional to split the options for older API versions?
(Issue) App cannot open any file on filesystem, other than files it has created
If i try to import a config file from the local filesystem, all (most) files including the config file are greyed out and non-selectable.
Workaround
If I then however (2) export a blank config file from the app (works, no errors), (2) edit the config file externally and adding information and (3) attempt to import it, that particular file is still selectable and I am able to import it. This looks to be some obscure FS permission issue (?) with no relevant logcat information (even when verbose mode is selected)
logcat info upon pressing "import configuration" are not relevant (at least upon first inspection):
logcat info upon pressing a greyed out file is a drawing update, also not relevant:
I also checked whether there are any fs permissions missing but I do not have any available selectable permissions at all for the app.
(Minor issue) App window overextends under bottom navigation bar
This is not as important, the app borders do not snap to within the active display area and overextend under the bottom navigation bar (maybe the minSize sets are too large - given i am using a small display).
(Feature request) Selectable theme
A dark (selectable) theme would be nice but not really of any importance.
Again thanks a lot for your efforts and a nice app :)