החל מ-Android 11, מקלדות ועריכות אחרות של שיטות קלט (IME) יכולות להציג הצעות למילוי אוטומטי בשורה, בפס הצעות או במקום דומה, במקום שהמערכת תציג הצעות בתפריט. מכיוון שההצעות האלה למילוי אוטומטי יכולות להכיל מידע פרטי, כמו סיסמאות או פרטי כרטיס אשראי, ההצעות מוסתרות מ-IME עד שהמשתמש בוחר אחת מהן. כדי להשתמש בתכונה הזו, צריך לעדכן IME ושירותי המילוי האוטומטי, כמו מנהלי סיסמאות. אם IME או שירות מילוי אוטומטי לא תומכים במילוי אוטומטי בתוך השורה, ההצעות יוצגו בתפריט, כמו בגרסאות ישנות יותר מ-Android 11.
זרימת עבודה
בתהליך הזה, IME הוא המקלדת הנוכחית או עורך קלט אחר, וספק ההצעות הוא הספק המתאים של ההצעה למילוי אוטומטי. בהתאם לשדה להזנת הקלט ולהגדרות המשתמש, ספק ההצעות יכול להיות הפלטפורמה או שירות המילוי האוטומטי.
המשתמש מתמקד בשדה קלט שמפעיל מילוי אוטומטי, כמו שדה קלט של סיסמה או של כרטיס אשראי.
הפלטפורמה שולחת שאילתה ל-IME הנוכחי ולספק ההצעות המתאים כדי לראות אם הם תומכים במילוי אוטומטי מוטבע. אם ה-IME או ספק ההצעות לא תומכים במילוי אוטומטי בתוך השורה, ההצעה תוצג בתפריט, כמו ב-Android 10 ומטה.
הפלטפורמה מבקשת מ-IME לספק בקשת הצעה. בבקשה הזו מצוין מספר ההצעות המקסימלי שאפשר להציג, וגם מפרטים של הצגה לכל הצעה. מפרטי המצגת מציינים דברים כמו גודל מקסימלי, גודל טקסט, צבעים ונתוני גופן, ומאפשרים לספק ההצעות להתאים למראה ולתחושה של ה-IME.
הפלטפורמה מבקשת מספק ההצעות לספק עד למספר ההצעות המבוקש. כל הצעה כוללת קריאה חוזרת (callback) כדי להנפיח
View
שמכיל את ממשק המשתמש של ההצעה.הפלטפורמה מעדכנת את ה-IME שההצעות מוכנות. ה-IME מציג את ההצעות על ידי קריאה לשיטת הקריאה החוזרת כדי להגדיל את ערך ה-
View
של כל הצעה. כדי להגן על המידע הפרטי של המשתמש, לא מוצגות להצעות בשלב הזה.אם המשתמש בוחר באחת מההצעות, ה-IME מקבל הודעה באותו אופן שבו המשתמש בוחר הצעה מתפריט מערכת.
בקטעים הבאים מוסבר איך להגדיר את ה-IME או את שירות המילוי האוטומטי כך שתהיה תמיכה במילוי אוטומטי בתוך שורת הטקסט.
הגדרת ממשקי IME כך שיתמכו במילוי אוטומטי בתוך שורה
בקטע הזה מוסבר איך להגדיר את ה-IME כך שיתמוך במילוי אוטומטי בתוך שורה. אם ה-IME לא תומך במילוי אוטומטי בתוך שורה, הפלטפורמה תציג את ההצעות למילוי אוטומטי בתפריט כברירת מחדל.
ה-IME צריך להגדיר את המאפיין supportsInlinedSuggestions
לערך true
:
<input-method
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
כשהפלטפורמה צריכה הצעה למילוי אוטומטי, היא קוראת ל-method של ה-IME InputMethodService.onCreateInlineSuggestionsRequest()
. חובה להטמיע את השיטה הזו. מחזירים את הערך InlineSuggestionsRequest
ומציינים את הפרטים הבאים:
- כמה הצעות מערכת ה-IME רוצה להציג.
InlinePresentationSpec
לכל הצעה, שמגדיר את אופן הצגת ההצעה.
כשיש בפלטפורמה הצעות, היא קוראת לשיטה onInlineSuggestionsResponse()
של ה-IME, ומעבירה את הערך InlineSuggestionsResponse
שמכיל את ההצעות. חובה להטמיע את השיטה הזו. בהטמעה, צריך להפעיל את InlineSuggestionsResponse.getInlineSuggestions()
כדי לקבל את רשימת ההצעות, ואז להפעיל את השיטה InlineSuggestion.inflate()
של כל הצעה כדי להנפיח אותה.
הגדרת שירותי מילוי אוטומטי כך שיתמכו במילוי אוטומטי בשורה
בקטע הזה מוסבר איך להגדיר ששירות המילוי האוטומטי יתמוך במילוי אוטומטי מוטבע. אם האפליקציה לא תומכת במילוי אוטומטי בתוך שורה, הפלטפורמה תציג כברירת מחדל את ההצעות למילוי אוטומטי בתפריט.
שירות המילוי האוטומטי צריך להגדיר את המאפיין supportsInlinedSuggestions
ל-true
:
<autofill-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
כשמערכת ה-IME זקוקה להצעות למילוי אוטומטי, הפלטפורמה קוראת לשיטה onFillRequest()
של שירות המילוי האוטומטי, בדיוק כמו בגרסאות של Android 11 ומטה. עם זאת, השירות צריך להפעיל את השיטה getInlineSuggestionsRequest()
של אובייקט FillRequest
שהוענק כדי לקבל את InlineSuggestionsRequest
שנוצר על ידי ה-IME. השדה InlineSuggestionsRequest
מציין כמה הצעות צריך להציג בשורה אחת ואיך צריך להציג כל אחת מהן. אם ה-IME לא תומך בהצעות בשורה, השיטה מחזירה את הערך null
.
שירות המילוי האוטומטי יוצר אובייקטים InlinePresentation
, עד למספר המקסימלי המבוקש ב-InlineSuggestionsRequest
.
המצגות צריכות להיות בהתאם למגבלות הגודל שצוינו ב-InlineSuggestionsRequest
. כדי להחזיר את ההצעות ל-IME, קוראים ל-Dataset.Builder.setValue()
פעם אחת עבור כל הצעה. ב-Android 11 יש גרסאות של Dataset.Builder.setValue()
שתומכות בהצעות בשורת הטקסט.