שילוב מילוי אוטומטי עם שירותי מילוי אוטומטי ומקלדות IME

החל מ-Android 11, מקלדות ועריכות אחרות של שיטות קלט (IME) יכולות להציג הצעות למילוי אוטומטי בשורה, בסרגל הצעות או באופן דומה, במקום שהמערכת תציג הצעות בתפריט. מכיוון שההצעות האלה למילוי אוטומטי יכולות להכיל מידע פרטי, כמו סיסמאות או פרטי כרטיס אשראי, ההצעות מוסתרות מ-IME עד שהמשתמש בוחר אחת מהן. לעדכן IME ושירותי מילוי אוטומטי, כגון מנהלי סיסמאות, להשתמש בתכונה הזאת. אם IME או שירות מילוי אוטומטי לא תומכים בגוף ההודעה במילוי האוטומטי, ההצעות מוצגות בתפריט כמו בגרסאות שקודמות ל- Android 11.

זרימת עבודה

בתהליך הזה, IME פירושו המקלדת הנוכחית או עורך קלט אחר, וגם ספק ההצעות הוא הספק המתאים של ההצעה למילוי אוטומטי. בהתאם לשדה להזנת הקלט ולהגדרות המשתמש, ספק ההצעה הוא יכול להיות הפלטפורמה או שירות של מילוי אוטומטי.

  1. המשתמש מתמקד בשדה להזנת נתונים שמפעיל את המילוי האוטומטי, כמו שדה להזנת סיסמה או שדה להזנת פרטי כרטיס אשראי.

  2. הפלטפורמה שולחת שאילתה ל-IME הנוכחי ולספק ההצעות המתאים כדי לבדוק אם הם תומכים במילוי אוטומטי בשורת הטקסט. אם ה-IME או ספק ההצעות לא תומכים במילוי אוטומטי בתוך השורה, ההצעה תוצג בתפריט, כמו ב-Android 10 ומטה.

  3. הפלטפורמה מבקשת מ-IME לספק בקשת הצעה. ההצעה הזו הבקשה מציינת את המספר המקסימלי של הצעות שיוצגו, וגם מספק מפרטי מצגת לכל הצעה. מפרט התצוגה כולל פרטים כמו גודל מקסימלי, גודל טקסט, צבעים ונתוני גופן, שמאפשרים לספק ההצעות להתאים את המראה והתחושה של ה-IME.

  4. הפלטפורמה מבקשת מספק ההצעות לספק עד מספר ההצעות. כל הצעה כוללת קריאה חוזרת (callback) כדי להנפיח View שמכיל את ממשק המשתמש של ההצעה.

  5. הפלטפורמה מעדכנת את ה-IME שההצעות מוכנות. ה-IME מציג על ידי קריאה לשיטת הקריאה החוזרת כדי להגדיל את View כדי להגן על המידע הפרטי של המשתמש, לא מוצגות להצעות בשלב הזה.

  6. אם המשתמש בוחר באחת מההצעות, ה-IME מקבל מידע באותו אופן כאילו המשתמש בוחר הצעה מתפריט מערכת.

הקטעים הבאים מתארים כיצד להגדיר את ה-IME או את שירות המילוי האוטומטי תומכות במילוי אוטומטי מוטבע.

הגדרת עורכי IME לתמיכה במילוי אוטומטי מוטבע

סעיף זה מתאר כיצד להגדיר את ה-IME שלך כך שיתמוך במילוי אוטומטי מוטבע. אם המיקום ה-IME שלך לא תומך במילוי אוטומטי מוטבע, כברירת מחדל הפלטפורמה מוצגת הצעות למילוי אוטומטי בתפריט.

ה-IME שלך חייב להגדיר את המאפיין supportsInlinedSuggestions כ- true:

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

כשהפלטפורמה זקוקה להצעת מילוי אוטומטי, היא קוראת ל-IME InputMethodService.onCreateInlineSuggestionsRequest() . חובה להטמיע את השיטה הזו. מחזירים את הערך InlineSuggestionsRequest ומציינים את הפרטים הבאים:

  • כמה הצעות מערכת ה-IME רוצה להציג.
  • InlinePresentationSpec לכל הצעה, שמגדיר את אופן הצגת ההצעה.

כשלפלטפורמה יש הצעות, היא קוראת ל-IME שלך onInlineSuggestionsResponse() באמצעות העברת 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 ומטה. אבל, השירות חייב לקרוא לאובייקט FillRequest שהועבר getInlineSuggestionsRequest() כדי לקבל את InlineSuggestionsRequest שנוצר על ידי ה-IME. השדה InlineSuggestionsRequest מציין כמה הצעות צריך להציג בשורה אחת ואיך צריך להציג כל אחת מהן. אם ה-IME לא תומך בהצעות בשורה, השיטה מחזירה את הערך null.

שירות המילוי האוטומטי יוצר InlinePresentation אובייקטים, עד למספר המקסימלי המבוקש בInlineSuggestionsRequest. המצגות צריכות לעמוד באילוצי הגודל שצוינו ב-InlineSuggestionsRequest. כדי להחזיר את ההצעות ל-IME, התקשרו Dataset.Builder.setValue() פעם אחת לכל הצעה. מערכת Android 11 מספקת גרסאות של Dataset.Builder.setValue() לתמיכה בהצעות בגוף ההודעה.