Kunzisoft / KeePassDX

Lightweight vault and password manager for Android, KeePassDX allows editing encrypted data in a single file in KeePass format and fill in the forms in a secure way.
https://www.keepassdx.com/
GNU General Public License v3.0
4.6k stars 269 forks source link

App picker for setting AndroidApp in an existing entry #1165

Closed Drarig29 closed 2 years ago

Drarig29 commented 2 years ago

Is your feature request related to a problem? Please describe. I have imported a lot of passwords from by browser and I still have entries without an AndroidApp field.

So I always have to open KeePassDX, select the entry, edit it, add an AndroidApp field (name that I have to remember) and manually find the package name of the app related to the entry.

Describe the solution you'd like I'd like to have an app picker (maybe a built-in app picker intent already exists).

Describe alternatives you've considered Otherwise, text completion or a dropdown on the AndroidApp field could work.

Even an additional button (instead of "Add a field") to add an AndroidApp field specifically or another checkbox in the "Create field" dialog. I'm just giving ideas.


If you like the idea, I might work on this.

J-Jamet commented 2 years ago

Normally when KeePassDX autofill is visible in the form of your client application and you select the corresponding entry with the setting "Settings - Autofill settings - Save search info" activated, the field AndroidApp is automatically added in the entry.

An app picket is not planned for the moment because many other features are planned and as there is an existing solution it is not a priority. You can study the feasibility if you want but you have to be careful with the permissions in the new versions of Android that do not allow to see all the applications installed on the device for security reasons. So if it requires too many permissions, will not be integrated for UX simplicity.

Drarig29 commented 2 years ago

You are right, Android 11 comes with a new QUERY_ALL_PACKAGES permission: https://developer.android.com/training/package-visibility

And I understand that it's a bit overkill for a single small feature like this. Let's forget this idea.

Edit: You talk about it here https://github.com/Kunzisoft/KeePassDX/issues/996


The thing is, the "existing solution" you are talking about isn't a solution. You provide a solution to create an entry from scratch with the AndroidApp field pre-filled, not a way of updating an existing entry.

Maybe a better alternative would be to provide a solution in the "Selection mode". For example, if you long press an entry and edit it, a "ghost" AndroidApp field pre-filled could appear and you could click on it to add it. (Or something else, but still in this "edit" activity.)

J-Jamet commented 2 years ago

The thing is, the "existing solution" you are talking about isn't a solution. You provide a solution to create an entry from scratch with the AndroidApp field pre-filled, not a way of updating an existing entry.

I just tried again and I have no problem with saving the AndroidApp field in an already created entry to update it. Just select the already created entry in "Selection mode" instead of pressing the "+" button with Settings - Autofill settings - Save search info activated.

Drarig29 commented 2 years ago

I tried with the master version on an emulator with a local database and what you say does work.

But it doesn't work on my phone. First I thought maybe it was because I use a Google Drive sync'ed database. But I just tried with a new local database, just like on the emulator, and it still doesn't work.

So it's not a feature request anymore, but maybe a bug.

I have the Settings - Autofill settings - Save search enabled as you said, both on the phone and the emulator.

J-Jamet commented 2 years ago

OK, so we need to look at why it's not working on your device. Is the database open for writing? This is the most obvious thing I see. If yes, do you have the ApplicationId in the title of the toolbar, just below "Selection mode"?

Drarig29 commented 2 years ago

Yes the database is writable and the ApplicationId is visible (package name). I tried to select the entry with both normal search and full search.

J-Jamet commented 2 years ago

In this case I don't know. Since I can't reproduce the problem on my side, I can't debug to know where the data is not correctly retrieved. What is your device?

Drarig29 commented 2 years ago

It's a Samsung Galaxy S10, Android 11.

J-Jamet commented 2 years ago

I can reproduce the problem with the new compilation of the code in 3.0.3, I will try to identify and solve the issue.

Drarig29 commented 2 years ago

Nice!

On Thu, Dec 9, 2021, 12:04 PM Jérémy JAMET @.***> wrote:

I can reproduce the problem with the new compilation of the code in 3.0.3, I will try to identify and solve the issue.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Kunzisoft/KeePassDX/issues/1165#issuecomment-989747162, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACHCY7WBYUFIAIAZTEVY6KTUQCEMRANCNFSM5IQ7FILA .

J-Jamet commented 2 years ago

I understood part of the problem, I had already identified that there is a bug in android's PendingIntent that prevents passing parcelable variables in the extra, but the problem is that I can't do otherwise for the inline suggestion. So I think if you disable inline suggestion it should work. But I don't have a workaround for that.

J-Jamet commented 2 years ago

OK, I found a way by encapsulating it in a Bundle