Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Voice input fails in browser address bars due to incorrect password field detection (v4.2.9, follow-up to #516)

Offen Anfängerfreundlich
#713 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
76/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
android, kotlin
Bereich
backend, mobile

Rechercherichtung

Lies VoiceInputManager.kt im Bereich von isBlockedEditor() und vergleiche die Passwortprüfungen mit den klassenbewussten Hilfsfunktionen in InputTypeUtils.kt. Prüfe die vorhandenen Tests für die Spracheingabe, sofern es welche gibt, und verifiziere, dass URL-Felder in der Adressleiste nicht mehr abgelehnt werden, während Passwortfelder weiterhin blockiert bleiben. Fertig ist es, wenn die Spracheingabe in Adressleisten des Browsers startet und Passwortfelder weiterhin ablehnt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

Describe the bug

Voice dictation still fails in browser address bars after the fix for #516, included in LeanType v4.2.9.

Tested browsers: Firefox, Chrome, and Brave. The issue occurs in all three.

The microphone button appears in the address bar, but tapping it shows:

Voice input not available or permission missing

Voice dictation works correctly in ordinary text fields, including input fields within webpages.

Relationship to #516

Issue #516 was closed as completed via commit 3373e94.

That commit removed this condition from InputAttributes.kt:

- hasNoMicrophoneKeyOption() ||

This stops the app's NO_MICROPHONE flag from hiding the microphone button in browser address bars. However, it addresses button visibility, not the separate activation-time check. The button is now visible but voice recording still fails.

Root cause identified in source code

LeanType uses two inconsistent password-field checks.

1. Microphone visibility — class-aware

InputTypeUtils.isPasswordInputType() checks both the input class and variation:

val maskedInputType = inputType and
    (InputType.TYPE_MASK_CLASS or InputType.TYPE_MASK_VARIATION)

Source: InputTypeUtils.kt, lines 56–65

2. Microphone activation — checks variation only

VoiceInputManager.isBlockedEditor() uses:

val variation = info.inputType and InputType.TYPE_MASK_VARIATION

return variation == InputType.TYPE_TEXT_VARIATION_PASSWORD ||
        variation == InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD ||
        variation == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ||
        variation == InputType.TYPE_NUMBER_VARIATION_PASSWORD

Source: VoiceInputManager.kt, lines 1071–1079

Android assigns the same numeric variation (0x10) to these two types:

  • TYPE_TEXT_VARIATION_URI — URL fields (text class)
  • TYPE_NUMBER_VARIATION_PASSWORD — numeric password fields (number class)

Because isBlockedEditor() ignores TYPE_MASK_CLASS, a URL field can be incorrectly identified as a numeric password field. This explains the discrepancy between button visibility and activation.

Log evidence

The LeanType diagnostic log repeatedly shows the following immediately after tapping the microphone:

SuggestionStripView: click toolbar key VOICE
VoiceInputManager: canStartVoice: Blocked editor (password)

Other regular text fields successfully initiate recording and transcription. The logs establish that the password-field rejection is occurring; the source code indicates the cause of the misclassification.

To Reproduce

  1. Install LeanType v4.2.9 (standard flavor).
  2. Open Firefox, Chrome, or Brave.
  3. Focus the browser address bar.
  4. Tap LeanType's visible microphone button.

Actual behavior: Recording does not start. Instead, the keyboard reports Voice input not available or permission missing.

Expected behavior

Voice dictation should activate in browser address bars and insert recognized text as it does in regular text fields.

Suggested fix

Make VoiceInputManager.isBlockedEditor() check both input class and variation, ideally by reusing the existing class-aware utilities:

fun isBlockedEditor(info: EditorInfo?): Boolean {
    if (info == null) return false

    return InputTypeUtils.isPasswordInputType(info.inputType) ||
           InputTypeUtils.isVisiblePasswordInputType(info.inputType)
}

This avoids duplicating password-detection logic and prevents collisions between URL fields and numeric password fields.

Screenshots

A screenshot showing the error message in the address bar is available. LeanType diagnostic logs are also available, showing repeated Blocked editor (password) warnings.

App version & Flavor

  • Version: 4.2.9 (4209)
  • Flavor: Standard
  • Voice provider: Online

Device Info

  • Model: Nothing Phone (2)
  • OS version: Android 16 (SDK 36)

Related: #516 — Voice dictation does not work in browser URL bars. Its fix addressed microphone-button visibility, but the separate activation-time password-field detection remains defective. Please track this as a follow-up to #516.

Vorherrschende Sprache
Kotlin
Sterne
1k
Forks
59
Ø Merge
13 Std. 11 Min.
Gemergte PRs (30 T.)
47

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus LeanBitLab/LeanType

Alle Issues in LeanBitLab/LeanType

Ähnliche Issues

Weitere Issues zu Kotlin

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.