Tìm kiếm toàn cầu

Android 8.0 bổ sung thêm khả năng tìm kiếm mở rộng cho menu Cài đặt . Tài liệu này mô tả cách thêm cài đặt và đảm bảo cài đặt đó được lập chỉ mục chính xác cho tìm kiếm Cài đặt.

Tạo cài đặt có thể lập chỉ mục

Mỗi đoạn 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

Khi bạn đã thiết lập xong đoạn của mình để lập chỉ mục, hãy thêm nó vào SearchIndexableResources được tìm thấy tại:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java

Phương pháp tùy chọn

Giao diện SearchIndexProvider này có bốn phương thức tùy chọn.

getXmlResourcesToIndex

  • Ghi đè điều này nếu nội dung đoạn của bạn đến từ: preference xml
  • Trả về tùy 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 đè điều này nếu nội dung đoạn của bạn 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 đoạn của bạn là DashboardFragment thì bạn hiếm khi cần ghi đè lên phần này.
  • Trả về danh sách các khóa tương ứng với các kết quả sẽ không hiển thị cho người dùng, thiết bị, cấu hình cụ thể, v.v. Các khóa được cung cấp ở đây phải khớp với trường KEY trong SearchIndexableResourceSearchIndexableRaw .
  • Ví dụ: Sử dụng dữ liệu sẽ không hiển thị đối với người dùng chưa từng có thẻ SIM trong thiết bị của họ.

Ví dụ về khóa không thể 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;
}

getPreferenceController

Trả về danh sách các bộ điều khiển tùy chọn được liên kết với đoạn này. Danh sách này được sử dụng để tạo kết quả nội tuyến, cập nhật các mục không thể lập chỉ mục, v.v.

Do đó, mọi thứ bạn muốn hiển thị trong tìm kiếm phải được đưa vào getXmlResourcesToIndex hoặc getRawDataToIndex .

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

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

Những điều cần cân nhắc khi thêm từ khóa:

  • Từ khóa là danh sách các từ mà người dùng không nhất thiết phải nhìn thấy nhưng có thể là một phần trong mô hình tinh thần của họ về cách hoạt động của cài đặt.
  • Đây là những từ mà người dùng có thể nhập để truy cập cài đặt của bạn.
  • Chúng có thể là từ đồng nghĩa hoặc bất kỳ từ nào liên quan đến cài đặt đều có thể được sử dụng.
  • Ví dụ: "tắt tiếng" có thể được sử dụng để tìm cài đặt Âm lượng.

Tránh trùng lặp

Nếu bạn chặn một trang cài đặt một cách vô điều kiện, hãy xóa việc lập chỉ mục của trang gốc để tránh trùng lặp kết quả.

  1. Tìm PreferenceFragment của trang bạn đang chặn.
  2. Xóa SearchIndexProvider .

Thẩm định

Để kiểm tra khả năng tìm kiếm của 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 & Thông báo > Thông tin ứng dụng > Cài đặt > Bộ nhớ > Xóa dữ liệu
  4. Xác minh cài đặt mục tiêu hiển thị trong tìm kiếm.
    Tìm kiếm tiền tố của tiêu đề cài đặt sẽ khớp với nó.

Các thử nghiệm điện máy này có thể được chạ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 xây dựng là: RunSettingsRoboTests