البحث الشامل

يضيف 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 .
  • على سبيل المثال: يجب ألا يظهر استخدام البيانات للمستخدمين الذين لم يكن لديهم بطاقة 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;
}

getPreferenceControllers

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

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

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

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

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

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

تجنب الازدواجية

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

  1. ابحث عن PreferenceFragment للصفحة التي تقوم بقمعها.
  2. إزالة SearchIndexProvider .

تصديق

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

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

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

هدف البناء هو: RunSettingsRoboTests