| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package androidx.core.content; |
| |
| import android.content.Intent; |
| import android.os.Build; |
| |
| import androidx.annotation.NonNull; |
| |
| /** |
| * Helper for accessing features in {@link android.content.Intent}. |
| */ |
| public final class IntentCompat { |
| private IntentCompat() { |
| /* Hide constructor */ |
| } |
| |
| /** |
| * A constant String that is associated with the Intent, used with |
| * {@link android.content.Intent#ACTION_SEND} to supply an alternative to |
| * {@link android.content.Intent#EXTRA_TEXT} |
| * as HTML formatted text. Note that you <em>must</em> also supply |
| * {@link android.content.Intent#EXTRA_TEXT}. |
| */ |
| public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT"; |
| |
| /** |
| * Used as a boolean extra field in {@link android.content.Intent#ACTION_VIEW} intents to |
| * indicate that content should immediately be played without any intermediate screens that |
| * require additional user input, e.g. a profile selection screen or a details page. |
| */ |
| public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK"; |
| |
| /** |
| * Indicates an activity optimized for Leanback mode, and that should |
| * be displayed in the Leanback launcher. |
| */ |
| public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER"; |
| |
| /** |
| * Make an Intent for the main activity of an application, without |
| * specifying a specific activity to run but giving a selector to find |
| * the activity. This results in a final Intent that is structured |
| * the same as when the application is launched from |
| * Home. For anything else that wants to launch an application in the |
| * same way, it is important that they use an Intent structured the same |
| * way, and can use this function to ensure this is the case. |
| * |
| * <p>The returned Intent has {@link Intent#ACTION_MAIN} as its action, and includes the |
| * category {@link Intent#CATEGORY_LAUNCHER}. This does <em>not</em> have |
| * {@link Intent#FLAG_ACTIVITY_NEW_TASK} set, though typically you will want |
| * to do that through {@link Intent#addFlags(int)} on the returned Intent. |
| * |
| * @param selectorAction The action name of the Intent's selector. |
| * @param selectorCategory The name of a category to add to the Intent's |
| * selector. |
| * @return Returns a newly created Intent that can be used to launch the |
| * activity as a main application entry. |
| */ |
| @NonNull |
| public static Intent makeMainSelectorActivity(@NonNull String selectorAction, |
| @NonNull String selectorCategory) { |
| if (Build.VERSION.SDK_INT >= 15) { |
| return Intent.makeMainSelectorActivity(selectorAction, selectorCategory); |
| } else { |
| // Before api 15 you couldn't set a selector intent. |
| // Fall back and just return an intent with the requested action/category, |
| // even though it won't be a proper "main" intent. |
| Intent intent = new Intent(selectorAction); |
| intent.addCategory(selectorCategory); |
| return intent; |
| } |
| } |
| } |