Android 8.0 قابلیت های جستجوی گسترده ای را برای منوی تنظیمات اضافه می کند. این سند نحوه افزودن یک تنظیم و اطمینان از اینکه به درستی برای جستجوی تنظیمات ایندکس شده است را توضیح می دهد.
تنظیمات قابل نمایه سازی ایجاد کنید
هر قطعه تنظیماتی که باید ایندکس شود، رابط Indexable
را پیاده سازی می کند، و به فیلد ثابت نیاز دارد:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
پس از اینکه قطعه خود را برای نمایه سازی تنظیم کردید، آن را به SearchIndexableResources
موجود در آدرس زیر اضافه کنید:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
روش های اختیاری
این رابط SearchIndexProvider
دارای چهار روش اختیاری است.
getXmlResourcesToIndex
- اگر محتوای قطعه شما از:
preference xml
است، این را لغو کنید - یک اولویت XML را به عنوان فهرستی که باید نمایه شود برمی گرداند.
مثال منابع XML:
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, boolean enabled) { ArrayList<SearchIndexableResource> result = new ArrayList<SearchIndexableResource>(); SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.display_settings; result.add(sir); return result; }
getRawDataToIndex
- اگر محتوای قطعه شما از:
preference xml
نیست، این را لغو کنید - فهرستی از داده های خام (
SearchIndexableRaw
) را برای نمایه سازی برمی گرداند.
نمونه داده های خام:
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { final List<SearchIndexableRaw> result = new ArrayList<>(); final Resources res = context.getResources(); // Add fragment title SearchIndexableRaw data = new SearchIndexableRaw(context); data.title = res.getString(R.string.wifi_settings); data.screenTitle = res.getString(R.string.wifi_settings); data.keywords = res.getString(R.string.keywords_wifi); data.key = DATA_KEY_REFERENCE; result.add(data); return result; }
getNonIndexableKeys
- اگر قطعه شما یک
DashboardFragment
است، به ندرت نیاز به لغو آن دارید. - فهرستی از کلیدها را برمیگرداند که مربوط به نتایجی است که نباید برای کاربر، دستگاه، پیکربندی و غیره نشان داده شوند. کلیدهای ارائه شده در اینجا باید با فیلد KEY در
SearchIndexableResource
وSearchIndexableRaw
مطابقت داشته باشند. - به عنوان مثال: استفاده از داده نباید برای کاربرانی که هرگز سیم کارت در دستگاه خود نداشته اند نشان داده شود.
مثال کلیدهای غیر قابل نمایه سازی:
public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); if (!checkIntentAction(context, "android.settings.TERMS")) { keys.add(KEY_TERMS); } if (!checkIntentAction(context, "android.settings.LICENSE")) { keys.add(KEY_LICENSE); } if (!checkIntentAction(context, "android.settings.COPYRIGHT")) { keys.add(KEY_COPYRIGHT); } if (!checkIntentAction(context, "android.settings.WEBVIEW_LICENSE")) { keys.add(KEY_WEBVIEW_LICENSE); } return keys; }
getPreferenceControllers
فهرستی از کنترلکنندههای ترجیحی مرتبط با این قطعه را برمیگرداند. این لیست برای تشکیل نتایج درون خطی، به روز رسانی غیرقابل نمایه سازی و غیره استفاده می شود.
بنابراین، هر چیزی که میخواهید در جستجو نشان داده شود باید در getXmlResourcesToIndex
یا getRawDataToIndex
گنجانده شود.
کلمات کلیدی را برای تنظیمات خود اضافه کنید
برای اطمینان از اینکه یک تنظیمات به راحتی قابل جستجو است، کلمات کلیدی مرتبط با تنظیماتی که کاربر ممکن است برای جستجوی تنظیمات استفاده کند، اضافه کنید.
مواردی که باید هنگام افزودن کلمات کلیدی در نظر بگیرید:
- کلمات کلیدی لیستی از کلماتی هستند که کاربر لزوما آنها را نمی بیند اما ممکن است بخشی از مدل ذهنی آنها برای نحوه عملکرد تنظیمات باشد.
- اینها کلماتی هستند که کاربر ممکن است تایپ کند تا به تنظیمات شما برسد.
- آنها می توانند مترادف باشند یا می توان از هر کلمه مرتبط با تنظیمات استفاده کرد.
- به عنوان مثال، ممکن است برای پیدا کردن تنظیمات صدا از "بی صدا" استفاده شود.
از تکراری شدن بپرهیزید
اگر بدون قید و شرط صفحه تنظیمات را سرکوب می کنید، نمایه سازی صفحه اصلی را حذف کنید تا از تکرار نتایج جلوگیری کنید.
-
PreferenceFragment
صفحه ای که در حال سرکوب آن هستید را پیدا کنید. -
SearchIndexProvider
حذف کنید.
اعتبار سنجی
برای آزمایش قابلیت جستجوی یک تنظیم جدید:
- نسخه اخیر O را روی دستگاه نصب کنید.
- ایندکس مجدد پایگاه داده با انتخاب: تنظیمات > برنامهها و اعلانها > اطلاعات برنامهها > تنظیمات > فضای ذخیرهسازی > پاک کردن دادهها
- بررسی کنید که تنظیمات هدف در جستجو نشان داده شود.
جستجوی پیشوند عنوان یک تنظیم با آن مطابقت دارد.
این تست های روبولکتریک ممکن است برای تایید اجرای این ویژگی اجرا شوند:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
هدف ساخت این است: RunSettingsRoboTests