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

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

תהליך עבודה

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

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

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

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

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

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

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

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

הגדרת עורכי שיטות קלט (IME) לתמיכה במילוי אוטומטי מוטבע

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

עורך השיטה לקליטת נתונים (IME) צריך להגדיר את המאפיין supportsInlinedSuggestions לערך true:

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

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

  • מספר ההצעות שרוצים שיוצגו ב-IME.
  • ‫**InlinePresentationSpec לכל הצעה, שמגדיר איך ההצעה צריכה להופיע.

כשלפלטפורמה יש הצעות, היא קוראת ל-method‏ onInlineSuggestionsResponse() של ה-IME ומעבירה InlineSuggestionsResponse שמכיל את ההצעות. אתם צריכים להטמיע את השיטה הזו. בהטמעה, מפעילים את InlineSuggestionsResponse.getInlineSuggestions() כדי לקבל את רשימת ההצעות, ואז מנפחים כל הצעה באמצעות הפעלת השיטה InlineSuggestion.inflate() שלה.

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

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

שירות המילוי האוטומטי צריך להגדיר את המאפיין supportsInlinedSuggestions לערך true:

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

כשה-IME צריך הצעות למילוי אוטומטי, הפלטפורמה קוראת ל-method‏ onFillRequest() של שירות המילוי האוטומטי, בדיוק כמו בגרסאות שקודמות ל-Android 11. עם זאת, השירות שלכם צריך להפעיל את ה-method‏ getInlineSuggestionsRequest() של האובייקט FillRequest שהועבר. הפעולה הזו מאחזרת את ה-InlineSuggestionsRequest שנוצר על ידי ה-IME. השדה InlineSuggestionsRequest מציין כמה הצעות מוטמעות נדרשות ואיך כל אחת מהן צריכה להיות מוצגת. אם ה-IME לא תומך בהצעות מוטמעות, השיטה מחזירה את הערך null.

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