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

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

זרימת עבודה

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

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

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

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

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

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

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

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

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

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

ב-IME צריך להגדיר את מאפיין supportsInlinedSuggestions לערך true:

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

כשהפלטפורמה צריכה הצעה למילוי אוטומטי, היא קוראת לשיטה InputMethodService.onCreateInlineSuggestionsRequest() של ה-IME. חובה להטמיע את השיטה הזו. הפונקציה מחזירה את הערך 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() לתמיכה בהצעות מוטבעות.