1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.provider; 18 19 import android.annotation.SystemApi; 20 import android.content.ContentResolver; 21 22 /** 23 * Describe the contract for an Indexable data. 24 * 25 * @hide 26 */ 27 @SystemApi 28 public class SearchIndexablesContract { 29 30 /** 31 * Intent action used to identify {@link SearchIndexablesProvider} 32 * instances. This is used in the {@code <intent-filter>} of a {@code <provider>}. 33 */ 34 public static final String PROVIDER_INTERFACE = 35 "android.content.action.SEARCH_INDEXABLES_PROVIDER"; 36 37 private static final String SETTINGS = "settings"; 38 39 /** 40 * Indexable reference names. 41 */ 42 public static final String INDEXABLES_XML_RES = "indexables_xml_res"; 43 44 /** 45 * ContentProvider path for indexable xml resources. 46 */ 47 public static final String INDEXABLES_XML_RES_PATH = SETTINGS + "/" + INDEXABLES_XML_RES; 48 49 /** 50 * Indexable raw data names. 51 */ 52 public static final String INDEXABLES_RAW = "indexables_raw"; 53 54 /** 55 * ContentProvider path for indexable raw data. 56 */ 57 public static final String INDEXABLES_RAW_PATH = SETTINGS + "/" + INDEXABLES_RAW; 58 59 /** 60 * Non indexable data keys. 61 */ 62 public static final String NON_INDEXABLES_KEYS = "non_indexables_key"; 63 64 /** 65 * Site map pairs data key 66 * 67 * @hide 68 */ 69 public static final String SITE_MAP_PAIRS_KEYS = "site_map_pairs"; 70 71 /** 72 * ContentProvider path for non indexable data keys. 73 */ 74 public static final String NON_INDEXABLES_KEYS_PATH = SETTINGS + "/" + NON_INDEXABLES_KEYS; 75 76 /** 77 * ContentProvider path for sitemap keys. 78 * 79 * @hide 80 */ 81 public static final String SITE_MAP_PAIRS_PATH = SETTINGS + "/" + SITE_MAP_PAIRS_KEYS; 82 83 /** 84 * Indexable xml resources columns. 85 */ 86 public static final String[] INDEXABLES_XML_RES_COLUMNS = new String[] { 87 XmlResource.COLUMN_RANK, // 0 88 XmlResource.COLUMN_XML_RESID, // 1 89 XmlResource.COLUMN_CLASS_NAME, // 2 90 XmlResource.COLUMN_ICON_RESID, // 3 91 XmlResource.COLUMN_INTENT_ACTION, // 4 92 XmlResource.COLUMN_INTENT_TARGET_PACKAGE, // 5 93 XmlResource.COLUMN_INTENT_TARGET_CLASS // 6 94 }; 95 96 /** 97 * Indexable xml resources columns indices. 98 */ 99 public static final int COLUMN_INDEX_XML_RES_RANK = 0; 100 public static final int COLUMN_INDEX_XML_RES_RESID = 1; 101 public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2; 102 public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3; 103 public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4; 104 public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; 105 public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6; 106 107 /** 108 * Indexable raw data columns. 109 */ 110 public static final String[] INDEXABLES_RAW_COLUMNS = new String[] { 111 RawData.COLUMN_RANK, // 0 112 RawData.COLUMN_TITLE, // 1 113 RawData.COLUMN_SUMMARY_ON, // 2 114 RawData.COLUMN_SUMMARY_OFF, // 3 115 RawData.COLUMN_ENTRIES, // 4 116 RawData.COLUMN_KEYWORDS, // 5 117 RawData.COLUMN_SCREEN_TITLE, // 6 118 RawData.COLUMN_CLASS_NAME, // 7 119 RawData.COLUMN_ICON_RESID, // 8 120 RawData.COLUMN_INTENT_ACTION, // 9 121 RawData.COLUMN_INTENT_TARGET_PACKAGE, // 10 122 RawData.COLUMN_INTENT_TARGET_CLASS, // 11 123 RawData.COLUMN_KEY, // 12 124 RawData.COLUMN_USER_ID, // 13 125 RawData.PAYLOAD_TYPE, // 14 126 RawData.PAYLOAD // 15 127 }; 128 129 /** 130 * Columns for site map queries. 131 * 132 * @hide 133 */ 134 public static final String[] SITE_MAP_COLUMNS = new String[] { 135 SiteMapColumns.PARENT_CLASS, 136 SiteMapColumns.PARENT_TITLE, 137 SiteMapColumns.CHILD_CLASS, 138 SiteMapColumns.CHILD_TITLE, 139 }; 140 141 /** 142 * Indexable raw data columns indices. 143 */ 144 public static final int COLUMN_INDEX_RAW_RANK = 0; 145 public static final int COLUMN_INDEX_RAW_TITLE = 1; 146 public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; 147 public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; 148 public static final int COLUMN_INDEX_RAW_ENTRIES = 4; 149 public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; 150 public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; 151 public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; 152 public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; 153 public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; 154 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; 155 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; 156 public static final int COLUMN_INDEX_RAW_KEY = 12; 157 public static final int COLUMN_INDEX_RAW_USER_ID = 13; 158 /** 159 * @hide 160 */ 161 public static final int COLUMN_INDEX_RAW_PAYLOAD_TYPE = 14; 162 /** 163 * @hide 164 */ 165 public static final int COLUMN_INDEX_RAW_PAYLOAD = 15; 166 167 /** 168 * Indexable raw data columns. 169 */ 170 public static final String[] NON_INDEXABLES_KEYS_COLUMNS = new String[] { 171 NonIndexableKey.COLUMN_KEY_VALUE // 0 172 }; 173 174 /** 175 * Non indexable data keys columns indices. 176 */ 177 public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; 178 179 /** 180 * Constants related to a {@link SearchIndexableResource}. 181 * 182 * This is a description of 183 */ 184 public static final class XmlResource extends BaseColumns { XmlResource()185 private XmlResource() { 186 } 187 188 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 189 "/" + INDEXABLES_XML_RES; 190 191 /** 192 * XML resource ID for the {@link android.preference.PreferenceScreen} to load and index. 193 */ 194 public static final String COLUMN_XML_RESID = "xmlResId"; 195 } 196 197 /** 198 * @hide 199 */ 200 public static final class SiteMapColumns { 201 public static final String PARENT_CLASS = "parent_class"; 202 public static final String CHILD_CLASS = "child_class"; 203 public static final String PARENT_TITLE = "parent_title"; 204 public static final String CHILD_TITLE = "child_title"; 205 } 206 207 /** 208 * Constants related to a {@link SearchIndexableData}. 209 * 210 * This is the raw data that is stored into an Index. This is related to 211 * {@link android.preference.Preference} and its attributes like 212 * {@link android.preference.Preference#getTitle()}, 213 * {@link android.preference.Preference#getSummary()}, etc. 214 * 215 */ 216 public static final class RawData extends BaseColumns { RawData()217 private RawData() { 218 } 219 220 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 221 "/" + INDEXABLES_RAW; 222 223 /** 224 * Title's raw data. 225 */ 226 public static final String COLUMN_TITLE = "title"; 227 228 /** 229 * Summary's raw data when the data is "ON". 230 */ 231 public static final String COLUMN_SUMMARY_ON = "summaryOn"; 232 233 /** 234 * Summary's raw data when the data is "OFF". 235 */ 236 public static final String COLUMN_SUMMARY_OFF = "summaryOff"; 237 238 /** 239 * Entries associated with the raw data (when the data can have several values). 240 */ 241 public static final String COLUMN_ENTRIES = "entries"; 242 243 /** 244 * Keywords' raw data. 245 */ 246 public static final String COLUMN_KEYWORDS = "keywords"; 247 248 /** 249 * Fragment or Activity title associated with the raw data. 250 */ 251 public static final String COLUMN_SCREEN_TITLE = "screenTitle"; 252 253 /** 254 * Key associated with the raw data. The key needs to be unique. 255 */ 256 public static final String COLUMN_KEY = "key"; 257 258 /** 259 * UserId associated with the raw data. 260 */ 261 public static final String COLUMN_USER_ID = "user_id"; 262 263 /** 264 * Identifier for the Payload object type. 265 * @hide 266 */ 267 public static final String PAYLOAD_TYPE = "payload_type"; 268 269 /** 270 * Generic payload for improving Search result expressiveness. 271 * @hide 272 */ 273 public static final String PAYLOAD = "payload"; 274 } 275 276 /** 277 * Constants related to a {@link SearchIndexableResource} and {@link SearchIndexableData}. 278 * 279 * This is a description of a data (thru its unique key) that cannot be indexed. 280 */ 281 public static final class NonIndexableKey extends BaseColumns { NonIndexableKey()282 private NonIndexableKey() { 283 } 284 285 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 286 "/" + NON_INDEXABLES_KEYS; 287 288 /** 289 * Key for the non indexable data. 290 */ 291 public static final String COLUMN_KEY_VALUE = "key"; 292 } 293 294 /** 295 * The base columns. 296 */ 297 public static class BaseColumns { BaseColumns()298 private BaseColumns() { 299 } 300 301 /** 302 * Rank of the data. This is an integer used for ranking the search results. This is 303 * application specific. 304 */ 305 public static final String COLUMN_RANK = "rank"; 306 307 /** 308 * Class name associated with the data (usually a Fragment class name). 309 */ 310 public static final String COLUMN_CLASS_NAME = "className"; 311 312 /** 313 * Icon resource ID for the data. 314 */ 315 public static final String COLUMN_ICON_RESID = "iconResId"; 316 317 /** 318 * Intent action associated with the data. 319 */ 320 public static final String COLUMN_INTENT_ACTION = "intentAction"; 321 322 /** 323 * Intent target package associated with the data. 324 */ 325 public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage"; 326 327 /** 328 * Intent target class associated with the data. 329 */ 330 public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass"; 331 } 332 } 333