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.content.ContentResolver; 20 21 /** 22 * Describe the contract for an Indexable data. 23 * 24 * @hide 25 */ 26 public class SearchIndexablesContract { 27 28 /** 29 * Intent action used to identify {@link SearchIndexablesProvider} 30 * instances. This is used in the {@code <intent-filter>} of a {@code <provider>}. 31 */ 32 public static final String PROVIDER_INTERFACE = 33 "android.content.action.SEARCH_INDEXABLES_PROVIDER"; 34 35 private static final String SETTINGS = "settings"; 36 37 /** 38 * Indexable reference names. 39 */ 40 public static final String INDEXABLES_XML_RES = "indexables_xml_res"; 41 42 /** 43 * ContentProvider path for indexable xml resources. 44 */ 45 public static final String INDEXABLES_XML_RES_PATH = SETTINGS + "/" + INDEXABLES_XML_RES; 46 47 /** 48 * Indexable raw data names. 49 */ 50 public static final String INDEXABLES_RAW = "indexables_raw"; 51 52 /** 53 * ContentProvider path for indexable raw data. 54 */ 55 public static final String INDEXABLES_RAW_PATH = SETTINGS + "/" + INDEXABLES_RAW; 56 57 /** 58 * Non indexable data keys. 59 */ 60 public static final String NON_INDEXABLES_KEYS = "non_indexables_key"; 61 62 /** 63 * ContentProvider path for non indexable data keys. 64 */ 65 public static final String NON_INDEXABLES_KEYS_PATH = SETTINGS + "/" + NON_INDEXABLES_KEYS; 66 67 /** 68 * Indexable xml resources columns. 69 */ 70 public static final String[] INDEXABLES_XML_RES_COLUMNS = new String[] { 71 XmlResource.COLUMN_RANK, // 0 72 XmlResource.COLUMN_XML_RESID, // 1 73 XmlResource.COLUMN_CLASS_NAME, // 2 74 XmlResource.COLUMN_ICON_RESID, // 3 75 XmlResource.COLUMN_INTENT_ACTION, // 4 76 XmlResource.COLUMN_INTENT_TARGET_PACKAGE, // 5 77 XmlResource.COLUMN_INTENT_TARGET_CLASS // 6 78 }; 79 80 /** 81 * Indexable xml resources columns indices. 82 */ 83 public static final int COLUMN_INDEX_XML_RES_RANK = 0; 84 public static final int COLUMN_INDEX_XML_RES_RESID = 1; 85 public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2; 86 public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3; 87 public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4; 88 public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; 89 public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6; 90 91 /** 92 * Indexable raw data columns. 93 */ 94 public static final String[] INDEXABLES_RAW_COLUMNS = new String[] { 95 RawData.COLUMN_RANK, // 0 96 RawData.COLUMN_TITLE, // 1 97 RawData.COLUMN_SUMMARY_ON, // 2 98 RawData.COLUMN_SUMMARY_OFF, // 3 99 RawData.COLUMN_ENTRIES, // 4 100 RawData.COLUMN_KEYWORDS, // 5 101 RawData.COLUMN_SCREEN_TITLE, // 6 102 RawData.COLUMN_CLASS_NAME, // 7 103 RawData.COLUMN_ICON_RESID, // 8 104 RawData.COLUMN_INTENT_ACTION, // 9 105 RawData.COLUMN_INTENT_TARGET_PACKAGE, // 10 106 RawData.COLUMN_INTENT_TARGET_CLASS, // 11 107 RawData.COLUMN_KEY, // 12 108 RawData.COLUMN_USER_ID, // 13 109 }; 110 111 /** 112 * Indexable raw data columns indices. 113 */ 114 public static final int COLUMN_INDEX_RAW_RANK = 0; 115 public static final int COLUMN_INDEX_RAW_TITLE = 1; 116 public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; 117 public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; 118 public static final int COLUMN_INDEX_RAW_ENTRIES = 4; 119 public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; 120 public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; 121 public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; 122 public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; 123 public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; 124 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; 125 public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; 126 public static final int COLUMN_INDEX_RAW_KEY = 12; 127 public static final int COLUMN_INDEX_RAW_USER_ID = 13; 128 129 /** 130 * Indexable raw data columns. 131 */ 132 public static final String[] NON_INDEXABLES_KEYS_COLUMNS = new String[] { 133 NonIndexableKey.COLUMN_KEY_VALUE // 0 134 }; 135 136 /** 137 * Non indexable data keys columns indices. 138 */ 139 public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; 140 141 /** 142 * Constants related to a {@link SearchIndexableResource}. 143 * 144 * This is a description of 145 */ 146 public static final class XmlResource extends BaseColumns { XmlResource()147 private XmlResource() { 148 } 149 150 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 151 "/" + INDEXABLES_XML_RES; 152 153 /** 154 * XML resource ID for the {@link android.preference.PreferenceScreen} to load and index. 155 */ 156 public static final String COLUMN_XML_RESID = "xmlResId"; 157 } 158 159 /** 160 * Constants related to a {@link SearchIndexableData}. 161 * 162 * This is the raw data that is stored into an Index. This is related to 163 * {@link android.preference.Preference} and its attributes like 164 * {@link android.preference.Preference#getTitle()}, 165 * {@link android.preference.Preference#getSummary()}, etc. 166 * 167 */ 168 public static final class RawData extends BaseColumns { RawData()169 private RawData() { 170 } 171 172 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 173 "/" + INDEXABLES_RAW; 174 175 /** 176 * Title's raw data. 177 */ 178 public static final String COLUMN_TITLE = "title"; 179 180 /** 181 * Summary's raw data when the data is "ON". 182 */ 183 public static final String COLUMN_SUMMARY_ON = "summaryOn"; 184 185 /** 186 * Summary's raw data when the data is "OFF". 187 */ 188 public static final String COLUMN_SUMMARY_OFF = "summaryOff"; 189 190 /** 191 * Entries associated with the raw data (when the data can have several values). 192 */ 193 public static final String COLUMN_ENTRIES = "entries"; 194 195 /** 196 * Keywords' raw data. 197 */ 198 public static final String COLUMN_KEYWORDS = "keywords"; 199 200 /** 201 * Fragment or Activity title associated with the raw data. 202 */ 203 public static final String COLUMN_SCREEN_TITLE = "screenTitle"; 204 205 /** 206 * Key associated with the raw data. The key needs to be unique. 207 */ 208 public static final String COLUMN_KEY = "key"; 209 210 /** 211 * UserId associated with the raw data. 212 */ 213 public static final String COLUMN_USER_ID = "user_id"; 214 } 215 216 /** 217 * Constants related to a {@link SearchIndexableResource} and {@link SearchIndexableData}. 218 * 219 * This is a description of a data (thru its unique key) that cannot be indexed. 220 */ 221 public static final class NonIndexableKey extends BaseColumns { NonIndexableKey()222 private NonIndexableKey() { 223 } 224 225 public static final String MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + 226 "/" + NON_INDEXABLES_KEYS; 227 228 /** 229 * Key for the non indexable data. 230 */ 231 public static final String COLUMN_KEY_VALUE = "key"; 232 } 233 234 /** 235 * The base columns. 236 */ 237 private static class BaseColumns { BaseColumns()238 private BaseColumns() { 239 } 240 241 /** 242 * Rank of the data. This is an integer used for ranking the search results. This is 243 * application specific. 244 */ 245 public static final String COLUMN_RANK = "rank"; 246 247 /** 248 * Class name associated with the data (usually a Fragment class name). 249 */ 250 public static final String COLUMN_CLASS_NAME = "className"; 251 252 /** 253 * Icon resource ID for the data. 254 */ 255 public static final String COLUMN_ICON_RESID = "iconResId"; 256 257 /** 258 * Intent action associated with the data. 259 */ 260 public static final String COLUMN_INTENT_ACTION = "intentAction"; 261 262 /** 263 * Intent target package associated with the data. 264 */ 265 public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage"; 266 267 /** 268 * Intent target class associated with the data. 269 */ 270 public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass"; 271 } 272 } 273