ActivityInfo.java revision 69cb87576ba163b61bb0e6477a3b7c57a9b11d40
115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/*
215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2007 The Android Open Source Project
315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License");
515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License.
615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at
715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *      http://www.apache.org/licenses/LICENSE-2.0
915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software
1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS,
1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and
1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License.
1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */
1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Printer;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about a particular application
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * activity or receiver. This corresponds to information collected
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * from the AndroidManifest.xml's <activity> and
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <receiver> tags.
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ActivityInfo extends ComponentInfo
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        implements Parcelable {
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A style resource identifier (in the package's resources) of this
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * activity's theme.  From the "theme" attribute or, if not set, 0.
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int theme;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>standard</code> in
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#launchMode} attribute.
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int LAUNCH_MULTIPLE = 0;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>singleTop</code> in
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#launchMode} attribute.
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int LAUNCH_SINGLE_TOP = 1;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>singleTask</code> in
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#launchMode} attribute.
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int LAUNCH_SINGLE_TASK = 2;
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>singleInstance</code> in
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#launchMode} attribute.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int LAUNCH_SINGLE_INSTANCE = 3;
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The launch mode style requested by the activity.  From the
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#launchMode} attribute, one of
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #LAUNCH_MULTIPLE},
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #LAUNCH_SINGLE_TOP}, {@link #LAUNCH_SINGLE_TASK}, or
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #LAUNCH_SINGLE_INSTANCE}.
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int launchMode;
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Optional name of a permission required to be able to access this
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Activity.  From the "permission" attribute.
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String permission;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The affinity this activity has for another task in the system.  The
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * string here is the name of the task, often the package name of the
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * overall package.  If null, the activity has no affinity.  Set from the
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#taskAffinity} attribute.
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String taskAffinity;
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If this is an activity alias, this is the real activity class to run
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for it.  Otherwise, this is null.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String targetActivity;
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} indicating whether this activity is able to
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * run in multiple processes.  If
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * true, the system may instantiate it in the some process as the
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process starting it in order to conserve resources.  If false, the
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default, it always runs in {@link #processName}.  Set from the
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#multiprocess} attribute.
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_MULTIPROCESS = 0x0001;
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} indicating that, when the activity's task is
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * relaunched from home, this activity should be finished.
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set from the
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#finishOnTaskLaunch} attribute.
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_FINISH_ON_TASK_LAUNCH = 0x0002;
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} indicating that, when the activity is the root
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of a task, that task's stack should be cleared each time the user
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * re-launches it from home.  As a result, the user will always
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * return to the original activity at the top of the task.
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This flag only applies to activities that
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are used to start the root of a new task.  Set from the
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#clearTaskOnLaunch} attribute.
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_CLEAR_TASK_ON_LAUNCH = 0x0004;
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} indicating that, when the activity is the root
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of a task, that task's stack should never be cleared when it is
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * relaunched from home.  Set from the
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#alwaysRetainTaskState} attribute.
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_ALWAYS_RETAIN_TASK_STATE = 0x0008;
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} indicating that the activity's state
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is not required to be saved, so that if there is a failure the
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * activity will not be removed from the activity stack.  Set from the
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#stateNotNeeded} attribute.
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_STATE_NOT_NEEDED = 0x0010;
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} that indicates that the activity should not
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * appear in the list of recently launched activities.  Set from the
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#excludeFromRecents} attribute.
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_EXCLUDE_FROM_RECENTS = 0x0020;
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} that indicates that the activity can be moved
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * between tasks based on its task affinity.  Set from the
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#allowTaskReparenting} attribute.
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_ALLOW_TASK_REPARENTING = 0x0040;
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #flags} indicating that, when the user navigates away
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * from an activity, it should be finished.
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set from the
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#noHistory} attribute.
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int FLAG_NO_HISTORY = 0x0080;
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
146ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn     * Bit in {@link #flags} indicating that, when a request to close system
147ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn     * windows happens, this activity is finished.
148ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn     * Set from the
149ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn     * {@link android.R.attr#finishOnCloseSystemDialogs} attribute.
150ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn     */
151ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn    public static final int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS = 0x0100;
152327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn    /**
153327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn     * Value for {@link #flags}: true when the application's rendering should
154327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn     * be hardware accelerated.
155327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn     */
156327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn    public static final int FLAG_HARDWARE_ACCELERATED = 0x0200;
157327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn    /**
158327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn     * @hide
159613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * Bit in {@link #flags} corresponding to an immersive activity
160613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * that wishes not to be interrupted by notifications.
161613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * Applications that hide the system notification bar with
162613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}
163613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * may still be interrupted by high-priority notifications; for example, an
164613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * incoming phone call may use
1658091ca5015b2a9f591ad7d3ee5ec832c16cf5548Daniel Sandler     * {@link android.app.Notification#fullScreenIntent fullScreenIntent}
166613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * to present a full-screen in-call activity to the user, pausing the
167613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * current activity as a side-effect. An activity with
168613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * {@link #FLAG_IMMERSIVE} set, however, will not be interrupted; the
169613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * notification may be shown in some other way (such as a small floating
170613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * "toast" window).
171613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * {@see android.app.Notification#FLAG_HIGH_PRIORITY}
172613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     */
173327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn    public static final int FLAG_IMMERSIVE = 0x0400;
174529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    /**
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Options that have been set in the activity declaration in the
176613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * manifest.
177613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * These include:
178613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * {@link #FLAG_MULTIPROCESS},
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #FLAG_FINISH_ON_TASK_LAUNCH}, {@link #FLAG_CLEAR_TASK_ON_LAUNCH},
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #FLAG_ALWAYS_RETAIN_TASK_STATE},
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #FLAG_STATE_NOT_NEEDED}, {@link #FLAG_EXCLUDE_FROM_RECENTS},
182ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn     * {@link #FLAG_ALLOW_TASK_REPARENTING}, {@link #FLAG_NO_HISTORY},
183613dde4aa651e11dac3db859723cc6faf8fc0a82Daniel Sandler     * {@link #FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS},
184327fbd2c8fa294b919475feb4c74a74ee1981e02Dianne Hackborn     * {@link #FLAG_HARDWARE_ACCELERATED}
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int flags;
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>unspecified</code> in
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_UNSPECIFIED = -1;
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>landscape</code> in
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_LANDSCAPE = 0;
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>portrait</code> in
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_PORTRAIT = 1;
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>user</code> in
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_USER = 2;
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>behind</code> in
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_BEHIND = 3;
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constant corresponding to <code>sensor</code> in
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_SENSOR = 4;
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
220e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * Constant corresponding to <code>nosensor</code> in
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.R.attr#screenOrientation} attribute.
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SCREEN_ORIENTATION_NOSENSOR = 5;
224e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn
225e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    /**
226e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * Constant corresponding to <code>sensorLandscape</code> in
227e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * the {@link android.R.attr#screenOrientation} attribute.
228e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     */
229e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;
230e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn
231e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    /**
232e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * Constant corresponding to <code>sensorPortrait</code> in
233e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * the {@link android.R.attr#screenOrientation} attribute.
234e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     */
235e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    public static final int SCREEN_ORIENTATION_SENSOR_PORTRAIT = 7;
236e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn
237e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    /**
238e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * Constant corresponding to <code>reverseLandscape</code> in
239e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * the {@link android.R.attr#screenOrientation} attribute.
240e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     */
241e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    public static final int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
242e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn
243e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    /**
244e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * Constant corresponding to <code>reversePortrait</code> in
245e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * the {@link android.R.attr#screenOrientation} attribute.
246e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     */
247e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    public static final int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;
248e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn
249e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    /**
250e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * Constant corresponding to <code>fullSensor</code> in
251e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * the {@link android.R.attr#screenOrientation} attribute.
252e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     */
253e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn    public static final int SCREEN_ORIENTATION_FULL_SENSOR = 10;
254e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The preferred screen orientation this activity would like to run in.
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * From the {@link android.R.attr#screenOrientation} attribute, one of
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #SCREEN_ORIENTATION_UNSPECIFIED},
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #SCREEN_ORIENTATION_LANDSCAPE},
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #SCREEN_ORIENTATION_PORTRAIT},
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #SCREEN_ORIENTATION_USER},
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #SCREEN_ORIENTATION_BEHIND},
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #SCREEN_ORIENTATION_SENSOR},
264e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * {@link #SCREEN_ORIENTATION_NOSENSOR},
265e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * {@link #SCREEN_ORIENTATION_SENSOR_LANDSCAPE},
266e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * {@link #SCREEN_ORIENTATION_SENSOR_PORTRAIT},
267e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * {@link #SCREEN_ORIENTATION_REVERSE_LANDSCAPE},
268e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * {@link #SCREEN_ORIENTATION_REVERSE_PORTRAIT},
269e5439f228f603f60febe058f633d91d5af2fff76Dianne Hackborn     * {@link #SCREEN_ORIENTATION_FULL_SENSOR}.
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int screenOrientation = SCREEN_ORIENTATION_UNSPECIFIED;
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the IMSI MCC.  Set from the
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_MCC = 0x0001;
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the IMSI MNC.  Set from the
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_MNC = 0x0002;
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the locale.  Set from the
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_LOCALE = 0x0004;
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the touchscreen type.  Set from the
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_TOUCHSCREEN = 0x0008;
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the keyboard type.  Set from the
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_KEYBOARD = 0x0010;
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
30593e462b79d6896da10e15e74c5aec6beb098dddfDianne Hackborn     * can itself handle changes to the keyboard or navigation being hidden/exposed.
30693e462b79d6896da10e15e74c5aec6beb098dddfDianne Hackborn     * Note that inspite of the name, this applies to the changes to any
30793e462b79d6896da10e15e74c5aec6beb098dddfDianne Hackborn     * hidden states: keyboard or navigation.
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set from the {@link android.R.attr#configChanges} attribute.
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_KEYBOARD_HIDDEN = 0x0020;
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the navigation type.  Set from the
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_NAVIGATION = 0x0040;
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the screen orientation.  Set from the
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_ORIENTATION = 0x0080;
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit in {@link #configChanges} that indicates that the activity
325723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn     * can itself handle changes to the screen layout.  Set from the
326723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn     * {@link android.R.attr#configChanges} attribute.
327723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn     */
328723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn    public static final int CONFIG_SCREEN_LAYOUT = 0x0100;
329723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn    /**
330723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn     * Bit in {@link #configChanges} that indicates that the activity
33127b28b3f62bd3b54fa13acd5d035940b9be464f3Tobias Haamel     * can itself handle the ui mode. Set from the
33227b28b3f62bd3b54fa13acd5d035940b9be464f3Tobias Haamel     * {@link android.R.attr#configChanges} attribute.
33327b28b3f62bd3b54fa13acd5d035940b9be464f3Tobias Haamel     */
33427b28b3f62bd3b54fa13acd5d035940b9be464f3Tobias Haamel    public static final int CONFIG_UI_MODE = 0x0200;
33527b28b3f62bd3b54fa13acd5d035940b9be464f3Tobias Haamel    /**
33627b28b3f62bd3b54fa13acd5d035940b9be464f3Tobias Haamel     * Bit in {@link #configChanges} that indicates that the activity
337ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * can itself handle the screen size. Set from the
338ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * {@link android.R.attr#configChanges} attribute.
339ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     */
340ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    public static final int CONFIG_SCREEN_SIZE = 0x0400;
341ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    /**
342ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * Bit in {@link #configChanges} that indicates that the activity
34369cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn     * can itself handle the smallest screen size. Set from the
34469cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn     * {@link android.R.attr#configChanges} attribute.
34569cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn     */
34669cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn    public static final int CONFIG_SMALLEST_SCREEN_SIZE = 0x0800;
34769cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn    /**
34869cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn     * Bit in {@link #configChanges} that indicates that the activity
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can itself handle changes to the font scaling factor.  Set from the
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.  This is
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not a core resource configutation, but a higher-level value, so its
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * constant starts at the high bits.
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONFIG_FONT_SCALE = 0x40000000;
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
356ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    /** @hide
357ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * Unfortunately the constants for config changes in native code are
358ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * different from ActivityInfo. :(  Here are the values we should use for the
359ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * native side given the bit we have assigned in ActivityInfo.
360ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     */
361ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    public static int[] CONFIG_NATIVE_BITS = new int[] {
362ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0001, // MNC
363ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0002, // MCC
364ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0004, // LOCALE
365ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0008, // TOUCH SCREEN
366ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0010, // KEYBOARD
367ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0020, // KEYBOARD HIDDEN
368ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0040, // NAVIGATION
369ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0080, // ORIENTATION
370ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0800, // SCREEN LAYOUT
371ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x1000, // UI MODE
372ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        0x0200, // SCREEN SIZE
37369cb87576ba163b61bb0e6477a3b7c57a9b11d40Dianne Hackborn        0x2000, // SMALLEST SCREEN SIZE
374ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    };
375ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    /** @hide
376ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     * Convert Java change bits to native.
377ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn     */
378ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    public static int activityInfoConfigToNative(int input) {
379ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        int output = 0;
380ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        for (int i=0; i<CONFIG_NATIVE_BITS.length; i++) {
381ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn            if ((input&(1<<i)) != 0) {
382ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn                output |= CONFIG_NATIVE_BITS[i];
383ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn            }
384ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        }
385ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn        return output;
386ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn    }
387ebff8f92f13513ce37bd74759eb1db63f2220590Dianne Hackborn
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bit mask of kinds of configuration changes that this activity
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can handle itself (without being restarted by the system).
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Contains any combination of {@link #CONFIG_FONT_SCALE},
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #CONFIG_MCC}, {@link #CONFIG_MNC},
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #CONFIG_LOCALE}, {@link #CONFIG_TOUCHSCREEN},
394723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn     * {@link #CONFIG_KEYBOARD}, {@link #CONFIG_NAVIGATION},
395723738cfaec3dd7b0fe152c872c41bebf94074c4Dianne Hackborn     * {@link #CONFIG_ORIENTATION}, and {@link #CONFIG_SCREEN_LAYOUT}.  Set from the
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.attr#configChanges} attribute.
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int configChanges;
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The desired soft input mode for this activity's main window.
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set from the {@link android.R.attr#windowSoftInputMode} attribute
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in the activity's manifest.  May be any of the same values allowed
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for {@link android.view.WindowManager.LayoutParams#softInputMode
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * WindowManager.LayoutParams.softInputMode}.  If 0 (unspecified),
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the mode from the theme will be used.
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int softInputMode;
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ActivityInfo() {
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ActivityInfo(ActivityInfo orig) {
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(orig);
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        theme = orig.theme;
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        launchMode = orig.launchMode;
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        permission = orig.permission;
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        taskAffinity = orig.taskAffinity;
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        targetActivity = orig.targetActivity;
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        flags = orig.flags;
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        screenOrientation = orig.screenOrientation;
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        configChanges = orig.configChanges;
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        softInputMode = orig.softInputMode;
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the theme resource identifier to use for this activity.  If
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the activity defines a theme, that is used; else, the application
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * theme is used.
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The theme associated with this activity.
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final int getThemeResource() {
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return theme != 0 ? theme : applicationInfo.theme;
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void dump(Printer pw, String prefix) {
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.dumpFront(pw, prefix);
43912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (permission != null) {
44012527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn            pw.println(prefix + "permission=" + permission);
44112527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        pw.println(prefix + "taskAffinity=" + taskAffinity
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + " targetActivity=" + targetActivity);
44412527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (launchMode != 0 || flags != 0 || theme != 0) {
44512527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn            pw.println(prefix + "launchMode=" + launchMode
44612527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn                    + " flags=0x" + Integer.toHexString(flags)
44712527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn                    + " theme=0x" + Integer.toHexString(theme));
44812527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
44912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (screenOrientation != SCREEN_ORIENTATION_UNSPECIFIED
45012527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn                || configChanges != 0 || softInputMode != 0) {
45112527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn            pw.println(prefix + "screenOrientation=" + screenOrientation
45212527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn                    + " configChanges=0x" + Integer.toHexString(configChanges)
45312527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn                    + " softInputMode=0x" + Integer.toHexString(softInputMode));
45412527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.dumpBack(pw, prefix);
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "ActivityInfo{"
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + Integer.toHexString(System.identityHashCode(this))
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + " " + name + "}";
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int parcelableFlags) {
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.writeToParcel(dest, parcelableFlags);
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(theme);
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(launchMode);
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(permission);
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(taskAffinity);
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(targetActivity);
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(flags);
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(screenOrientation);
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(configChanges);
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(softInputMode);
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Parcelable.Creator<ActivityInfo> CREATOR
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            = new Parcelable.Creator<ActivityInfo>() {
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ActivityInfo createFromParcel(Parcel source) {
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new ActivityInfo(source);
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ActivityInfo[] newArray(int size) {
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new ActivityInfo[size];
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ActivityInfo(Parcel source) {
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(source);
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        theme = source.readInt();
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        launchMode = source.readInt();
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        permission = source.readString();
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        taskAffinity = source.readString();
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        targetActivity = source.readString();
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        flags = source.readInt();
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        screenOrientation = source.readInt();
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        configChanges = source.readInt();
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        softInputMode = source.readInt();
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
504