Tìm kiếm chung

Android 8.0 bổ sung khả năng tìm kiếm mở rộng cho trình đơn Settings (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 cho tính năng Tìm kiếm phần cài đặt.

Tạo các 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 lựa chọn ưu tiên XML dưới dạng danh sách sẽ được 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 của bạn KHÔNG phải từ: preference xml
  • Trả về danh sách Dữ liệu thô (SearchIndexableRaw) sẽ đượ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 đè giá trị này.
  • Trả về danh sách các khoá tương ứng với kết quả không xuất hiện cho người dùng, thiết bị, cấu hình cụ thể, v.v. Các khoá được cung cấp ở đây phải khớp với trường KEY trong SearchIndexableResourceSearchIndexableRaw.
  • 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ị của họ.

Ví dụ về khoá không lập chỉ mục đượ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 lựa chọn ưu tiên liên kết với mảnh này. Danh sách này dùng để tạo kết quả cùng dòng, cập nhật các tài sản không lập chỉ mục được, v.v.

Do đó, mọi thông tin mà bạn muốn xuất hiện trong kết quả tìm kiếm đều phải có trong getXmlResourcesToIndex hoặc getRawDataToIndex.

Thêm từ khóa cho cài đặt của bạn

Để đảm bảo một chế độ cài đặt dễ tìm kiếm, hãy thêm các từ khoá có liên quan đến chế độ cài đặt mà người dùng có thể sử dụng để tìm chế độ cài đặt đó.

Những điều cần xem xét 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 nhìn thấy nhưng có thể là một phần trong mô hình tư duy của họ về cách chế độ cài đặt hoạt động.
  • Đây là những từ mà người dùng có thể nhập để chuyển đến chế độ cài đặt của bạn.
  • Các từ này có thể là từ đồng nghĩa hoặc có thể sử dụng bất kỳ từ nào có liên quan đến chế độ cài đặt này.
  • Ví dụ: Bạn có thể dùng tính năng "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á hoạt động lập chỉ mục trang gốc để tránh trùng lặp kết quả.

  1. Tìm PreferenceFragment của trang mà bạn đang chặn.
  2. 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:

  1. Cài đặt phiên bản O gần đây trên thiết bị.
  2. Lập chỉ mục lại cơ sở dữ liệu bằng cách chọn:
  3. 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
  4. 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.
    Tìm kiếm tiền tố cho tiêu đề của một chế độ cài đặt sẽ khớp với chế độ cài đặt đó.

Bạn có thể chạy các phép kiểm thử robolectric này để xác thực phương thứ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