Android 8.0 bổ sung các tính năng tìm kiếm mở rộng cho trình đơn Cài đặt. Tài liệu này mô tả cách thêm một chế độ cài đặt và đảm bảo chế độ cài đặt đó được lập chỉ mục đúng cách để tìm kiếm trong phần Cài đặt.
Tạo chế độ cài đặt có thể lập chỉ mục
Mỗi mảnh Cài đặt cần được lập chỉ mục sẽ triển khai giao diện Indexable
VÀ yêu cầu trường tĩnh:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
Sau khi bạn thiết lập mảnh để lập chỉ mục, hãy thêm mảnh đó vào SearchIndexableResources
tại:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
Phương thức không bắt buộc
Giao diện SearchIndexProvider
này có 4 phương thức không bắt buộc.
getXmlResourcesToIndex
- Ghi đè giá trị này nếu nội dung mảnh của bạn là từ:
preference xml
- Trả về một tuỳ chọn XML dưới dạng danh sách cần lập chỉ mục.
Ví dụ về tài nguyên 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
- Ghi đè giá trị này nếu nội dung mảnh KHÔNG đến từ:
preference xml
- Trả về danh sách Dữ liệu thô (
SearchIndexableRaw
) cần được lập chỉ mục.
Ví dụ về dữ liệu thô:
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
- Nếu mảnh của bạn là
DashboardFragment
, bạn hiếm khi cần ghi đè điều này. - Trả về danh sách khoá tương ứng với kết quả không nên xuất hiện cho người dùng, thiết bị, cấu hình, v.v. Các khoá được cung cấp ở đây phải khớp với trường KEY (KHOÁ) trong
SearchIndexableResource
vàSearchIndexableRaw
. - Ví dụ: Mức sử dụng dữ liệu sẽ không xuất hiện đối với những người dùng chưa từng có thẻ SIM trong thiết bị.
Ví dụ về khoá không lập chỉ mục:
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
Trả về danh sách trình điều khiển tuỳ chọn liên kết với mảnh này. Danh sách này được dùng để tạo kết quả cùng dòng, cập nhật nội dung không lập chỉ mục, v.v.
Do đó, mọi nội dung bạn muốn xuất hiện trong kết quả tìm kiếm đều phải được đưa vào getXmlResourcesToIndex
hoặc getRawDataToIndex
.
Thêm từ khoá cho chế độ cài đặt
Để đảm bảo chế độ cài đặt dễ tìm kiếm, hãy thêm các từ khoá liên quan đến chế độ cài đặt mà người dùng có thể sử dụng để tìm kiếm chế độ cài đặt đó.
Những điều cần cân nhắc khi thêm từ khoá:
- Từ khoá là danh sách các từ mà người dùng không nhất thiết phải thấy nhưng có thể là một phần của mô hình tinh thần về cách hoạt động của chế độ cài đặt.
- Đây là những từ mà người dùng có thể nhập để chuyển đến phần cài đặt của bạn.
- Đó có thể là từ đồng nghĩa hoặc bất kỳ từ nào liên quan đến chế độ cài đặt.
- Ví dụ: bạn có thể dùng từ khoá "tắt tiếng" để tìm chế độ cài đặt Âm lượng.
Tránh trùng lặp
Nếu bạn đang chặn một trang cài đặt vô điều kiện, hãy xoá việc lập chỉ mục trang gốc để tránh kết quả trùng lặp.
- Tìm
PreferenceFragment
của trang mà bạn đang chặn. - Xoá
SearchIndexProvider
.
Xác nhận kết quả
Cách kiểm tra khả năng tìm kiếm của một chế độ cài đặt mới:
- Cài đặt phiên bản O gần đây trên thiết bị.
- Hãy lập chỉ mục lại cơ sở dữ liệu bằng cách chọn: Cài đặt > Ứng dụng và thông báo > Thông tin ứng dụng > Cài đặt > Bộ nhớ > Xoá dữ liệu
- Xác minh rằng chế độ cài đặt mục tiêu xuất hiện trong kết quả tìm kiếm.
Việc tìm kiếm tiền tố của tiêu đề chế độ cài đặt sẽ khớp với chế độ cài đặt đó.
Bạn có thể chạy các chương trình kiểm thử robolectric này để xác thực việc triển khai tính năng này:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
Mục tiêu bản dựng là: RunSettingsRoboTests