שילוב מילוי אוטומטי עם שירותי מילוי אוטומטי ומקלדות 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 שמכיל את ההצעות. חובה להטמיע את השיטה הזו. בהטמעה, קוראים ל-call 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() לתמיכה בהצעות מוטבעות.