Android 8.0 เพิ่มความสามารถในการค้นหาเพิ่มเติมให้กับเมนูการตั้งค่า ช่วงเวลานี้ เอกสารอธิบายวิธีเพิ่มการตั้งค่าและตรวจสอบว่าได้จัดทำดัชนีอย่างถูกต้องสำหรับ การค้นหาการตั้งค่า
สร้างการตั้งค่าที่จัดทำดัชนีได้
ส่วนย่อยของการตั้งค่าแต่ละส่วนที่จำเป็นต้องจัดทำดัชนีจะใช้
Indexable
อินเทอร์เฟซ และ ต้องใช้
ฟิลด์:
วันที่
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
หลังจากตั้งค่าส่วนย่อยสำหรับการจัดทำดัชนีแล้ว ให้เพิ่มส่วนนั้นลงใน
SearchIndexableResources
พบที่:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
วิธีการที่ไม่บังคับ
อินเทอร์เฟซSearchIndexProvider
นี้มีตัวเลือก 4 แบบ
getXmlResourcesToIndex
- โปรดลบล้างค่านี้หากเนื้อหา Fragment มาจาก
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; }
รับดัชนีข้อมูลข้อมูลดิบ
- โปรดลบล้างค่านี้หากเนื้อหา Fragment ไม่ได้มาจาก
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; }
getNonIndexableKey
- หากส่วนย่อยของคุณเป็น
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; }
getPreferenceController
แสดงรายการตัวควบคุมค่ากำหนดที่เชื่อมโยงกับส่วนย่อยนี้ รายการนี้ใช้เพื่อสร้างผลการค้นหาในบรรทัด อัปเดตรายการที่จัดทำดัชนีไม่ได้ ฯลฯ
ดังนั้น ทุกอย่างที่คุณต้องการให้แสดงในการค้นหาต้องรวมอยู่ใน
getXmlResourcesToIndex
หรือ getRawDataToIndex
เพิ่มคีย์เวิร์ดสำหรับการตั้งค่าของคุณ
หากต้องการให้ค้นหาการตั้งค่าได้ง่าย ให้เพิ่มคีย์เวิร์ดที่เกี่ยวข้องกับการตั้งค่า ที่ผู้ใช้สามารถใช้ค้นหาการตั้งค่านั้นได้
สิ่งที่ต้องพิจารณาเมื่อเพิ่มคีย์เวิร์ดมีดังนี้
- คีย์เวิร์ดคือรายการคำที่ผู้ใช้ไม่จำเป็นต้องเห็น แต่อาจ เป็นส่วนหนึ่งในโมเดลทางความคิดของแฟนๆ เกี่ยวกับวิธีการทำงานของการตั้งค่านี้
- คำเหล่านี้คือคำที่ผู้ใช้อาจพิมพ์เพื่อไปยังการตั้งค่าของคุณ
- โดยสามารถเป็นคำพ้องความหมายหรือคำใดก็ได้ที่เกี่ยวข้องกับการตั้งค่าดังกล่าว
- เช่น "ปิดเสียง" อาจใช้เพื่อค้นหาการตั้งค่าระดับเสียง
หลีกเลี่ยงการทำซ้ำ
หากคุณระงับหน้าการตั้งค่าอย่างไม่มีเงื่อนไข ให้นำการจัดทำดัชนีของ หน้าเดิมเพื่อหลีกเลี่ยงไม่ให้ผลการค้นหาซ้ำกัน
- ค้นหา
PreferenceFragment
ของหน้าเว็บที่คุณกำลังระงับ - นำ
SearchIndexProvider
ออก
การตรวจสอบความถูกต้อง
วิธีทดสอบความสามารถในการค้นหาของการตั้งค่าใหม่
- ติดตั้ง O เวอร์ชันล่าสุดในอุปกรณ์
- จัดทำดัชนีฐานข้อมูลอีกครั้งโดยเลือกตัวเลือกต่อไปนี้ การตั้งค่า > แอปและ การแจ้งเตือน > ข้อมูลแอป > การตั้งค่า > พื้นที่เก็บข้อมูล > ล้างข้อมูล
- ตรวจสอบว่าการตั้งค่าเป้าหมายปรากฏในการค้นหา
การค้นหาคำนำหน้าของชื่อการตั้งค่าจะตรงกับค่าดังกล่าว
อาจมีการทดสอบแบบ Robolectric เหล่านี้เพื่อตรวจสอบการนำไปใช้งาน
ฟีเจอร์:
วันที่ packages/apps/Settings/tests/robotests/src/com/android/settings/search
เป้าหมายของบิลด์คือ RunSettingsRoboTests