389 lines
12 KiB
Java
389 lines
12 KiB
Java
/*
|
|
* Copyright (C) 2014 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.provider;
|
|
|
|
import android.annotation.NonNull;
|
|
import android.annotation.SystemApi;
|
|
import android.content.ContentResolver;
|
|
|
|
/**
|
|
* Describe the contract for an Indexable data.
|
|
*
|
|
* @hide
|
|
*/
|
|
@SystemApi
|
|
public class SearchIndexablesContract {
|
|
|
|
/**
|
|
* Intent action used to identify {@link SearchIndexablesProvider}
|
|
* instances. This is used in the {@code <intent-filter>} of a {@code <provider>}.
|
|
*/
|
|
public static final String PROVIDER_INTERFACE =
|
|
"android.content.action.SEARCH_INDEXABLES_PROVIDER";
|
|
|
|
private static final String SETTINGS = "settings";
|
|
|
|
/**
|
|
* Indexable reference names.
|
|
*/
|
|
public static final String INDEXABLES_XML_RES = "indexables_xml_res";
|
|
|
|
/**
|
|
* ContentProvider path for indexable xml resources.
|
|
*/
|
|
public static final String INDEXABLES_XML_RES_PATH = SETTINGS + "/" + INDEXABLES_XML_RES;
|
|
|
|
/**
|
|
* Indexable raw data names.
|
|
*/
|
|
public static final String INDEXABLES_RAW = "indexables_raw";
|
|
|
|
/**
|
|
* ContentProvider path for indexable raw data.
|
|
*/
|
|
public static final String INDEXABLES_RAW_PATH = SETTINGS + "/" + INDEXABLES_RAW;
|
|
|
|
/**
|
|
* Non indexable data keys.
|
|
*/
|
|
public static final String NON_INDEXABLES_KEYS = "non_indexables_key";
|
|
|
|
/**
|
|
* Site map pairs data key
|
|
*
|
|
* @hide
|
|
*/
|
|
public static final String SITE_MAP_PAIRS_KEYS = "site_map_pairs";
|
|
|
|
/**
|
|
* ContentProvider path for non indexable data keys.
|
|
*/
|
|
public static final String NON_INDEXABLES_KEYS_PATH = SETTINGS + "/" + NON_INDEXABLES_KEYS;
|
|
|
|
/**
|
|
* ContentProvider path for sitemap keys.
|
|
*
|
|
* @hide
|
|
*/
|
|
public static final String SITE_MAP_PAIRS_PATH = SETTINGS + "/" + SITE_MAP_PAIRS_KEYS;
|
|
|
|
/**
|
|
* Last path segment for Preference Key, Slice Uri pair.
|
|
* <p>
|
|
* The (Key, Slice Uri) pairs are a mapping between the primary key of the search result and
|
|
* a Uri for a Slice that represents the same data. Thus, an app can specify a list of Uris
|
|
* for Slices that replace regular intent-based search results with inline content.
|
|
* </p>
|
|
*/
|
|
public static final String SLICE_URI_PAIRS = "slice_uri_pairs";
|
|
|
|
/**
|
|
* ContentProvider path for Slice Uri pairs.
|
|
*/
|
|
public static final String SLICE_URI_PAIRS_PATH = SETTINGS + "/" + SLICE_URI_PAIRS;
|
|
|
|
|
|
/**
|
|
* The raw data name of dynamic index. This is used to compose the index path of provider
|
|
* for dynamic index.
|
|
*/
|
|
public static final String DYNAMIC_INDEXABLES_RAW = "dynamic_indexables_raw";
|
|
|
|
/**
|
|
* ContentProvider path for dynamic index. This is used to get the raw data of dynamic index
|
|
* from provider.
|
|
*/
|
|
public static final String DYNAMIC_INDEXABLES_RAW_PATH =
|
|
SETTINGS + "/" + DYNAMIC_INDEXABLES_RAW;
|
|
|
|
/**
|
|
* Indexable xml resources columns.
|
|
*/
|
|
public static final String[] INDEXABLES_XML_RES_COLUMNS = new String[] {
|
|
XmlResource.COLUMN_RANK, // 0
|
|
XmlResource.COLUMN_XML_RESID, // 1
|
|
XmlResource.COLUMN_CLASS_NAME, // 2
|
|
XmlResource.COLUMN_ICON_RESID, // 3
|
|
XmlResource.COLUMN_INTENT_ACTION, // 4
|
|
XmlResource.COLUMN_INTENT_TARGET_PACKAGE, // 5
|
|
XmlResource.COLUMN_INTENT_TARGET_CLASS // 6
|
|
};
|
|
|
|
/**
|
|
* Indexable xml resources columns indices.
|
|
*/
|
|
public static final int COLUMN_INDEX_XML_RES_RANK = 0;
|
|
public static final int COLUMN_INDEX_XML_RES_RESID = 1;
|
|
public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2;
|
|
public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3;
|
|
public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4;
|
|
public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5;
|
|
public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6;
|
|
|
|
/**
|
|
* Indexable raw data columns.
|
|
*/
|
|
public static final String[] INDEXABLES_RAW_COLUMNS = new String[] {
|
|
RawData.COLUMN_RANK, // 0
|
|
RawData.COLUMN_TITLE, // 1
|
|
RawData.COLUMN_SUMMARY_ON, // 2
|
|
RawData.COLUMN_SUMMARY_OFF, // 3
|
|
RawData.COLUMN_ENTRIES, // 4
|
|
RawData.COLUMN_KEYWORDS, // 5
|
|
RawData.COLUMN_SCREEN_TITLE, // 6
|
|
RawData.COLUMN_CLASS_NAME, // 7
|
|
RawData.COLUMN_ICON_RESID, // 8
|
|
RawData.COLUMN_INTENT_ACTION, // 9
|
|
RawData.COLUMN_INTENT_TARGET_PACKAGE, // 10
|
|
RawData.COLUMN_INTENT_TARGET_CLASS, // 11
|
|
RawData.COLUMN_KEY, // 12
|
|
RawData.COLUMN_USER_ID, // 13
|
|
RawData.PAYLOAD_TYPE, // 14
|
|
RawData.PAYLOAD // 15
|
|
};
|
|
|
|
/**
|
|
* Columns for site map queries.
|
|
*
|
|
* @hide
|
|
*/
|
|
public static final String[] SITE_MAP_COLUMNS = new String[] {
|
|
SiteMapColumns.PARENT_CLASS,
|
|
SiteMapColumns.PARENT_TITLE,
|
|
SiteMapColumns.CHILD_CLASS,
|
|
SiteMapColumns.CHILD_TITLE,
|
|
};
|
|
|
|
/**
|
|
* Indexable raw data columns indices.
|
|
*/
|
|
public static final int COLUMN_INDEX_RAW_RANK = 0;
|
|
public static final int COLUMN_INDEX_RAW_TITLE = 1;
|
|
public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2;
|
|
public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3;
|
|
public static final int COLUMN_INDEX_RAW_ENTRIES = 4;
|
|
public static final int COLUMN_INDEX_RAW_KEYWORDS = 5;
|
|
public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6;
|
|
public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7;
|
|
public static final int COLUMN_INDEX_RAW_ICON_RESID = 8;
|
|
public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9;
|
|
public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10;
|
|
public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11;
|
|
public static final int COLUMN_INDEX_RAW_KEY = 12;
|
|
public static final int COLUMN_INDEX_RAW_USER_ID = 13;
|
|
/**
|
|
* @hide
|
|
*/
|
|
public static final int COLUMN_INDEX_RAW_PAYLOAD_TYPE = 14;
|
|
/**
|
|
* @hide
|
|
*/
|
|
public static final int COLUMN_INDEX_RAW_PAYLOAD = 15;
|
|
|
|
/**
|
|
* Indexable raw data columns.
|
|
*/
|
|
public static final String[] NON_INDEXABLES_KEYS_COLUMNS = new String[] {
|
|
NonIndexableKey.COLUMN_KEY_VALUE // 0
|
|
};
|
|
|
|
/**
|
|
* Non indexable data keys columns indices.
|
|
*/
|
|
public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0;
|
|
|
|
/**
|
|
* Columns for the SliceUri and Preference Key pairs.
|
|
*/
|
|
public static final class SliceUriPairColumns {
|
|
private SliceUriPairColumns() {}
|
|
|
|
/**
|
|
* The preference key for the Setting.
|
|
*/
|
|
public static final String KEY = "key";
|
|
/**
|
|
* The Slice Uri corresponding to the Setting key.
|
|
*/
|
|
public static final String SLICE_URI = "slice_uri";
|
|
}
|
|
|
|
/**
|
|
* Cursor schema for SliceUriPairs.
|
|
*/
|
|
@NonNull
|
|
public static final String[] SLICE_URI_PAIRS_COLUMNS = new String[] {
|
|
SliceUriPairColumns.KEY,
|
|
SliceUriPairColumns.SLICE_URI
|
|
};
|
|
|
|
/**
|
|
* Constants related to a {@link SearchIndexableResource}.
|
|
*
|
|
* This is a description of
|
|
*/
|
|
public static final class XmlResource extends BaseColumns {
|
|
private XmlResource() {
|
|
}
|
|
|
|
public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE +
|
|
"/" + INDEXABLES_XML_RES;
|
|
|
|
/**
|
|
* XML resource ID for the {@link android.preference.PreferenceScreen} to load and index.
|
|
*/
|
|
public static final String COLUMN_XML_RESID = "xmlResId";
|
|
}
|
|
|
|
/**
|
|
* @hide
|
|
*/
|
|
public static final class SiteMapColumns {
|
|
public static final String PARENT_CLASS = "parent_class";
|
|
public static final String CHILD_CLASS = "child_class";
|
|
public static final String PARENT_TITLE = "parent_title";
|
|
public static final String CHILD_TITLE = "child_title";
|
|
}
|
|
|
|
/**
|
|
* Constants related to a {@link SearchIndexableData}.
|
|
*
|
|
* This is the raw data that is stored into an Index. This is related to
|
|
* {@link android.preference.Preference} and its attributes like
|
|
* {@link android.preference.Preference#getTitle()},
|
|
* {@link android.preference.Preference#getSummary()}, etc.
|
|
*/
|
|
public static final class RawData extends BaseColumns {
|
|
private RawData() {
|
|
}
|
|
|
|
public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE +
|
|
"/" + INDEXABLES_RAW;
|
|
|
|
/**
|
|
* Title's raw data.
|
|
*/
|
|
public static final String COLUMN_TITLE = "title";
|
|
|
|
/**
|
|
* Summary's raw data when the data is "ON".
|
|
*/
|
|
public static final String COLUMN_SUMMARY_ON = "summaryOn";
|
|
|
|
/**
|
|
* Summary's raw data when the data is "OFF".
|
|
*/
|
|
public static final String COLUMN_SUMMARY_OFF = "summaryOff";
|
|
|
|
/**
|
|
* Entries associated with the raw data (when the data can have several values).
|
|
*/
|
|
public static final String COLUMN_ENTRIES = "entries";
|
|
|
|
/**
|
|
* Keywords' raw data.
|
|
*/
|
|
public static final String COLUMN_KEYWORDS = "keywords";
|
|
|
|
/**
|
|
* Fragment or Activity title associated with the raw data.
|
|
*/
|
|
public static final String COLUMN_SCREEN_TITLE = "screenTitle";
|
|
|
|
/**
|
|
* Key associated with the raw data. The key needs to be unique.
|
|
*/
|
|
public static final String COLUMN_KEY = "key";
|
|
|
|
/**
|
|
* UserId associated with the raw data.
|
|
*/
|
|
public static final String COLUMN_USER_ID = "user_id";
|
|
|
|
/**
|
|
* Identifier for the Payload object type.
|
|
*
|
|
* @hide
|
|
*/
|
|
public static final String PAYLOAD_TYPE = "payload_type";
|
|
|
|
/**
|
|
* Generic payload for improving Search result expressiveness.
|
|
*
|
|
* @hide
|
|
*/
|
|
public static final String PAYLOAD = "payload";
|
|
}
|
|
|
|
/**
|
|
* Constants related to a {@link SearchIndexableResource} and {@link SearchIndexableData}.
|
|
*
|
|
* This is a description of a data (thru its unique key) that cannot be indexed.
|
|
*/
|
|
public static final class NonIndexableKey extends BaseColumns {
|
|
private NonIndexableKey() {
|
|
}
|
|
|
|
public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE +
|
|
"/" + NON_INDEXABLES_KEYS;
|
|
|
|
/**
|
|
* Key for the non indexable data.
|
|
*/
|
|
public static final String COLUMN_KEY_VALUE = "key";
|
|
}
|
|
|
|
/**
|
|
* The base columns.
|
|
*/
|
|
public static class BaseColumns {
|
|
private BaseColumns() {
|
|
}
|
|
|
|
/**
|
|
* Rank of the data. This is an integer used for ranking the search results. This is
|
|
* application specific.
|
|
*/
|
|
public static final String COLUMN_RANK = "rank";
|
|
|
|
/**
|
|
* Class name associated with the data (usually a Fragment class name).
|
|
*/
|
|
public static final String COLUMN_CLASS_NAME = "className";
|
|
|
|
/**
|
|
* Icon resource ID for the data.
|
|
*/
|
|
public static final String COLUMN_ICON_RESID = "iconResId";
|
|
|
|
/**
|
|
* Intent action associated with the data.
|
|
*/
|
|
public static final String COLUMN_INTENT_ACTION = "intentAction";
|
|
|
|
/**
|
|
* Intent target package associated with the data.
|
|
*/
|
|
public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage";
|
|
|
|
/**
|
|
* Intent target class associated with the data.
|
|
*/
|
|
public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass";
|
|
}
|
|
}
|