यूनिवर्सल सर्च

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 है, तो इसे बदलें
  • इंडेक्स की जाने वाली सूची के तौर पर, एक्सएमएल प्राथमिकता दिखाता है.

एक्सएमएल संसाधनों के उदाहरण:

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 है, तो आपको शायद ही कभी ऐसा करने की ज़रूरत पड़े ओवरराइड करें.
  • यह फ़ंक्शन उन नतीजों से जुड़ी कुंजियों की सूची दिखाता है जो नहीं दिखने चाहिए के लिए कॉन्फ़िगर किया गया है.यहां दी गई कुंजियों को और SearchIndexableResource में मौजूद KEY फ़ील्ड को मैच कर रहा हो 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.

अपनी सेटिंग के लिए कीवर्ड जोड़ें

यह पक्का करने के लिए कि सेटिंग को आसानी से खोजा जा सके, ऐसे कीवर्ड जोड़ें जो वह सेटिंग जिसका इस्तेमाल उपयोगकर्ता सेटिंग खोजने के लिए कर सकता है.

कीवर्ड जोड़ते समय इन बातों का ध्यान रखें:

  • कीवर्ड शब्दों की ऐसी सूची होती है जिसे उपयोगकर्ता ज़रूरी नहीं रूप से देखता है लेकिन भी तय कर सकें कि वे इस टेक्नोलॉजी को कैसे इस्तेमाल करते हैं.
  • ये ऐसे शब्द होते हैं जिन्हें उपयोगकर्ता आपकी सेटिंग पर जाने के लिए टाइप कर सकता है.
  • इन शब्दों के समानार्थी शब्द या सेटिंग से जुड़े किसी भी शब्द का इस्तेमाल किया जा सकता है.
  • उदाहरण के लिए, "म्यूट करें" का इस्तेमाल आवाज़ की सेटिंग को खोजने के लिए किया जा सकता है.

दोहराव से बचें

अगर आप किसी सेटिंग पेज को बिना शर्त के छिपा रहे हैं, तो ताकि नतीजों को डुप्लीकेट होने से रोका जा सके.

  1. उस पेज का PreferenceFragment ढूंढें जिसे आप छिपा रहे हैं.
  2. SearchIndexProvider को हटाएं.

पुष्टि करें

नई सेटिंग की खोज करने की क्षमता की जांच करने के लिए:

  1. डिवाइस पर O का हाल ही का वर्शन इंस्टॉल करें.
  2. यह चुनकर डेटाबेस को फिर से इंडेक्स करें:
  3. सेटिंग > ऐप्लिकेशन और सूचनाएं > ऐप्लिकेशन की जानकारी > सेटिंग > स्टोरेज > डेटा मिटाएं
  4. पुष्टि करें कि खोज में टारगेट सेटिंग दिखाई दे रही हैं.
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है किसी सेटिंग के टाइटल के प्रीफ़िक्स की खोज करने पर, उसका मिलान हो जाएगा.

ये रोबोलेक्ट्रिक टेस्ट, इसे लागू करने की पुष्टि करने के लिए किए जा सकते हैं सुविधा:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

बिल्ड टारगेट यह है: RunSettingsRoboTests