البحث الشامل

يضيف 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;
}

الحصول على مفاتيح غير قابلة للفهرسة

  • إذا كان الجزء هو DashboardFragment، نادرًا ما تحتاج إلى تجاوزه.
  • لعرض قائمة بالمفاتيح التي تتوافق مع النتائج التي من المفترض ألا تظهر للمستخدم أو الجهاز أو الإعدادات المحدّدة وما إلى ذلك.ويجب أن تتطابق المفاتيح المتوفرة هنا مع حقل KEY في SearchIndexableResource وSearchIndexableRaw.
  • على سبيل المثال: يجب ألا يظهر استخدام البيانات للمستخدمين الذين لم يسبق لهم الحصول على شريحة SIM في أجهزتهم.

مثال على المفاتيح غير القابلة للفهرسة:

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;
}

الحصول على عناصر التحكّم في الإعدادات المفضّلة

تعرض قائمة بوحدات التحكم في الإعدادات المفضّلة المرتبطة بهذا الجزء. تُستخدم هذه القائمة لإنشاء نتائج مضمّنة وتعديل العناصر غير القابلة للفهرسة وما إلى ذلك.

وبالتالي، يجب تضمين كل المحتوى الذي تريد عرضه في نتائج البحث إما في getXmlResourcesToIndex أو getRawDataToIndex.

إضافة كلمات رئيسية لإعداداتك

لضمان سهولة البحث في أحد الإعدادات، أضِف كلمات رئيسية ذات صلة بالإعداد الذي قد يستخدمه المستخدم للبحث عن الإعداد.

أمور يجب مراعاتها عند إضافة كلمات رئيسية:

  • الكلمات الرئيسية هي قائمة بالكلمات التي لا يراها المستخدم بالضرورة ولكنّها قد تكون جزءًا من نموذجه العقلي لكيفية عمل الإعداد.
  • هذه هي الكلمات التي قد يكتبها المستخدم للوصول إلى الإعداد.
  • ويمكن أن تكون هذه الكلمات مرادفة أو أي كلمات مرتبطة بالإعداد.
  • على سبيل المثال، يمكن استخدام "كتم الصوت" للعثور على إعداد مستوى الصوت.

تجنُّب التكرار

إذا كنت توقف صفحة إعدادات بدون شروط، عليك إزالة فهرسة الصفحة الأصلية لتجنّب تكرار النتائج.

  1. ابحث عن PreferenceFragment للصفحة التي تريد منعها.
  2. أزِل SearchIndexProvider.

التحقُّق

لاختبار إمكانية البحث عن إعداد جديد:

  1. ثبِّت إصدارًا حديثًا من O على الجهاز.
  2. أعِد فهرسة قاعدة البيانات من خلال اختيار:
  3. الإعدادات > التطبيقات والإشعارات > معلومات التطبيقات > الإعدادات > مساحة التخزين > محو البيانات
  4. تحقَّق من ظهور إعدادات الهدف في البحث.
    سيؤدي البحث عن بادئة لعنوان إعداد معيّن إلى مطابقته.

يمكن إجراء هذه الاختبارات للتحقّق من صحة تنفيذ هذه الميزة:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

هدف الإصدار هو: RunSettingsRoboTests