Getting started with 1Password for your growing team, or refining your setup? Our Secured Success quickstart guide is for you.
Forum Discussion
Former Member
4 years ago1Password Autofill service with Jetpack Compose
Hi!
I'm an Android engineer working on a team with a Jetpack Compose app in production. Compose provides some https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/autofill/AndroidAutofill.android.kt, but we're seeing some issues in conjunction with 1Password for Android that aren't occurring when using other Autofill services (we've tested with Google, https://github.com/android-password-store/Android-Password-Store, and https://github.com/mozilla-mobile/android-components/tree/main/components/feature/autofill/src/main/java/mozilla/components/feature/autofill). Notably:
- 1Password will fill an email address field correctly (with
AutofillType.Username
andAutofillType.EmailAddress
), but it will not fill the associated password field. We've verified the autofillViewStructure
is populated with both fields, with the correct autofill hints and valid virtual view bounding boxes. - Upon calling
Autofill.requestAutofillForNode()
on the password field, 1Password does not display, either using GBoard's inline suggestions or its own popup. - When (2) occurs, 1Password will no longer display for the email address field, and in fact will no longer display at all until the app is killed and restarted. In this state, we are receiving the
EVENT_INPUT_UNAVAILABLE
event fromAutofillManager
, and the Compose Autofill API is reporting that autofill is not available.
These issues have been observed on the following devices:
- Samsung Galaxy S8 (API 29)
- Stock Samsung keyboard
- GBoard, with and without inline suggestions enabled
- LG G8 (API 29)
- Stock LG keyboard
- GBoard, with and without inline suggestions enabled
- Google Pixel 6 (API 31)
- GBoard, with and without inline suggestions enabled
- Google Pixel 6 Pro (API 31)
- GBoard, with and without inline suggestions enabled
We've tested the production version (7.9.1) and the beta version (7.9.2.BETA-1).
Our app is on the Play Store https://play.google.com/store/apps/details?id=com.mercury.bank if you would like to take a look. I can also provide a debug build if that would help.
I can take some time to create a minimal project to reproduce the issue, but I'd like to know if that would be useful first. Also, is there any additional debug data I can provide?
Thanks!
1Password Version: 7.9.1, 7.9.2.BETA-1
Extension Version: Not Provided
OS Version: Android 10, Android 12
6 Replies
- Former Member
Hi @joaocevada. We have not dropped the requirement of the input type of the field needing to be a password type. Until we're able to receive the input type, we may not be able to fill into those fields.
- Former Member
Hi!
I'm getting a similar issue where 1Password is not working in compose views. I noticed that the the patch was never merged, and after inspecting the ViewStructure I noticed that the inputType is still not being set by compose's Autofill.
I'm wondering what you did to get past this issue?
Did you at some point drop the requirement of the input type of the having to be password type?Thanks!
- saad
1Password Team
@tadfisher that's fantastic! Thank you. We'll follow the code review and provide any support where we can help!
- 1P_Timothy
Community Manager
Hello @tadfisher thanks for sharing that with us! I'm glad to hear you were able to get things working with 1Password.
- Former Member
Thank you! I've patched compose-ui to populate
inputType
in the Autofill view structure and it works correctly with 1Password. The patch is under review https://android-review.googlesource.com/c/platform/frameworks/support/+/1984831 if you'd like to review. - saad
1Password Team
Hi @tadfisher. Thanks for testing your app with 1Password and sharing your findings with us.
1Password has an additional requirement for filling password fields where the input type of the field must also be of a password type. This appears to be the issue since 1Password does not receive the input type value for both the username and password fields in your app.
I’ve confirmed the same behaviour on my end where I’ve set the
keyboardOptions
andvisualTransformation
for the password field. Those attributes are immediately reflective visually and with the IME but do not carry over as an input type to the Autofill service.Although Autofill support is currently limited and is in the experimental phase with Jetpack Compose, we’re very excited to see that it is in active development and hope to see full support in the near future.
I hope that helps. Let us know if you have any questions!