diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-01-29 16:40:57 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-01-29 16:40:57 +0000 |
| commit | 63d14042a28138c87e4bf349ae00b39cd3ca1dd4 (patch) | |
| tree | e7f6ceeca7308086506c6c87f8ddcaadd5c829b7 /core/java | |
| parent | 3fce7487c3a9b4358202285b09603a31f5e84a69 (diff) | |
| parent | 51598602e39570ef482d830eb013af44793852d5 (diff) | |
Merge "Support Slices in Settings Search"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/provider/SearchIndexablesContract.java | 42 | ||||
| -rw-r--r-- | core/java/android/provider/SearchIndexablesProvider.java | 15 |
2 files changed, 56 insertions, 1 deletions
diff --git a/core/java/android/provider/SearchIndexablesContract.java b/core/java/android/provider/SearchIndexablesContract.java index adf437cedd90..42c2d5ced806 100644 --- a/core/java/android/provider/SearchIndexablesContract.java +++ b/core/java/android/provider/SearchIndexablesContract.java @@ -81,6 +81,21 @@ public class SearchIndexablesContract { 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; + + /** * Indexable xml resources columns. */ public static final String[] INDEXABLES_XML_RES_COLUMNS = new String[] { @@ -177,6 +192,30 @@ public class SearchIndexablesContract { 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. + */ + 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 @@ -211,7 +250,6 @@ public class SearchIndexablesContract { * {@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() { @@ -262,12 +300,14 @@ public class SearchIndexablesContract { /** * 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"; diff --git a/core/java/android/provider/SearchIndexablesProvider.java b/core/java/android/provider/SearchIndexablesProvider.java index 02a5e6fd157f..1549c45478ed 100644 --- a/core/java/android/provider/SearchIndexablesProvider.java +++ b/core/java/android/provider/SearchIndexablesProvider.java @@ -17,6 +17,7 @@ package android.provider; import android.annotation.SystemApi; +import android.app.slice.Slice; import android.content.ContentProvider; import android.content.ContentValues; import android.content.Context; @@ -73,6 +74,7 @@ public abstract class SearchIndexablesProvider extends ContentProvider { private static final int MATCH_RAW_CODE = 2; private static final int MATCH_NON_INDEXABLE_KEYS_CODE = 3; private static final int MATCH_SITE_MAP_PAIRS_CODE = 4; + private static final int MATCH_SLICE_URI_PAIRS_CODE = 5; /** * Implementation is provided by the parent class. @@ -90,6 +92,8 @@ public abstract class SearchIndexablesProvider extends ContentProvider { MATCH_NON_INDEXABLE_KEYS_CODE); mMatcher.addURI(mAuthority, SearchIndexablesContract.SITE_MAP_PAIRS_PATH, MATCH_SITE_MAP_PAIRS_CODE); + mMatcher.addURI(mAuthority, SearchIndexablesContract.SLICE_URI_PAIRS_PATH, + MATCH_SLICE_URI_PAIRS_CODE); // Sanity check our setup if (!info.exported) { @@ -117,6 +121,8 @@ public abstract class SearchIndexablesProvider extends ContentProvider { return queryNonIndexableKeys(null); case MATCH_SITE_MAP_PAIRS_CODE: return querySiteMapPairs(); + case MATCH_SLICE_URI_PAIRS_CODE: + return querySliceUriPairs(); default: throw new UnsupportedOperationException("Unknown Uri " + uri); } @@ -166,6 +172,15 @@ public abstract class SearchIndexablesProvider extends ContentProvider { return null; } + /** + * Returns a {@link Cursor} linking {@link Slice} {@link Uri Uris} to the + * corresponding Settings key. + */ + public Cursor querySliceUriPairs() { + // By default no-op; + return null; + } + @Override public String getType(Uri uri) { switch (mMatcher.match(uri)) { |
