تکمیل خودکار را با IME و خدمات تکمیل خودکار یکپارچه کنید

از Android 11، صفحه‌کلیدها و سایر ویرایشگرهای روش ورودی ( IME ) می‌توانند پیشنهادهای تکمیل خودکار را به‌صورت خطی، در نوار پیشنهاد یا موارد مشابه به‌جای نمایش پیشنهادات توسط سیستم در منو نمایش دهند. از آنجایی که این پیشنهادات تکمیل خودکار می‌توانند حاوی داده‌های خصوصی مانند رمز عبور یا اطلاعات کارت اعتباری باشند، پیشنهادات از IME پنهان می‌شوند تا زمانی که کاربر یکی را انتخاب کند. برای استفاده از این ویژگی، IME و خدمات تکمیل خودکار، مانند مدیریت رمز عبور را به‌روزرسانی کنید. اگر یک IME یا یک سرویس تکمیل خودکار از تکمیل خودکار درون خطی پشتیبانی نمی‌کند، پیشنهادها مانند نسخه‌های قدیمی‌تر از Android 11 در منو نشان داده می‌شوند.

گردش کار

در این جریان، IME به معنای صفحه کلید فعلی یا سایر ویرایشگر ورودی است و ارائه دهنده پیشنهاد به معنای ارائه دهنده مناسب پیشنهاد تکمیل خودکار است. بسته به قسمت ورودی و تنظیمات کاربر، ارائه‌دهنده پیشنهاد ممکن است پلتفرم یا یک سرویس تکمیل خودکار باشد.

  1. کاربر روی یک فیلد ورودی تمرکز می‌کند که باعث تکمیل خودکار می‌شود، مانند گذرواژه یا فیلد ورودی کارت اعتباری.

  2. این پلتفرم از IME فعلی و ارائه‌دهنده پیشنهاد مناسب سؤال می‌کند تا ببیند آیا از تکمیل خودکار درون خطی پشتیبانی می‌کنند یا خیر. اگر IME یا ارائه‌دهنده پیشنهاد از تکمیل خودکار درون خطی پشتیبانی نمی‌کنند، پیشنهاد در یک منو مانند Android 10 و پایین‌تر نشان داده می‌شود.

  3. پلتفرم از IME می خواهد تا یک درخواست پیشنهاد ارائه دهد. این درخواست پیشنهاد حداکثر تعداد پیشنهادهایی را که باید نمایش داده شوند را مشخص می کند و همچنین مشخصات ارائه را برای هر پیشنهاد ارائه می دهد. مشخصات ارائه مواردی مانند حداکثر اندازه، اندازه متن، رنگ‌ها و داده‌های فونت را مشخص می‌کند و به ارائه‌دهنده پیشنهاد اجازه می‌دهد با ظاهر و احساس IME مطابقت داشته باشد.

  4. پلتفرم از ارائه دهنده پیشنهاد می خواهد تا حداکثر تعداد پیشنهادات درخواستی را ارائه دهد. هر پیشنهاد شامل یک تماس پاسخ برای ایجاد 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() را برای پشتیبانی از پیشنهادات درون خطی ارائه می کند.