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 * ContentProvider path for non indexable data keys. 66 */ 67 public static final String NON_INDEXABLES_KEYS_PATH = SETTINGS + "/" + NON_INDEXABLES_KEYS; 68 69 /** 70 * Indexable xml resources columns. 71 */ 72 public static final String[] INDEXABLES_XML_RES_COLUMNS = new String[] { 73 XmlResource.COLUMN_RANK, // 0 74 XmlResource.COLUMN_XML_RESID, // 1 75 XmlResource.COLUMN_CLASS_NAME, // 2 76 XmlResource.COLUMN_ICON_RESID, // 3 77 XmlResource.COLUMN_INTENT_ACTION, // 4 78 XmlResource.COLUMN_INTENT_TARGET_PACKAGE, // 5 79 XmlResource.COLUMN_INTENT_TARGET_CLASS // 6 80 }; 81 82 /** 83 * Indexable xml resources columns indices. 84 */ 85 public static final int COLUMN_INDEX_XML_RES_RANK = 0; 86 public static final int COLUMN_INDEX_XML_RES_RESID = 1; 87 public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2; 88 public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3; 89 public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4; 90 public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; 91 public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6; 92 93 /** 94 * Indexable raw data columns. 95 */ 96 public static final String[] INDEXABLES_RAW_COLUMNS = new String[] { 97 RawData.COLUMN_RANK, // 0 98 RawData.COLUMN_TITLE, // 1 99 RawData.COLUMN_SUMMARY_ON, // 2 100 RawData.COLUMN_SUMMARY_OFF, // 3 101 RawData.COLUMN_ENTRIES, // 4 102 RawData.COLUMN_KEYWORDS, // 5 103 RawData.COLUMN_SCREEN_TITLE, // 6 104 RawData.COLUMN_CLASS_NAME, // 7 105 RawData.COLUMN_ICON_RESID, // 8 106 RawData.COLUMN_INTENT_ACTION, // 9 107 RawData.COLUMN_INTENT_TARGET_PACKAGE, // 10 108 RawData.COLUMN_INTENT_TARGET_CLASS, // 11 109 RawData.COLUMN_KEY, // 12 110 RawData.COLUMN_USER_ID, // 13 111 RawData.PAYLOAD_TYPE, // 14 112 RawData.PAYLOAD // 15 113 }; 114 115 /** 116 * Indexable raw data columns indices. 117 */ 118 public static final int COLUMN_INDEX_RAW_RANK = 0; 119 public static final int COLUMN_INDEX_RAW_TITLE = 1; 120 public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; 121 public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; 122 public static final int COLUMN_INDEX_RAW_ENTRIES = 4; 123 public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; 124 public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; 125 public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; 126 public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; 127 public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; 128 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; 129 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; 130 public static final int COLUMN_INDEX_RAW_KEY = 12; 131 public static final int COLUMN_INDEX_RAW_USER_ID = 13; 132 /** 133 * @hide 134 */ 135 public static final int COLUMN_INDEX_RAW_PAYLOAD_TYPE = 14; 136 /** 137 * @hide 138 */ 139 public static final int COLUMN_INDEX_RAW_PAYLOAD = 15; 140 141 /** 142 * Indexable raw data columns. 143 */ 144 public static final String[] NON_INDEXABLES_KEYS_COLUMNS = new String[] { 145 NonIndexableKey.COLUMN_KEY_VALUE // 0 146 }; 147 148 /** 149 * Non indexable data keys columns indices. 150 */ 151 public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; 152 153 /** 154 * Constants related to a {@link SearchIndexableResource}. 155 * 156 * This is a description of 157 */ 158 public static final class XmlResource extends BaseColumns { XmlResource()159 private XmlResource() { 160 } 161 162 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 163 "/" + INDEXABLES_XML_RES; 164 165 /** 166 * XML resource ID for the {@link android.preference.PreferenceScreen} to load and index. 167 */ 168 public static final String COLUMN_XML_RESID = "xmlResId"; 169 } 170 171 /** 172 * Constants related to a {@link SearchIndexableData}. 173 * 174 * This is the raw data that is stored into an Index. This is related to 175 * {@link android.preference.Preference} and its attributes like 176 * {@link android.preference.Preference#getTitle()}, 177 * {@link android.preference.Preference#getSummary()}, etc. 178 * 179 */ 180 public static final class RawData extends BaseColumns { RawData()181 private RawData() { 182 } 183 184 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 185 "/" + INDEXABLES_RAW; 186 187 /** 188 * Title's raw data. 189 */ 190 public static final String COLUMN_TITLE = "title"; 191 192 /** 193 * Summary's raw data when the data is "ON". 194 */ 195 public static final String COLUMN_SUMMARY_ON = "summaryOn"; 196 197 /** 198 * Summary's raw data when the data is "OFF". 199 */ 200 public static final String COLUMN_SUMMARY_OFF = "summaryOff"; 201 202 /** 203 * Entries associated with the raw data (when the data can have several values). 204 */ 205 public static final String COLUMN_ENTRIES = "entries"; 206 207 /** 208 * Keywords' raw data. 209 */ 210 public static final String COLUMN_KEYWORDS = "keywords"; 211 212 /** 213 * Fragment or Activity title associated with the raw data. 214 */ 215 public static final String COLUMN_SCREEN_TITLE = "screenTitle"; 216 217 /** 218 * Key associated with the raw data. The key needs to be unique. 219 */ 220 public static final String COLUMN_KEY = "key"; 221 222 /** 223 * UserId associated with the raw data. 224 */ 225 public static final String COLUMN_USER_ID = "user_id"; 226 227 /** 228 * Identifier for the Payload object type. 229 * @hide 230 */ 231 public static final String PAYLOAD_TYPE = "payload_type"; 232 233 /** 234 * Generic payload for improving Search result expressiveness. 235 * @hide 236 */ 237 public static final String PAYLOAD = "payload"; 238 } 239 240 /** 241 * Constants related to a {@link SearchIndexableResource} and {@link SearchIndexableData}. 242 * 243 * This is a description of a data (thru its unique key) that cannot be indexed. 244 */ 245 public static final class NonIndexableKey extends BaseColumns { NonIndexableKey()246 private NonIndexableKey() { 247 } 248 249 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 250 "/" + NON_INDEXABLES_KEYS; 251 252 /** 253 * Key for the non indexable data. 254 */ 255 public static final String COLUMN_KEY_VALUE = "key"; 256 } 257 258 /** 259 * The base columns. 260 */ 261 public static class BaseColumns { BaseColumns()262 private BaseColumns() { 263 } 264 265 /** 266 * Rank of the data. This is an integer used for ranking the search results. This is 267 * application specific. 268 */ 269 public static final String COLUMN_RANK = "rank"; 270 271 /** 272 * Class name associated with the data (usually a Fragment class name). 273 */ 274 public static final String COLUMN_CLASS_NAME = "className"; 275 276 /** 277 * Icon resource ID for the data. 278 */ 279 public static final String COLUMN_ICON_RESID = "iconResId"; 280 281 /** 282 * Intent action associated with the data. 283 */ 284 public static final String COLUMN_INTENT_ACTION = "intentAction"; 285 286 /** 287 * Intent target package associated with the data. 288 */ 289 public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage"; 290 291 /** 292 * Intent target class associated with the data. 293 */ 294 public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass"; 295 } 296 } 297