An alternative approach to auto-filling: a floating window

I've been quite disappointed with how autofill works on Android for a while now, and let me be entirely clear - I know it's not your fault, but the system's.

Note: Ex-Android developer, I'll talk about implementation stuff below.

So, you come to a page in Chrome or an app on your phone that you need to log into, and autofill doesn't work for some reason (it's impossible to nail all the different scenarios, you can search the forums for other users having trouble with this, and it's because Google hasn't left a solid framework for autofill to work with, and even if it did, everyone would have to support it, and alas, not everyone does).

Issues:

  • In order to log in, you need to start 1Password either normally or as a multiwindow app, in order to copy over your credentials and log in.
  • You get no suggestions from 1Pass (I really see no workaround for this one, though).
  • Entering multiwindow mode has become very cumbersome on stock Android 10 and later devices, where you have to go into multitasking, click on the icon of the app you want to have in the multitasking view, and then click on the Split Screen option from the popup menu, and then either select 1Pass from the list of your recently ran apps (if you did recently run it), or run it normally from your launcher as you would. It's quite a pain to use. Again, not faulting 1Pass here, that's just how the system works.
  • Some apps (like Instagram) straight-up refuse to work in multiwindow mode, and in that case, you have to resort to app switching - hitting Home, going to 1Pass, authenticating, looking for your password, then copying what you need to copy, going back into the other app, and probably repeating some of these steps, if you're copying both the username and the password.
  • [Maybe the biggest issue for me] Disturbing the lifecycle of the app that we want to log into leads to the app behaving less than ideally, i.e. some might kick you out of the login screen, because they handle Android's configuration changes poorly. This just makes the whole experience feel very fragile and sometimes even painful to use.

My question to the 1Pass team is this:

Would it be possible to make a dedicated floating window option, like Facebook's Messenger has done? To me, the perfect combination would be a Quick Setting that would bring up a floating bubble of the 1Pass icon that you can click on and get the full app running in a window that overlays other windows, just like Messenger does. You then copy what you need to copy, search for what you need, whatever, all without disturbing the lifecycle of the app that we want to log into.

Example of a floating icon:

Example of the floating window mechanism:

The main thing to note is that it overlays your current window, without disrupting its lifecycle. It is also much easier to switch between apps multiple times like this.

Background and research I've done so far

What I thought would solve my issues is putting 1Pass into a floating window via the system or a third-party app that allows that. However, I soon learned that it's not as easy as I thought it would be, and that it would definitely involve some development.

There's a Developer Option for Freeform Windows on Android, but it's quite half-baked. You can start 1Password in a floating window, and it works properly - no problems there. The main issue is that there is a limitation in WindowManager, that makes all windows that are started latest go on top. So, I could bring up 1Pass, make it freeform, and then go into the app I want to log into, only to have that app completely obscure 1Pass because of how WindowManager works. Read more about the limitations here. It's a great resource on using floating windows in general.

A workaround would be to start both apps in freeform mode, but because of how you get to freeform mode (and multiwindow mode, for that matter), it's not really all that more convenient than just cycling through two apps. I didn't test this out, and it maybe doesn't even work for all I know.

Android has deprecated the old TYPE_SYSTEM_ALERT, but there's a new one called TYPE_APPLICATION_OVERLAY, that allows for the functionality that's needed. Using this should not be the same as using freeform windows, and it should work better (Messenger has been using it for ages, although it seems that they have switched to the new Bubbles API).

I know that this is a huge post, and I'm sorry for that. I would also like to thank you for the beautiful app, I've been using the paid version for a while now and it's generally a joy to use, only constrained by the system restrictions on each system it's on (for example, I think the Mac version is the pinnacle of 1Pass - it works amazingly well).

This is not a feature request, just a question about how the team feels about this at all. I would like to know what you think and do you see if this could improve our experience, which is constrained by Android itself. Again, thanks for all your hard work!


1Password Version: 7.7.2
Extension Version: Not Provided
OS Version: Android 11
Sync Type: 1Pass

Comments

  • mverdemverde

    Team Member

    Hey @acolyte192... Let me start by saying that I really appreciate the amount of thought that you put into this! As you've noted in your post, there are a lot of factors which combine to make this a rather challenging problem to solve. When it comes to Autofill working well, it really boils down to 3 steps all happening as they should:

    1. The system sends a request to 1Password with all of the relevant details for the views on screen.
    2. 1Password identifies the fields that it is able to fill in and returns matching Logins for you to choose from.
    3. When you choose a Login to fill, the system inserts the relevant text into each field.

    If something goes wrong in any of these steps, then Autofill doesn't work as expected. The first step usually goes off without a hitch, but there are the some apps where the developers have decided to prevent Autofill from working. This is most often seen in banking and security apps. The second step is almost entirely our responsibility, but it can be helped along with app developers who properly annotate the fields in their app with the relevant Autofill hints. The third step is prone to breaking when app developers add pre-flight validation to their fields or automatically clear those fields when the app is paused.

    All combined, this means that you will definitely encounter times when Autofill simply doesn't work for you. We added drag-and-drop support in 1Password in order to provide a fallback mechanism, but as you mentioned, entering split screen mode on recent Android versions requires a handful of taps that make it somewhat less convenient to use. Copy-and-paste almost always works (there are a few notable exceptions where even that is blocked by the app developer), but the clipboard is not a particularly secure place to put passwords. Prior to Android 10, it was even less so because any background app could query the contents of the clipboard.

    So where does that leave us when it comes to providing a reasonable fallback? When it works as expected, the magic of Autofill is that it doesn't require any context switches (or interrupting the lifecycle of the app you're using). Using a Quick Settings tile to invoke a floating window would still allow us to avoid the context and lifecycle changes. We've talked internally about exploring something like this before, but given that there will always be occasional situations where Autofill doesn't work, I think this is something that we need to explore more fully. Thanks for taking the time to share your thoughts with us and definitely let me know if you have any follow-up questions!

  • Hey @mverde, no problem!

    The only reason that I wrote is that Autofill has been very flaky for me on Android. More often than not, it does not work, and it honestly hinders the experience.

    Hope something gets better in the future!

    I wish you a great day.

  • ag_audreyag_audrey

    Team Member

    Hey @acolyte192, we are continuing to work to improve the Autofill experience for everyone.

    If you have any further questions, please do not hesitate to reach back out :)

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file