blob: 1a7295b3fbfb0365b37fb8e49babea58faa52cfd [file] [log] [blame]
/*
* 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 android.support.v4.content;
import android.content.Intent;
import android.os.Build;
/**
* 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.
*/
public static Intent makeMainSelectorActivity(String selectorAction,
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;
}
}
}