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 17package android.provider; 18 19import android.annotation.SystemApi; 20import android.content.ContentResolver; 21 22/** 23 * Describe the contract for an Indexable data. 24 * 25 * @hide 26 */ 27@SystemApi 28public 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 }; 112 113 /** 114 * Indexable raw data columns indices. 115 */ 116 public static final int COLUMN_INDEX_RAW_RANK = 0; 117 public static final int COLUMN_INDEX_RAW_TITLE = 1; 118 public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; 119 public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; 120 public static final int COLUMN_INDEX_RAW_ENTRIES = 4; 121 public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; 122 public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; 123 public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; 124 public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; 125 public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; 126 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; 127 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; 128 public static final int COLUMN_INDEX_RAW_KEY = 12; 129 public static final int COLUMN_INDEX_RAW_USER_ID = 13; 130 131 /** 132 * Indexable raw data columns. 133 */ 134 public static final String[] NON_INDEXABLES_KEYS_COLUMNS = new String[] { 135 NonIndexableKey.COLUMN_KEY_VALUE // 0 136 }; 137 138 /** 139 * Non indexable data keys columns indices. 140 */ 141 public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; 142 143 /** 144 * Constants related to a {@link SearchIndexableResource}. 145 * 146 * This is a description of 147 */ 148 public static final class XmlResource extends BaseColumns { 149 private XmlResource() { 150 } 151 152 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 153 "/" + INDEXABLES_XML_RES; 154 155 /** 156 * XML resource ID for the {@link android.preference.PreferenceScreen} to load and index. 157 */ 158 public static final String COLUMN_XML_RESID = "xmlResId"; 159 } 160 161 /** 162 * Constants related to a {@link SearchIndexableData}. 163 * 164 * This is the raw data that is stored into an Index. This is related to 165 * {@link android.preference.Preference} and its attributes like 166 * {@link android.preference.Preference#getTitle()}, 167 * {@link android.preference.Preference#getSummary()}, etc. 168 * 169 */ 170 public static final class RawData extends BaseColumns { 171 private RawData() { 172 } 173 174 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 175 "/" + INDEXABLES_RAW; 176 177 /** 178 * Title's raw data. 179 */ 180 public static final String COLUMN_TITLE = "title"; 181 182 /** 183 * Summary's raw data when the data is "ON". 184 */ 185 public static final String COLUMN_SUMMARY_ON = "summaryOn"; 186 187 /** 188 * Summary's raw data when the data is "OFF". 189 */ 190 public static final String COLUMN_SUMMARY_OFF = "summaryOff"; 191 192 /** 193 * Entries associated with the raw data (when the data can have several values). 194 */ 195 public static final String COLUMN_ENTRIES = "entries"; 196 197 /** 198 * Keywords' raw data. 199 */ 200 public static final String COLUMN_KEYWORDS = "keywords"; 201 202 /** 203 * Fragment or Activity title associated with the raw data. 204 */ 205 public static final String COLUMN_SCREEN_TITLE = "screenTitle"; 206 207 /** 208 * Key associated with the raw data. The key needs to be unique. 209 */ 210 public static final String COLUMN_KEY = "key"; 211 212 /** 213 * UserId associated with the raw data. 214 */ 215 public static final String COLUMN_USER_ID = "user_id"; 216 } 217 218 /** 219 * Constants related to a {@link SearchIndexableResource} and {@link SearchIndexableData}. 220 * 221 * This is a description of a data (thru its unique key) that cannot be indexed. 222 */ 223 public static final class NonIndexableKey extends BaseColumns { 224 private NonIndexableKey() { 225 } 226 227 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 228 "/" + NON_INDEXABLES_KEYS; 229 230 /** 231 * Key for the non indexable data. 232 */ 233 public static final String COLUMN_KEY_VALUE = "key"; 234 } 235 236 /** 237 * The base columns. 238 */ 239 public static class BaseColumns { 240 private BaseColumns() { 241 } 242 243 /** 244 * Rank of the data. This is an integer used for ranking the search results. This is 245 * application specific. 246 */ 247 public static final String COLUMN_RANK = "rank"; 248 249 /** 250 * Class name associated with the data (usually a Fragment class name). 251 */ 252 public static final String COLUMN_CLASS_NAME = "className"; 253 254 /** 255 * Icon resource ID for the data. 256 */ 257 public static final String COLUMN_ICON_RESID = "iconResId"; 258 259 /** 260 * Intent action associated with the data. 261 */ 262 public static final String COLUMN_INTENT_ACTION = "intentAction"; 263 264 /** 265 * Intent target package associated with the data. 266 */ 267 public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage"; 268 269 /** 270 * Intent target class associated with the data. 271 */ 272 public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass"; 273 } 274} 275