Context.java revision 556b09e184b891d9542092962ed248616810e054
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
195c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackbornimport android.content.pm.ApplicationInfo;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.PackageManager;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetManager;
22756220bd1912535840388a6743830d2e59ad4964Dianne Hackbornimport android.content.res.Configuration;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Resources;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.TypedArray;
2574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Noriimport android.database.DatabaseErrorHandler;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase.CursorFactory;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Bitmap;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.drawable.Drawable;
30ac695c608ba620e2362f57126d7be453cf5b7e1bAdam Powellimport android.media.MediaScannerConnection.OnScanCompletedListener;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Looper;
3579af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackbornimport android.os.UserHandle;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
3798365d7663cbd82979a5700faf0050220b01084dJeff Brownimport android.view.CompatibilityInfoHolder;
38a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.Display;
39a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.WindowManager;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileInputStream;
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException;
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileOutputStream;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface to global information about an application environment.  This is
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an abstract class whose implementation is provided by
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Android system.  It
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * allows access to application-specific resources and classes, as well as
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * up-calls for application-level operations such as launching activities,
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcasting and receiving intents, etc.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class Context {
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: the default mode, where the created file can only
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be accessed by the calling application (or all applications sharing the
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * same user ID).
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_PRIVATE = 0x0000;
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
66556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * @deprecated Creating world-readable files is very dangerous, and likely
67556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * to cause security holes in applications.  It is strongly discouraged;
68556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * instead, applications should use more formal mechanism for interactions
69556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * such as {@link ContentProvider}, {@link BroadcastReceiver}, and
70556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * {@link android.app.Service}.  There are no guarantees that this
71556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * access mode will remain on a file, such as when it goes through a
72556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * backup and restore.
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: allow all other applications to have read access
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the created file.
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
78556b09e184b891d9542092962ed248616810e054Dianne Hackborn    @Deprecated
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_WORLD_READABLE = 0x0001;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
81556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * @deprecated Creating world-writable files is very dangerous, and likely
82556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * to cause security holes in applications.  It is strongly discouraged;
83556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * instead, applications should use more formal mechanism for interactions
84556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * such as {@link ContentProvider}, {@link BroadcastReceiver}, and
85556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * {@link android.app.Service}.  There are no guarantees that this
86556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * access mode will remain on a file, such as when it goes through a
87556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * backup and restore.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: allow all other applications to have write access
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the created file.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
93556b09e184b891d9542092962ed248616810e054Dianne Hackborn    @Deprecated
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_WORLD_WRITEABLE = 0x0002;
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: for use with {@link #openFileOutput}, if the file
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * already exists then write data to the end of the existing file
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instead of erasing it.
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_APPEND = 0x8000;
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1044e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * SharedPreference loading flag: when set, the file on disk will
1054e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * be checked for modification even if the shared preferences
1064e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * instance is already loaded in this process.  This behavior is
1074e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * sometimes desired in cases where the application has multiple
1084e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * processes, all writing to the same SharedPreferences file.
1094e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * Generally there are better forms of communication between
1104e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * processes, though.
1114e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     *
1124e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * <p>This was the legacy (but undocumented) behavior in and
1134e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * before Gingerbread (Android 2.3) and this flag is implied when
1144e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * targetting such releases.  For applications targetting SDK
1154e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * versions <em>greater than</em> Android 2.3, this flag must be
1164e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * explicitly set if desired.
1174e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     *
1184e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * @see #getSharedPreferences
1194e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     */
1204e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick    public static final int MODE_MULTI_PROCESS = 0x0004;
1214e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick
1224e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick    /**
12347847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * Database open flag: when set, the database is opened with write-ahead
12447847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * logging enabled by default.
12547847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     *
12647847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * @see #openOrCreateDatabase(String, int, CursorFactory)
12747847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * @see #openOrCreateDatabase(String, int, CursorFactory, DatabaseErrorHandler)
12847847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * @see SQLiteDatabase#enableWriteAheadLogging
12947847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     */
13047847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown    public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 0x0008;
13147847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown
13247847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown    /**
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #bindService}: automatically create the service as long
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * as the binding exists.  Note that while this will create the service,
1354b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * its {@link android.app.Service#onStartCommand}
1364b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * method will still only be called due to an
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * explicit call to {@link #startService}.  Even without that, though,
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this still provides you with access to the service object while the
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service is created.
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
141c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * <p>Note that prior to {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH},
142c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * not supplying this flag would also impact how important the system
143c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * consider's the target service's process to be.  When set, the only way
144c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * for it to be raised was by binding from a service in which case it will
145c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * only be important when that activity is in the foreground.  Now to
146c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * achieve this behavior you must explicitly supply the new flag
147c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * {@link #BIND_ADJUST_WITH_ACTIVITY}.  For compatibility, old applications
148c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * that don't specify {@link #BIND_AUTO_CREATE} will automatically have
149c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * the flags {@link #BIND_WAIVE_PRIORITY} and
150c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * {@link #BIND_ADJUST_WITH_ACTIVITY} set for them in order to achieve
151c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * the same result.
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int BIND_AUTO_CREATE = 0x0001;
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #bindService}: include debugging help for mismatched
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls to unbind.  When this flag is set, the callstack of the following
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #unbindService} call is retained, to be printed if a later
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * incorrect unbind call is made.  Note that doing this requires retaining
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * information about the binding that was made for the lifetime of the app,
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * resulting in a leak -- this should only be used for debugging.
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int BIND_DEBUG_UNBIND = 0x0002;
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16509c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn    /**
16609c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * Flag for {@link #bindService}: don't allow this binding to raise
16709c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * the target service's process to the foreground scheduling priority.
168130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn     * It will still be raised to at least the same memory priority
16909c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * as the client (so that its process will not be killable in any
17009c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * situation where the client is not killable), but for CPU scheduling
17109c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * purposes it may be left in the background.  This only has an impact
17209c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * in the situation where the binding client is a foreground process
17309c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * and the target service is in a background process.
17409c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     */
17509c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn    public static final int BIND_NOT_FOREGROUND = 0x0004;
17609c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn
177130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn    /**
178c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Flag for {@link #bindService}: indicates that the client application
179c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * binding to this service considers the service to be more important than
180c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * the app itself.  When set, the platform will try to have the out of
181c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * memory kill the app before it kills the service it is bound to, though
182c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * this is not guaranteed to be the case.
183c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     */
184c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    public static final int BIND_ABOVE_CLIENT = 0x0008;
185c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn
186c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    /**
187130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn     * Flag for {@link #bindService}: allow the process hosting the bound
188130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn     * service to go through its normal memory management.  It will be
189130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn     * treated more like a running service, allowing the system to
190130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn     * (temporarily) expunge the process if low on memory or for some other
191c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * whim it may have, and being more aggressive about making it a candidate
192c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * to be killed (and restarted) if running for a long time.
193c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     */
194c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    public static final int BIND_ALLOW_OOM_MANAGEMENT = 0x0010;
195c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn
196c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    /**
197c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Flag for {@link #bindService}: don't impact the scheduling or
198c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * memory management priority of the target service's hosting process.
199c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Allows the service's process to be managed on the background LRU list
200c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * just like a regular application process in the background.
201c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     */
202c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    public static final int BIND_WAIVE_PRIORITY = 0x0020;
203c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn
204c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    /**
205c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Flag for {@link #bindService}: this service is very important to
206c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * the client, so should be brought to the foreground process level
207c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * when the client is.  Normally a process can only be raised to the
208c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * visibility level by a client, even if that client is in the foreground.
209c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     */
210c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    public static final int BIND_IMPORTANT = 0x0040;
211c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn
212c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    /**
213c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Flag for {@link #bindService}: If binding from an activity, allow the
214c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * target service's process importance to be raised based on whether the
215c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * activity is visible to the user, regardless whether another flag is
216c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * used to reduce the amount that the client process's overall importance
217c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * is used to impact it.
218130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn     */
2192c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn    public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0080;
2202c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn
2212c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn    /**
2222c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn     * Flag for {@link #bindService}: Don't consider the bound service to be
2232c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn     * visible, even if the caller is visible.
2242c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn     * @hide
2252c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn     */
2262c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn    public static final int BIND_NOT_VISIBLE = 0x40000000;
227130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return an AssetManager instance for your application's package. */
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract AssetManager getAssets();
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return a Resources instance for your application's package. */
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Resources getResources();
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return PackageManager instance to find global package information. */
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract PackageManager getPackageManager();
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return a ContentResolver instance for your application's package. */
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract ContentResolver getContentResolver();
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the Looper for the main thread of the current process.  This is
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the thread used to dispatch calls to application components (activities,
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * services, etc).
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Looper getMainLooper();
2464b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the context of the single, global Application object of the
249e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * current process.  This generally should only be used if you need a
250e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Context whose lifecycle is separate from the current context, that is
251e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * tied to the lifetime of the process rather than the current component.
2524b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
253e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>Consider for example how this interacts with
25436af79434fb62c26238132eaeda2ec5e732f3c2fBrad Fitzpatrick     * {@link #registerReceiver(BroadcastReceiver, IntentFilter)}:
255e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <ul>
256e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li> <p>If used from an Activity context, the receiver is being registered
257e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * within that activity.  This means that you are expected to unregister
258e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * before the activity is done being destroyed; in fact if you do not do
259e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * so, the framework will clean up your leaked registration as it removes
260e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * the activity and log an error.  Thus, if you use the Activity context
261e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * to register a receiver that is static (global to the process, not
262e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * associated with an Activity instance) then that registration will be
263e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * removed on you at whatever point the activity you used is destroyed.
264e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li> <p>If used from the Context returned here, the receiver is being
265e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * registered with the global state associated with your application.  Thus
266e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * it will never be unregistered for you.  This is necessary if the receiver
267e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * is associated with static data, not a particular component.  However
268e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * using the ApplicationContext elsewhere can easily lead to serious leaks
269e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * if you forget to unregister, unbind, etc.
270e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * </ul>
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Context getApplicationContext();
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
275c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Add a new {@link ComponentCallbacks} to the base application of the
276c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Context, which will be called at the same times as the ComponentCallbacks
277c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * methods of activities and other components are called.  Note that you
278c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * <em>must</em> be sure to use {@link #unregisterComponentCallbacks} when
279c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * appropriate in the future; this will not be removed for you.
280905577f6345c014fc2489a8068ea967ba8c18012Dianne Hackborn     *
281905577f6345c014fc2489a8068ea967ba8c18012Dianne Hackborn     * @param callback The interface to call.  This can be either a
282905577f6345c014fc2489a8068ea967ba8c18012Dianne Hackborn     * {@link ComponentCallbacks} or {@link ComponentCallbacks2} interface.
283c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     */
284c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    public void registerComponentCallbacks(ComponentCallbacks callback) {
285c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn        getApplicationContext().registerComponentCallbacks(callback);
286c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    }
287c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn
288c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    /**
289c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * Remove a {@link ComponentCallbacks} objec that was previously registered
290c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     * with {@link #registerComponentCallbacks(ComponentCallbacks)}.
291c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     */
292c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    public void unregisterComponentCallbacks(ComponentCallbacks callback) {
293c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn        getApplicationContext().unregisterComponentCallbacks(callback);
294c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    }
295c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn
296c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn    /**
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a localized, styled CharSequence from the application's package's
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default string table.
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resId Resource id for the CharSequence text
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final CharSequence getText(int resId) {
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getResources().getText(resId);
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a localized string from the application's package's
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default string table.
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resId Resource id for the string
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final String getString(int resId) {
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getResources().getString(resId);
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a localized formatted string from the application's package's
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default string table, substituting the format arguments as defined in
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link java.util.Formatter} and {@link java.lang.String#format}.
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resId Resource id for the format string
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param formatArgs The format arguments that will be used for substitution.
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final String getString(int resId, Object... formatArgs) {
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getResources().getString(resId, formatArgs);
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     /**
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set the base theme for this context.  Note that this should be called
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * before any views are instantiated in the Context (for example before
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calling {@link android.app.Activity#setContentView} or
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.LayoutInflater#inflate}).
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resid The style resource describing the theme.
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setTheme(int resid);
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn    /** @hide Needed for some internal implementation...  not public because
340247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn     * you can't assume this actually means anything. */
341247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn    public int getThemeResId() {
342247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn        return 0;
343247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn    }
344247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the Theme object associated with this Context.
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Resources.Theme getTheme();
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(int[])}
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(int[])
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int[] attrs) {
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(attrs);
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(int, int[])}
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(int, int[])
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int resid, int[] attrs) throws Resources.NotFoundException {
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(resid, attrs);
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)}
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            AttributeSet set, int[] attrs) {
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(set, attrs, 0, 0);
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)}
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) {
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            set, attrs, defStyleAttr, defStyleRes);
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a class loader you can use to retrieve classes in this package.
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract ClassLoader getClassLoader();
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return the name of this application's package. */
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String getPackageName();
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4075c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn    /** Return the full application info for this context's package. */
4085c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn    public abstract ApplicationInfo getApplicationInfo();
4094b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4113214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * Return the full path to this context's primary Android package.
4123214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * The Android package is a ZIP file which contains the application's
4133214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * primary resources.
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note: this is not generally useful for applications, since they should
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be directly accessing the file system.
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return String Path to the resources.
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String getPackageResourcePath();
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4233214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * Return the full path to this context's primary Android package.
4243214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * The Android package is a ZIP file which contains application's
4253214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * primary code and assets.
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note: this is not generally useful for applications, since they should
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be directly accessing the file system.
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return String Path to the code and assets.
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String getPackageCodePath();
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
43523ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * {@hide}
43623ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * Return the full path to the shared prefs file for the given prefs group name.
43723ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     *
43823ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * <p>Note: this is not generally useful for applications, since they should
43923ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * not be directly accessing the file system.
44023ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     */
44123ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato    public abstract File getSharedPrefsFile(String name);
44223ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato
44323ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato    /**
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve and hold the contents of the preferences file 'name', returning
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a SharedPreferences through which you can retrieve and modify its
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * values.  Only one instance of the SharedPreferences object is returned
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to any callers for the same name, meaning they will see each other's
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * edits as soon as they are made.
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name Desired preferences file. If a preferences file by this name
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * does not exist, it will be created when you retrieve an
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default operation, {@link #MODE_WORLD_READABLE}
4554e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * and {@link #MODE_WORLD_WRITEABLE} to control permissions.  The bit
4564e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * {@link #MODE_MULTI_PROCESS} can also be used if multiple processes
4574e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * are mutating the same SharedPreferences file.  {@link #MODE_MULTI_PROCESS}
4584e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * is always on in apps targetting Gingerbread (Android 2.3) and below, and
4594e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * off by default in later versions.
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the single SharedPreferences instance that can be used
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         to retrieve and modify the preference values.
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
4674e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick     * @see #MODE_MULTI_PROCESS
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract SharedPreferences getSharedPreferences(String name,
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int mode);
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Open a private file associated with this Context's application package
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for reading.
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file to open; can not contain path
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             separators.
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return FileInputStream Resulting input stream.
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #fileList
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteFile
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.io.FileInputStream#FileInputStream(String)
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract FileInputStream openFileInput(String name)
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throws FileNotFoundException;
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Open a private file associated with this Context's application package
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for writing.  Creates the file if it doesn't already exist.
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file to open; can not contain path
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             separators.
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default operation, {@link #MODE_APPEND} to append to an existing file,
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #MODE_WORLD_READABLE} and {@link #MODE_WORLD_WRITEABLE} to control
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions.
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return FileOutputStream Resulting output stream.
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_APPEND
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileInput
5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #fileList
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteFile
5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.io.FileOutputStream#FileOutputStream(String)
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract FileOutputStream openFileOutput(String name, int mode)
5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throws FileNotFoundException;
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Delete the given private file associated with this Context's
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application package.
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file to delete; can not contain path
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             separators.
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return True if the file was successfully deleted; else
5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false.
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileInput
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #fileList
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.io.File#delete()
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean deleteFile(String name);
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path on the filesystem where a file created with
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #openFileOutput} is stored.
5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file for which you would like to get
5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *          its path.
5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns an absolute path to the given file.
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getFilesDir
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getDir
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getFileStreamPath(String name);
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path to the directory on the filesystem where
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * files created with {@link #openFileOutput} are stored.
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the path of the directory holding application files.
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getFileStreamPath
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getDir
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getFilesDir();
5574b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
559e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Returns the absolute path to the directory on the external filesystem
560e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * (that is somewhere on {@link android.os.Environment#getExternalStorageDirectory()
561acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * Environment.getExternalStorageDirectory()}) where the application can
562e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * place persistent files it owns.  These files are private to the
563e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * applications, and not typically visible to the user as media.
5644b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
565e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>This is like {@link #getFilesDir()} in that these
566e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files will be deleted when the application is uninstalled, however there
567e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * are some important differences:
5684b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
569e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <ul>
570e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>External files are not always available: they will disappear if the
571e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * user mounts the external storage on a computer or removes it.  See the
572e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * APIs on {@link android.os.Environment} for information in the storage state.
573e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>There is no security enforced with these files.  All applications
574e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * can read and write files placed here.
575e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * </ul>
5764b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
577e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>Here is an example of typical code to manipulate a file in
578e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * an application's private storage:</p>
5794b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
580e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java
581e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * private_file}
582e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
583acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * <p>If you supply a non-null <var>type</var> to this function, the returned
584e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * file will be a path to a sub-directory of the given type.  Though these files
585e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * are not automatically scanned by the media scanner, you can explicitly
586e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * add them to the media database with
587e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.media.MediaScannerConnection#scanFile(Context, String[], String[],
588b7c8c76180dc1abbf55c734ab121a7a2469060f6Ray Chen     *      OnScanCompletedListener) MediaScannerConnection.scanFile}.
589e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Note that this is not the same as
590e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#getExternalStoragePublicDirectory
591e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Environment.getExternalStoragePublicDirectory()}, which provides
592e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * directories of media shared by all applications.  The
593e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * directories returned here are
594acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * owned by the application, and their contents will be removed when the
595e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * application is uninstalled.  Unlike
596e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#getExternalStoragePublicDirectory
597e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Environment.getExternalStoragePublicDirectory()}, the directory
598e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * returned here will be automatically created for you.
5994b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
600e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>Here is an example of typical code to manipulate a picture in
601e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * an application's private storage and add it to the media database:</p>
6024b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
603e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java
604e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * private_picture}
6054b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
606e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @param type The type of files directory to return.  May be null for
607e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * the root of the files directory or one of
608e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * the following Environment constants for a subdirectory:
609e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_MUSIC},
610e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_PODCASTS},
611e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_RINGTONES},
612e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_ALARMS},
613e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_NOTIFICATIONS},
614e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_PICTURES}, or
615e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_MOVIES}.
6164b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
617e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @return Returns the path of the directory holding application files
618e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * on external storage.  Returns null if external storage is not currently
619e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * mounted so it could not ensure the path exists; you will need to call
620e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * this method again when it is available.
621e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
622e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @see #getFilesDir
623acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * @see android.os.Environment#getExternalStoragePublicDirectory
624e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     */
625e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    public abstract File getExternalFilesDir(String type);
6264b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
627e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    /**
628805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn     * Return the directory where this application's OBB files (if there
629805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn     * are any) can be found.  Note if the application does not have any OBB
630805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn     * files, this directory may not exist.
631805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn     */
632805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn    public abstract File getObbDir();
633805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn
634805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn    /**
6354b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * Returns the absolute path to the application specific cache directory
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on the filesystem. These files will be ones that get deleted first when the
637e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * device runs low on storage.
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * There is no guarantee when these files will be deleted.
6394b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
640e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <strong>Note: you should not <em>rely</em> on the system deleting these
641e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files for you; you should always have a reasonable maximum, such as 1 MB,
642e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * for the amount of space you consume with cache files, and prune those
643e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files when exceeding that space.</strong>
6444b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the path of the directory holding application cache files.
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getFileStreamPath
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getDir
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getCacheDir();
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
654e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Returns the absolute path to the directory on the external filesystem
655e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * (that is somewhere on {@link android.os.Environment#getExternalStorageDirectory()
656e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Environment.getExternalStorageDirectory()} where the application can
657e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * place cache files it owns.
6584b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
659e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>This is like {@link #getCacheDir()} in that these
660e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files will be deleted when the application is uninstalled, however there
661e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * are some important differences:
6624b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
663e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <ul>
664556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * <li>The platform does not always monitor the space available in external
665556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * storage, and thus may not automatically delete these files.  Currently
666556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * the only time files here will be deleted by the platform is when running
667556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * on {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} or later and
668556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * {@link android.os.Environment#isExternalStorageEmulated()
669556b09e184b891d9542092962ed248616810e054Dianne Hackborn     * Environment.isExternalStorageEmulated()} returns true.  Note that you should
670e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * be managing the maximum space you will use for these anyway, just like
671e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * with {@link #getCacheDir()}.
672e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>External files are not always available: they will disappear if the
673e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * user mounts the external storage on a computer or removes it.  See the
674e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * APIs on {@link android.os.Environment} for information in the storage state.
675e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>There is no security enforced with these files.  All applications
676e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * can read and write files placed here.
677e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * </ul>
678e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
679e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @return Returns the path of the directory holding application cache files
680e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * on external storage.  Returns null if external storage is not currently
681e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * mounted so it could not ensure the path exists; you will need to call
682e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * this method again when it is available.
683e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
684e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @see #getCacheDir
685e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     */
686e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    public abstract File getExternalCacheDir();
6874b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
688e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    /**
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an array of strings naming the private files associated with
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this Context's application package.
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Array of strings naming the private files.
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileInput
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteFile
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String[] fileList();
6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve, creating if needed, a new directory in which the application
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can place its own custom data files.  You can use the returned File
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * object to create and access files in this directory.  Note that files
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * created through a File object will only be accessible by your own
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application; you can only set the mode of the entire directory, not
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of individual files.
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name Name of the directory to retrieve.  This is a directory
7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that is created as part of your application data.
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default operation, {@link #MODE_WORLD_READABLE} and
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #MODE_WORLD_WRITEABLE} to control permissions.
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns a File object for the requested directory.  The directory
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will have been created if it does not already exist.
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput(String, int)
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getDir(String name, int mode);
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Open a new private SQLiteDatabase associated with this Context's
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application package.  Create the database file if it doesn't exist.
7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name (unique in the application package) of the database.
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     default operation, {@link #MODE_WORLD_READABLE}
7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     and {@link #MODE_WORLD_WRITEABLE} to control permissions.
72947847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     *     Use {@link #MODE_ENABLE_WRITE_AHEAD_LOGGING} to enable write-ahead logging by default.
7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param factory An optional factory class that is called to instantiate a
7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     cursor when query is called.
7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The contents of a newly created database with the given name.
7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws android.database.sqlite.SQLiteException if the database file could not be opened.
7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
73947847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * @see #MODE_ENABLE_WRITE_AHEAD_LOGGING
7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteDatabase
7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract SQLiteDatabase openOrCreateDatabase(String name,
7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int mode, CursorFactory factory);
7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
74674f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * Open a new private SQLiteDatabase associated with this Context's
74774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * application package.  Creates the database file if it doesn't exist.
74874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *
74974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * <p>Accepts input param: a concrete instance of {@link DatabaseErrorHandler} to be
75074f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * used to handle corruption when sqlite reports database corruption.</p>
75174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *
75274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param name The name (unique in the application package) of the database.
75374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
75474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *     default operation, {@link #MODE_WORLD_READABLE}
75574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *     and {@link #MODE_WORLD_WRITEABLE} to control permissions.
75647847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     *     Use {@link #MODE_ENABLE_WRITE_AHEAD_LOGGING} to enable write-ahead logging by default.
75774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param factory An optional factory class that is called to instantiate a
75874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *     cursor when query is called.
75974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param errorHandler the {@link DatabaseErrorHandler} to be used when sqlite reports database
76003acd51bae7d3fe746d21aa89f5b6de539d92bc8Vasu Nori     * corruption. if null, {@link android.database.DefaultDatabaseErrorHandler} is assumed.
76174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @return The contents of a newly created database with the given name.
76274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @throws android.database.sqlite.SQLiteException if the database file could not be opened.
76374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *
76474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #MODE_PRIVATE
76574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #MODE_WORLD_READABLE
76674f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #MODE_WORLD_WRITEABLE
76747847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown     * @see #MODE_ENABLE_WRITE_AHEAD_LOGGING
76874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #deleteDatabase
76974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     */
77074f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori    public abstract SQLiteDatabase openOrCreateDatabase(String name,
77174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori            int mode, CursorFactory factory, DatabaseErrorHandler errorHandler);
77274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori
77374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori    /**
7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Delete an existing private SQLiteDatabase associated with this Context's
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application package.
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name (unique in the application package) of the
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             database.
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return True if the database was successfully deleted; else false.
7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openOrCreateDatabase
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean deleteDatabase(String name);
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path on the filesystem where a database created with
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #openOrCreateDatabase} is stored.
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the database for which you would like to get
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *          its path.
7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns an absolute path to the given database.
7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openOrCreateDatabase
7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getDatabasePath(String name);
7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an array of strings naming the private databases associated with
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this Context's application package.
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Array of strings naming the private databases.
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openOrCreateDatabase
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteDatabase
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String[] databaseList();
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8114c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#getDrawable
8128cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.get()} instead.
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8144a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Drawable getWallpaper();
8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8184c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#peekDrawable
8198cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.peek()} instead.
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8214a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Drawable peekWallpaper();
8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8258cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#getDesiredMinimumWidth()
8268cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.getDesiredMinimumWidth()} instead.
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8284a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int getWallpaperDesiredMinimumWidth();
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8328cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#getDesiredMinimumHeight()
8338cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.getDesiredMinimumHeight()} instead.
8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8354a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int getWallpaperDesiredMinimumHeight();
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8394c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#setBitmap(Bitmap)
8408cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.set()} instead.
8419530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * <p>This method requires the caller to hold the permission
8429530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * {@link android.Manifest.permission#SET_WALLPAPER}.
8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8444a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setWallpaper(Bitmap bitmap) throws IOException;
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8484c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#setStream(InputStream)
8498cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.set()} instead.
8509530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * <p>This method requires the caller to hold the permission
8519530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * {@link android.Manifest.permission#SET_WALLPAPER}.
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8534a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setWallpaper(InputStream data) throws IOException;
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8578cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#clear
8588cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.clear()} instead.
8599530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * <p>This method requires the caller to hold the permission
8609530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * {@link android.Manifest.permission#SET_WALLPAPER}.
8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8624a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void clearWallpaper() throws IOException;
8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
866a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * Same as {@link #startActivity(Intent, Bundle)} with no options
867a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * specified.
868a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
869a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param intent The description of the activity to start.
870a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
871a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @throws ActivityNotFoundException
872a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
873a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see {@link #startActivity(Intent, Bundle)}
874a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see PackageManager#resolveActivity
875a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     */
876a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    public abstract void startActivity(Intent intent);
877a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn
878a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    /**
8798832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of {@link #startActivity(Intent)} that allows you to specify the
8808832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the activity will be started for.  This is not available to applications
8818832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
8828832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS_FULL permission.
8838264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani     * @param intent The description of the activity to start.
88479af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn     * @param user The UserHandle of the user to start this activity for.
8858264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani     * @throws ActivityNotFoundException
8868264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani     * @hide
8878264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani     */
88879af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn    public void startActivityAsUser(Intent intent, UserHandle user) {
8898264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani        throw new RuntimeException("Not implemented. Must override in a subclass.");
8908264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani    }
8918264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani
8928264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani    /**
8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Launch a new activity.  You will not receive any information about when
8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the activity exits.
8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note that if this method is being called from outside of an
8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.Activity} Context, then the Intent must include
8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link Intent#FLAG_ACTIVITY_NEW_TASK} launch flag.  This is because,
8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * without being started from an existing Activity, there is no existing
9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * task in which to place the new activity and thus it needs to be placed
9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in its own separate task.
9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method throws {@link ActivityNotFoundException}
9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if there was no Activity found to run the given Intent.
9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The description of the activity to start.
907a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param options Additional options for how the Activity should be started.
9087a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * May be null if there are no options.  See {@link android.app.ActivityOptions}
9097a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * for how to build the Bundle supplied here; there are no supported definitions
9107a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * for building it manually.
9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws ActivityNotFoundException
9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
91460dd520d37a6d3163747eb9a4266d0a08b207c98Scott Main     * @see #startActivity(Intent)
9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#resolveActivity
9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
917a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    public abstract void startActivity(Intent intent, Bundle options);
918a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn
919a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    /**
9208832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of {@link #startActivity(Intent, Bundle)} that allows you to specify the
9218832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the activity will be started for.  This is not available to applications
9228832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
9238832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS_FULL permission.
924258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * @param intent The description of the activity to start.
925258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * @param options Additional options for how the Activity should be started.
926258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * May be null if there are no options.  See {@link android.app.ActivityOptions}
927258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * for how to build the Bundle supplied here; there are no supported definitions
928258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * for building it manually.
92979af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn     * @param user The UserHandle of the user to start this activity for.
930258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * @throws ActivityNotFoundException
931258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * @hide
932258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     */
93379af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn    public void startActivityAsUser(Intent intent, Bundle options, UserHandle userId) {
934258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani        throw new RuntimeException("Not implemented. Must override in a subclass.");
935258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani    }
936258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani
937258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani    /**
938a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * Same as {@link #startActivities(Intent[], Bundle)} with no options
939a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * specified.
940a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
941a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param intents An array of Intents to be started.
942a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
943a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @throws ActivityNotFoundException
944a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
945a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see {@link #startActivities(Intent[], Bundle)}
946a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see PackageManager#resolveActivity
947a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     */
948a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    public abstract void startActivities(Intent[] intents);
9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
951621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * Launch multiple new activities.  This is generally the same as calling
952621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * {@link #startActivity(Intent)} for the first Intent in the array,
953621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * that activity during its creation calling {@link #startActivity(Intent)}
954621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * for the second entry, etc.  Note that unlike that approach, generally
955621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * none of the activities except the last in the array will be created
956621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * at this point, but rather will be created when the user first visits
957621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * them (due to pressing back from the activity on top).
958621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     *
959621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * <p>This method throws {@link ActivityNotFoundException}
960621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * if there was no Activity found for <em>any</em> given Intent.  In this
961621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * case the state of the activity stack is undefined (some Intents in the
962621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * list may be on it, some not), so you probably want to avoid such situations.
963621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     *
964621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * @param intents An array of Intents to be started.
965a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param options Additional options for how the Activity should be started.
9667a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * See {@link android.content.Context#startActivity(Intent, Bundle)
9677a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * Context.startActivity(Intent, Bundle)} for more details.
968621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     *
969621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * @throws ActivityNotFoundException
970621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     *
971a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see {@link #startActivities(Intent[])}
972621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     * @see PackageManager#resolveActivity
973621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn     */
974a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    public abstract void startActivities(Intent[] intents, Bundle options);
975a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn
976a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    /**
977a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * Same as {@link #startIntentSender(IntentSender, Intent, int, int, int, Bundle)}
978a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * with no options specified.
979a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
980a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param intent The IntentSender to launch.
981a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param fillInIntent If non-null, this will be provided as the
982a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * intent parameter to {@link IntentSender#sendIntent}.
983a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param flagsMask Intent flags in the original IntentSender that you
984a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * would like to change.
985a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param flagsValues Desired values for any bits set in
986a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * <var>flagsMask</var>
987a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param extraFlags Always set to 0.
988a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
989a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see #startActivity(Intent)
990a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see #startIntentSender(IntentSender, Intent, int, int, int, Bundle)
991a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     */
992a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn    public abstract void startIntentSender(IntentSender intent,
993a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
994a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn            throws IntentSender.SendIntentException;
995621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn
996621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn    /**
997a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * Like {@link #startActivity(Intent, Bundle)}, but taking a IntentSender
998fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * to start.  If the IntentSender is for an activity, that activity will be started
999ae22c05b91d1e7a458066792eb5cfc0974c1be9eDianne Hackborn     * as if you had called the regular {@link #startActivity(Intent)}
1000fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * here; otherwise, its associated action will be executed (such as
1001fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * sending a broadcast) as if you had called
1002fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * {@link IntentSender#sendIntent IntentSender.sendIntent} on it.
10034b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
1004fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param intent The IntentSender to launch.
1005fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param fillInIntent If non-null, this will be provided as the
1006fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * intent parameter to {@link IntentSender#sendIntent}.
1007fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param flagsMask Intent flags in the original IntentSender that you
1008fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * would like to change.
1009fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param flagsValues Desired values for any bits set in
1010fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * <var>flagsMask</var>
1011fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param extraFlags Always set to 0.
1012a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @param options Additional options for how the Activity should be started.
10137a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * See {@link android.content.Context#startActivity(Intent, Bundle)
10147a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * Context.startActivity(Intent, Bundle)} for more details.  If options
10157a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * have also been supplied by the IntentSender, options given here will
10167a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn     * override any that conflict with those given by the IntentSender.
1017a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     *
1018a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see #startActivity(Intent, Bundle)
1019a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn     * @see #startIntentSender(IntentSender, Intent, int, int, int)
1020fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     */
1021fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn    public abstract void startIntentSender(IntentSender intent,
1022a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags,
1023a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn            Bundle options) throws IntentSender.SendIntentException;
1024fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn
1025fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn    /**
10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast the given intent to all interested BroadcastReceivers.  This
10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call is asynchronous; it returns immediately, and you will continue
10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * executing while the receivers are run.  No results are propagated from
10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * receivers and receivers can not abort the broadcast. If you want
10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to allow receivers to propagate results or abort the broadcast, you must
10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * send an ordered broadcast using
10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendOrderedBroadcast(Intent, String)}.
10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent, String)
10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String)
10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendBroadcast(Intent intent);
10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast the given intent to all interested BroadcastReceivers, allowing
10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an optional required permission to be enforced.  This
10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call is asynchronous; it returns immediately, and you will continue
10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * executing while the receivers are run.  No results are propagated from
10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * receivers and receivers can not abort the broadcast. If you want
10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to allow receivers to propagate results or abort the broadcast, you must
10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * send an ordered broadcast using
10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendOrderedBroadcast(Intent, String)}.
10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
106126b71be600a44341a34079a007ce1492a6f26c1fBrad Fitzpatrick     * @param receiverPermission (optional) String naming a permission that
10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               a receiver must hold in order to receive your broadcast.
10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               If null, no permission is required.
10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String)
10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendBroadcast(Intent intent,
10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String receiverPermission);
10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast the given intent to all interested BroadcastReceivers, delivering
10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * them one at a time to allow more preferred receivers to consume the
10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * broadcast before it is delivered to less preferred receivers.  This
10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call is asynchronous; it returns immediately, and you will continue
10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * executing while the receivers are run.
10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiverPermission (optional) String naming a permissions that
10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               a receiver must hold in order to receive your broadcast.
10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               If null, no permission is required.
10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendOrderedBroadcast(Intent intent,
10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String receiverPermission);
10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Version of {@link #sendBroadcast(Intent)} that allows you to
10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * receive data back from the broadcast.  This is accomplished by
11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * supplying your own BroadcastReceiver when calling, which will be
11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * treated as a final receiver at the end of the broadcast -- its
11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link BroadcastReceiver#onReceive} method will be called with
1103efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * the result values collected from the other receivers.  The broadcast will
11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be serialized in the same way as calling
11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendOrderedBroadcast(Intent, String)}.
11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Like {@link #sendBroadcast(Intent)}, this method is
11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * asynchronous; it will return before
11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * resultReceiver.onReceive() is called.
11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiverPermission String naming a permissions that
11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               a receiver must hold in order to receive your broadcast.
11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               If null, no permission is required.
11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resultReceiver Your own BroadcastReceiver to treat as the final
11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                       receiver of the broadcast.
11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param scheduler A custom Handler with which to schedule the
11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                  resultReceiver callback; if null it will be
11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                  scheduled in the Context's main thread.
11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param initialCode An initial value for the result code.  Often
11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                    Activity.RESULT_OK.
11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param initialData An initial value for the result data.  Often
11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                    null.
11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param initialExtras An initial value for the result extras.  Often
11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                      null.
11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent, String)
11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String)
11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendStickyBroadcast(Intent)
1134efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.Activity#RESULT_OK
11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendOrderedBroadcast(Intent intent,
11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String receiverPermission, BroadcastReceiver resultReceiver,
11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Handler scheduler, int initialCode, String initialData,
11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle initialExtras);
11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11458832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of {@link #sendBroadcast(Intent)} that allows you to specify the
11468832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the broadcast will be sent to.  This is not available to applications
11478832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
11488832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS permission.
11497d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param intent The intent to broadcast
115079af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn     * @param user UserHandle to send the intent to.
11517d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @see #sendBroadcast(Intent)
11527d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     */
115379af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn    public abstract void sendBroadcastAsUser(Intent intent, UserHandle user);
11547d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn
11557d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn    /**
11568832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the
11578832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the broadcast will be sent to.  This is not available to applications
11588832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
11598832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS permission.
11605ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
11615ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param intent The Intent to broadcast; all receivers matching this
11625ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *               Intent will receive the broadcast.
11635ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param user UserHandle to send the intent to.
11645ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param receiverPermission (optional) String naming a permission that
11655ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *               a receiver must hold in order to receive your broadcast.
11665ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *               If null, no permission is required.
11675ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
11685ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @see #sendBroadcast(Intent, String)
11695ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     */
11705ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    public abstract void sendBroadcastAsUser(Intent intent, UserHandle user,
11715ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn            String receiverPermission);
11725ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn
11735ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    /**
11748832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of
11758832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)}
11768832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that allows you to specify the
11778832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the broadcast will be sent to.  This is not available to applications
11788832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
11798832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS permission.
11807d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *
11817d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
11827d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *
11837d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param intent The Intent to broadcast; all receivers matching this
11847d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *               Intent will receive the broadcast.
118579af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn     * @param user UserHandle to send the intent to.
11865ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param receiverPermission String naming a permissions that
11875ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *               a receiver must hold in order to receive your broadcast.
11885ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *               If null, no permission is required.
11897d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param resultReceiver Your own BroadcastReceiver to treat as the final
11907d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *                       receiver of the broadcast.
11917d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param scheduler A custom Handler with which to schedule the
11927d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *                  resultReceiver callback; if null it will be
11937d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *                  scheduled in the Context's main thread.
11947d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param initialCode An initial value for the result code.  Often
11957d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *                    Activity.RESULT_OK.
11967d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param initialData An initial value for the result data.  Often
11977d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *                    null.
11987d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @param initialExtras An initial value for the result extras.  Often
11997d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *                      null.
12007d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     *
12017d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
12027d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     */
120379af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn    public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
12045ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn            String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
12057d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn            int initialCode, String initialData, Bundle initialExtras);
12067d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn
12077d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn    /**
12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the
12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent you are sending stays around after the broadcast is complete,
12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * so that others can quickly retrieve that data through the return
12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * value of {@link #registerReceiver(BroadcastReceiver, IntentFilter)}.  In
12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all other ways, this behaves the same as
12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendBroadcast(Intent)}.
12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY}
12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission in order to use this API.  If you do not hold that
12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission, {@link SecurityException} will be thrown.
12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent will receive the broadcast, and the Intent will be held to
12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be re-broadcast to future receivers.
12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
1224efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendStickyBroadcast(Intent intent);
12274b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
1228efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn    /**
1229efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * Version of {@link #sendStickyBroadcast} that allows you to
1230efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * receive data back from the broadcast.  This is accomplished by
1231efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * supplying your own BroadcastReceiver when calling, which will be
1232efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * treated as a final receiver at the end of the broadcast -- its
1233efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * {@link BroadcastReceiver#onReceive} method will be called with
1234efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * the result values collected from the other receivers.  The broadcast will
1235efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * be serialized in the same way as calling
1236efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * {@link #sendOrderedBroadcast(Intent, String)}.
1237efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
1238efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * <p>Like {@link #sendBroadcast(Intent)}, this method is
1239efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * asynchronous; it will return before
1240efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * resultReceiver.onReceive() is called.  Note that the sticky data
1241efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * stored is only the data you initially supply to the broadcast, not
1242efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * the result of any changes made by the receivers.
1243efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
1244efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
1245efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
1246efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param intent The Intent to broadcast; all receivers matching this
1247efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *               Intent will receive the broadcast.
1248efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param resultReceiver Your own BroadcastReceiver to treat as the final
1249efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                       receiver of the broadcast.
1250efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param scheduler A custom Handler with which to schedule the
1251efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                  resultReceiver callback; if null it will be
1252efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                  scheduled in the Context's main thread.
1253efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param initialCode An initial value for the result code.  Often
1254efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                    Activity.RESULT_OK.
1255efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param initialData An initial value for the result data.  Often
1256efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                    null.
1257efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param initialExtras An initial value for the result extras.  Often
1258efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                      null.
1259efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
1260efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendBroadcast(Intent)
1261efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendBroadcast(Intent, String)
1262efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendOrderedBroadcast(Intent, String)
1263efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendStickyBroadcast(Intent)
1264efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see android.content.BroadcastReceiver
1265efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #registerReceiver
1266efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see android.app.Activity#RESULT_OK
1267efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     */
1268efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn    public abstract void sendStickyOrderedBroadcast(Intent intent,
1269efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn            BroadcastReceiver resultReceiver,
1270efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn            Handler scheduler, int initialCode, String initialData,
1271efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn            Bundle initialExtras);
1272efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn
12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Remove the data previously sent with {@link #sendStickyBroadcast},
12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * so that it is as if the sticky broadcast had never happened.
12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY}
12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission in order to use this API.  If you do not hold that
12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission, {@link SecurityException} will be thrown.
12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent that was previously broadcast.
12829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendStickyBroadcast
12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void removeStickyBroadcast(Intent intent);
12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12888832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of {@link #sendStickyBroadcast(Intent)} that allows you to specify the
12898832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the broadcast will be sent to.  This is not available to applications
12908832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
12918832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS permission.
12925ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
12935ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param intent The Intent to broadcast; all receivers matching this
12945ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * Intent will receive the broadcast, and the Intent will be held to
12955ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * be re-broadcast to future receivers.
12965ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param user UserHandle to send the intent to.
12975ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
12985ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @see #sendBroadcast(Intent)
12995ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     */
13005ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    public abstract void sendStickyBroadcastAsUser(Intent intent, UserHandle user);
13015ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn
13025ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    /**
13038832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of
13048832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * {@link #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)}
13058832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that allows you to specify the
13068832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the broadcast will be sent to.  This is not available to applications
13078832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
13088832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS permission.
13095ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
13105ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
13115ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
13125ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param intent The Intent to broadcast; all receivers matching this
13135ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *               Intent will receive the broadcast.
13145ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param user UserHandle to send the intent to.
13155ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param resultReceiver Your own BroadcastReceiver to treat as the final
13165ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *                       receiver of the broadcast.
13175ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param scheduler A custom Handler with which to schedule the
13185ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *                  resultReceiver callback; if null it will be
13195ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *                  scheduled in the Context's main thread.
13205ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param initialCode An initial value for the result code.  Often
13215ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *                    Activity.RESULT_OK.
13225ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param initialData An initial value for the result data.  Often
13235ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *                    null.
13245ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param initialExtras An initial value for the result extras.  Often
13255ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *                      null.
13265ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
13275ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
13285ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     */
13295ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    public abstract void sendStickyOrderedBroadcastAsUser(Intent intent,
13305ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn            UserHandle user, BroadcastReceiver resultReceiver,
13315ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn            Handler scheduler, int initialCode, String initialData,
13325ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn            Bundle initialExtras);
13335ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn
13345ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    /**
13358832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * Version of {@link #removeStickyBroadcast(Intent)} that allows you to specify the
13368832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * user the broadcast will be sent to.  This is not available to applications
13378832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * that are not pre-installed on the system image.  Using it requires holding
13388832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn     * the INTERACT_ACROSS_USERS permission.
13395ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
13405ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY}
13415ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * permission in order to use this API.  If you do not hold that
13425ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * permission, {@link SecurityException} will be thrown.
13435ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
13445ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param intent The Intent that was previously broadcast.
13455ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @param user UserHandle to remove the sticky broadcast from.
13465ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     *
13475ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     * @see #sendStickyBroadcastAsUser
13485ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn     */
13495ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    public abstract void removeStickyBroadcastAsUser(Intent intent, UserHandle user);
13505ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn
13515ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    /**
1352a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * Register a BroadcastReceiver to be run in the main activity thread.  The
13539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>receiver</var> will be called with any broadcast Intent that
13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * matches <var>filter</var>, in the main application thread.
13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>The system may broadcast Intents that are "sticky" -- these stay
13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * around after the broadcast as finished, to be sent to any later
13589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registrations. If your IntentFilter matches one of these sticky
13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intents, that Intent will be returned by this function
13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>and</strong> sent to your <var>receiver</var> as if it had just
13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * been broadcast.
13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>There may be multiple sticky Intents that match <var>filter</var>,
13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in which case each of these will be sent to <var>receiver</var>.  In
13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this case, only one of these can be returned directly by the function;
13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * which of these that is returned is arbitrarily decided by the system.
13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If you know the Intent your are registering for is sticky, you can
13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * supply null for your <var>receiver</var>.  In this case, no receiver is
13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registered -- the function simply returns the sticky Intent that
13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * matches <var>filter</var>.  In the case of multiple matches, the same
13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * rules as described above apply.
13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13766c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * <p>As of {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}, receivers
13776c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * registered with this method will correctly respect the
13786c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * {@link Intent#setPackage(String)} specified for an Intent being broadcast.
13796c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * Prior to that, it would be ignored and delivered to all matching registered
13806c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * receivers.  Be careful if using this for security.</p>
13816c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     *
1382a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * <p class="note">Note: this method <em>cannot be called from a
1383a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * {@link BroadcastReceiver} component;</em> that is, from a BroadcastReceiver
1384a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * that is declared in an application's manifest.  It is okay, however, to call
1385a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * this method from another BroadcastReceiver that has itself been registered
1386a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * at run time with {@link #registerReceiver}, since the lifetime of such a
1387a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * registered BroadcastReceiver is tied to the object that registered it.</p>
13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiver The BroadcastReceiver to handle the broadcast.
13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param filter Selects the Intent broadcasts to be received.
13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The first sticky intent found that matches <var>filter</var>,
13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         or null if there are none.
13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)
13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast
13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterReceiver
13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Intent registerReceiver(BroadcastReceiver receiver,
14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                            IntentFilter filter);
14019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register to receive intent broadcasts, to run in the context of
14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>scheduler</var>.  See
14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerReceiver(BroadcastReceiver, IntentFilter)} for more
14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * information.  This allows you to enforce permissions on who can
14079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * broadcast intents to your receiver, or have the receiver run in
14089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a different thread than the main application thread.
14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
14119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14126c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * <p>As of {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}, receivers
14136c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * registered with this method will correctly respect the
14146c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * {@link Intent#setPackage(String)} specified for an Intent being broadcast.
14156c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * Prior to that, it would be ignored and delivered to all matching registered
14166c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     * receivers.  Be careful if using this for security.</p>
14176c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn     *
14189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiver The BroadcastReceiver to handle the broadcast.
14199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param filter Selects the Intent broadcasts to be received.
14209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param broadcastPermission String naming a permissions that a
14219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      broadcaster must hold in order to send an Intent to you.  If null,
14229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      no permission is required.
14239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param scheduler Handler identifying the thread that will receive
14249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      the Intent.  If null, the main thread of the process will be used.
14259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The first sticky intent found that matches <var>filter</var>,
14279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         or null if there are none.
14289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver(BroadcastReceiver, IntentFilter)
14309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast
14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterReceiver
14329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Intent registerReceiver(BroadcastReceiver receiver,
143420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn            IntentFilter filter, String broadcastPermission, Handler scheduler);
143520e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn
143620e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn    /**
143720e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @hide
143820e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * Same as {@link #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)
143920e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * but for a specific user.  This receiver will receiver broadcasts that
144020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * are sent to the requested user.  It
144120e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * requires holding the {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}
144220e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * permission.
144320e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *
144420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @param receiver The BroadcastReceiver to handle the broadcast.
144520e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @param user UserHandle to send the intent to.
144620e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @param filter Selects the Intent broadcasts to be received.
144720e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @param broadcastPermission String naming a permissions that a
144820e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *      broadcaster must hold in order to send an Intent to you.  If null,
144920e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *      no permission is required.
145020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @param scheduler Handler identifying the thread that will receive
145120e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *      the Intent.  If null, the main thread of the process will be used.
145220e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *
145320e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @return The first sticky intent found that matches <var>filter</var>,
145420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *         or null if there are none.
145520e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     *
145620e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler
145720e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @see #sendBroadcast
145820e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     * @see #unregisterReceiver
145920e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn     */
146020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn    public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver,
146120e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn            UserHandle user, IntentFilter filter, String broadcastPermission,
146220e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn            Handler scheduler);
14639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister a previously registered BroadcastReceiver.  <em>All</em>
14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * filters that have been registered for this BroadcastReceiver will be
14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * removed.
14689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiver The BroadcastReceiver to unregister.
14709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
14729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void unregisterReceiver(BroadcastReceiver receiver);
14749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Request that a given application service be started.  The Intent
14779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can either contain the complete class name of a specific service
14789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation to start, or an abstract definition through the
14799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * action and other fields of the kind of service to start.  If this service
14809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is not already running, it will be instantiated and started (creating a
14819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process for it if needed); if it is running then it remains running.
14829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Every call to this method will result in a corresponding call to
14844b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * the target service's {@link android.app.Service#onStartCommand} method,
14859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with the <var>intent</var> given here.  This provides a convenient way
14869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to submit jobs to a service without having to bind and call on to its
14879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * interface.
14889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Using startService() overrides the default service lifetime that is
14909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * managed by {@link #bindService}: it requires the service to remain
14919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * running until {@link #stopService} is called, regardless of whether
14929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * any clients are connected to it.  Note that calls to startService()
14939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are not nesting: no matter how many times you call startService(),
14949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a single call to {@link #stopService} will stop it.
14959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>The system attempts to keep running services around as much as
14979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * possible.  The only time they should be stopped is if the current
14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * foreground application is using so many resources that the service needs
14999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be killed.  If any errors happen in the service's process, it will
15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * automatically be restarted.
15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function will throw {@link SecurityException} if you do not
15039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have permission to start the given service.
15049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param service Identifies the service to be started.  The Intent may
15069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      specify either an explicit component name to start, or a logical
15079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      description (action, category, etc) to match an
15089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      {@link IntentFilter} published by a service.  Additional values
15099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      may be included in the Intent extras to supply arguments along with
15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      this specific start call.
15119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If the service is being started or is already running, the
15139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link ComponentName} of the actual service that was started is
15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returned; else if the service does not exist null is returned.
15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws SecurityException
15179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #stopService
15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #bindService
15209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract ComponentName startService(Intent service);
15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
15249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Request that a given application service be stopped.  If the service is
15259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not running, nothing happens.  Otherwise it is stopped.  Note that calls
15269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to startService() are not counted -- this stops the service no matter
15279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * how many times it was started.
15289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note that if a stopped service still has {@link ServiceConnection}
15309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * objects bound to it with the {@link #BIND_AUTO_CREATE} set, it will
15319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be destroyed until all of these bindings are removed.  See
15329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.app.Service} documentation for more details on a
15339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service's lifecycle.
15349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function will throw {@link SecurityException} if you do not
15369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have permission to stop the given service.
15379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param service Description of the service to be stopped.  The Intent may
15399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      specify either an explicit component name to start, or a logical
15409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      description (action, category, etc) to match an
15419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      {@link IntentFilter} published by a service.
15429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If there is a service matching the given Intent that is already
15449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * running, then it is stopped and true is returned; else false is returned.
15459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws SecurityException
15479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #startService
15499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
15509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean stopService(Intent service);
15519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
15537767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn     * @hide like {@link #startService(Intent)} but for a specific user.
15547767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn     */
15557767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn    public abstract ComponentName startServiceAsUser(Intent service, UserHandle user);
15567767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn
15577767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn    /**
15587767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn     * @hide like {@link #stopService(Intent)} but for a specific user.
15597767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn     */
15607767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn    public abstract boolean stopServiceAsUser(Intent service, UserHandle user);
15617767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn
15627767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn    /**
15639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connect to an application service, creating it if needed.  This defines
15649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a dependency between your application and the service.  The given
1565f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa     * <var>conn</var> will receive the service object when it is created and be
15669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * told if it dies and restarts.  The service will be considered required
15679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by the system only for as long as the calling context exists.  For
15689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * example, if this Context is an Activity that is stopped, the service will
15699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be required to continue running until the Activity is resumed.
15709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function will throw {@link SecurityException} if you do not
15729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have permission to bind to the given service.
15739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1574f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa     * <p class="note">Note: this method <em>can not be called from a
15759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link BroadcastReceiver} component</em>.  A pattern you can use to
1576f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa     * communicate from a BroadcastReceiver to a Service is to call
15779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #startService} with the arguments containing the command to be
15789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sent, with the service calling its
15799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.Service#stopSelf(int)} method when done executing
15809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that command.  See the API demo App/Service/Service Start Arguments
15819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Controller for an illustration of this.  It is okay, however, to use
1582f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa     * this method from a BroadcastReceiver that has been registered with
15839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerReceiver}, since the lifetime of this BroadcastReceiver
15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is tied to another object (the one that registered it).</p>
15859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param service Identifies the service to connect to.  The Intent may
15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      specify either an explicit component name, or a logical
15889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      description (action, category, etc) to match an
15899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      {@link IntentFilter} published by a service.
15909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param conn Receives information as the service is started and stopped.
159179b3317b775810bac088b0998c48eb6506e2578cChristopher Tate     *      This must be a valid ServiceConnection object; it must not be null.
15924b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * @param flags Operation options for the binding.  May be 0,
1593c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     *          {@link #BIND_AUTO_CREATE}, {@link #BIND_DEBUG_UNBIND},
1594c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     *          {@link #BIND_NOT_FOREGROUND}, {@link #BIND_ABOVE_CLIENT},
1595c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     *          {@link #BIND_ALLOW_OOM_MANAGEMENT}, or
1596c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn     *          {@link #BIND_WAIVE_PRIORITY}.
15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If you have successfully bound to the service, true is returned;
15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false is returned if the connection is not made so you will not
15999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         receive the service object.
16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws SecurityException
16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unbindService
16049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #startService
16059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #BIND_AUTO_CREATE
16064b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * @see #BIND_DEBUG_UNBIND
16074b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * @see #BIND_NOT_FOREGROUND
16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean bindService(Intent service, ServiceConnection conn,
16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int flags);
16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16137d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn     * Same as {@link #bindService(Intent, ServiceConnection, int)}, but with an explicit userHandle
161437ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani     * argument for use by system server and other multi-user aware code.
161537ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani     * @hide
161637ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani     */
16177d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) {
161837ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani        throw new RuntimeException("Not implemented. Must override in a subclass.");
161937ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani    }
162037ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani
162137ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani    /**
16229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disconnect from an application service.  You will no longer receive
16239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls as the service is restarted, and the service is now allowed to
16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * stop at any time.
16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param conn The connection interface previously supplied to
162779b3317b775810bac088b0998c48eb6506e2578cChristopher Tate     *             bindService().  This parameter must not be null.
16289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #bindService
16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void unbindService(ServiceConnection conn);
16329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Start executing an {@link android.app.Instrumentation} class.  The given
16359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instrumentation component will be run by killing its target application
16369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (if currently running), starting the target process, instantiating the
16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation component, and then letting it drive the application.
16389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function is not synchronous -- it returns as soon as the
16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation has started and while it is running.
16419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Instrumentation is normally only allowed to run against a package
16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that is either unsigned or signed with a signature that the
16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the instrumentation package is also signed with (ensuring the target
16459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * trusts the instrumentation).
16469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param className Name of the Instrumentation component to be run.
16489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param profileFile Optional path to write profiling data as the
16499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation runs, or null for no profiling.
16509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arguments Additional optional arguments to pass to the
16519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation, or null.
16529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns true if the instrumentation was successfully started,
16549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * else false if it could not be found.
16559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean startInstrumentation(ComponentName className,
16579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String profileFile, Bundle arguments);
16589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the handle to a system-level service by name. The class of the
16619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returned object varies by the requested name. Currently available names
16629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are:
16634b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <dl>
16659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #WINDOW_SERVICE} ("window")
16669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> The top-level window manager in which you can place custom
16679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  windows.  The returned object is a {@link android.view.WindowManager}.
16689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #LAYOUT_INFLATER_SERVICE} ("layout_inflater")
16699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.view.LayoutInflater} for inflating layout resources
16709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  in this context.
16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #ACTIVITY_SERVICE} ("activity")
16729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.ActivityManager} for interacting with the
16739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  global activity state of the system.
16749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #POWER_SERVICE} ("power")
16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.os.PowerManager} for controlling power
16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  management.
16779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #ALARM_SERVICE} ("alarm")
16789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.AlarmManager} for receiving intents at the
16799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  time of your choosing.
16809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #NOTIFICATION_SERVICE} ("notification")
16819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.NotificationManager} for informing the user
16829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   of background events.
16839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #KEYGUARD_SERVICE} ("keyguard")
16849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.KeyguardManager} for controlling keyguard.
16859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #LOCATION_SERVICE} ("location")
16869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.location.LocationManager} for controlling location
16879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   (e.g., GPS) updates.
16889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #SEARCH_SERVICE} ("search")
16899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.SearchManager} for handling search.
16909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #VIBRATOR_SERVICE} ("vibrator")
16919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.os.Vibrator} for interacting with the vibrator
16929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  hardware.
16939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #CONNECTIVITY_SERVICE} ("connection")
16949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.net.ConnectivityManager ConnectivityManager} for
16959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  handling management of network connections.
16969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #WIFI_SERVICE} ("wifi")
16979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.net.wifi.WifiManager WifiManager} for management of
16989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Wi-Fi connectivity.
16999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <dt> {@link #INPUT_METHOD_SERVICE} ("input_method")
17009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <dd> An {@link android.view.inputmethod.InputMethodManager InputMethodManager}
17019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for management of input methods.
170253332883543868fb83e111a07306368b7772b340Tobias Haamel     * <dt> {@link #UI_MODE_SERVICE} ("uimode")
170353332883543868fb83e111a07306368b7772b340Tobias Haamel     * <dd> An {@link android.app.UiModeManager} for controlling UI modes.
17047083c42fff819b2c4949984a461bd54e9fa822a3Steve Howard     * <dt> {@link #DOWNLOAD_SERVICE} ("download")
1705d58429f9acdb33f05bdb233b7bba495de80cb336Steve Howard     * <dd> A {@link android.app.DownloadManager} for requesting HTTP downloads
17069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </dl>
17074b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
17089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note:  System services obtained via this API may be closely associated with
17099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the Context in which they are obtained from.  In general, do not share the
17109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service objects between various different contexts (Activities, Applications,
17119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Services, Providers, etc.)
17129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the desired service.
17144b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
17159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The service or null if the name does not exist.
17164b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
17179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #WINDOW_SERVICE
17189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.WindowManager
17199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #LAYOUT_INFLATER_SERVICE
17209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.LayoutInflater
17219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #ACTIVITY_SERVICE
17229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.ActivityManager
17239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #POWER_SERVICE
17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.os.PowerManager
17259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #ALARM_SERVICE
17269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.AlarmManager
17279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #NOTIFICATION_SERVICE
17289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.NotificationManager
17299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #KEYGUARD_SERVICE
17309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.KeyguardManager
17319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #LOCATION_SERVICE
17329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.location.LocationManager
17339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #SEARCH_SERVICE
17349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.SearchManager
17359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #SENSOR_SERVICE
17369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.hardware.SensorManager
1737c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * @see #STORAGE_SERVICE
1738b104340496e3a531e26c8f428c808eca0e039f50San Mehat     * @see android.os.storage.StorageManager
17399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #VIBRATOR_SERVICE
17409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.os.Vibrator
17419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #CONNECTIVITY_SERVICE
17429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.ConnectivityManager
17439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #WIFI_SERVICE
17449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.wifi.WifiManager
17459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #AUDIO_SERVICE
17469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.media.AudioManager
1747b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * @see #MEDIA_ROUTER_SERVICE
1748b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * @see android.media.MediaRouter
17499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #TELEPHONY_SERVICE
17509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.telephony.TelephonyManager
17519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #INPUT_METHOD_SERVICE
17529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.inputmethod.InputMethodManager
175353332883543868fb83e111a07306368b7772b340Tobias Haamel     * @see #UI_MODE_SERVICE
175453332883543868fb83e111a07306368b7772b340Tobias Haamel     * @see android.app.UiModeManager
17557083c42fff819b2c4949984a461bd54e9fa822a3Steve Howard     * @see #DOWNLOAD_SERVICE
1756d58429f9acdb33f05bdb233b7bba495de80cb336Steve Howard     * @see android.app.DownloadManager
17579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Object getSystemService(String name);
17599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
17629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.os.PowerManager} for controlling power management,
17639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * including "wake locks," which let you keep the device on while
17649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * you're running long tasks.
17659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String POWER_SERVICE = "power";
17674b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
17689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
17709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.WindowManager} for accessing the system's window
17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * manager.
17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
17749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.WindowManager
17759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String WINDOW_SERVICE = "window";
17774b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
17789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
17809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.LayoutInflater} for inflating layout resources in this
17819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * context.
17829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
17849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.LayoutInflater
17859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater";
17874b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
17889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
1790603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * {@link android.accounts.AccountManager} for receiving intents at a
1791603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * time of your choosing.
1792603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     *
1793603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * @see #getSystemService
1794603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * @see android.accounts.AccountManager
1795603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     */
1796603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    public static final String ACCOUNT_SERVICE = "account";
17974b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
1798603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    /**
1799603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * Use with {@link #getSystemService} to retrieve a
18009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.ActivityManager} for interacting with the global
18019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * system state.
18029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.ActivityManager
18059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String ACTIVITY_SERVICE = "activity";
18074b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
18089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
18109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.AlarmManager} for receiving intents at a
18119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * time of your choosing.
18129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.AlarmManager
18159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String ALARM_SERVICE = "alarm";
18174b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
18189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
18209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.NotificationManager} for informing the user of
18219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * background events.
18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.NotificationManager
18259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String NOTIFICATION_SERVICE = "notification";
18274b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
18289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
183075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * {@link android.view.accessibility.AccessibilityManager} for giving the user
183175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * feedback for UI events through the registered event listeners.
183275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
183375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #getSystemService
183475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see android.view.accessibility.AccessibilityManager
183575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
183675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final String ACCESSIBILITY_SERVICE = "accessibility";
18374b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
183875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
183975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Use with {@link #getSystemService} to retrieve a
18409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.NotificationManager} for controlling keyguard.
18419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.KeyguardManager
18449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String KEYGUARD_SERVICE = "keyguard";
18464b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
18479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
18499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.location.LocationManager} for controlling location
18509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * updates.
18519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.location.LocationManager
18549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String LOCATION_SERVICE = "location";
1856a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao
1857a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao    /**
1858a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * Use with {@link #getSystemService} to retrieve a
1859a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * {@link android.location.CountryDetector} for detecting the country that
1860a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * the user is in.
1861a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     *
1862a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * @hide
1863a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     */
1864a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao    public static final String COUNTRY_DETECTOR = "country_detector";
1865a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao
18669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
18689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.app.SearchManager} for handling searches.
18699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.SearchManager
18729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String SEARCH_SERVICE = "search";
18744b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
18759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
18779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.hardware.SensorManager} for accessing sensors.
18789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.hardware.SensorManager
18819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String SENSOR_SERVICE = "sensor";
18834b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
18849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1885c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * Use with {@link #getSystemService} to retrieve a {@link
188602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root     * android.os.storage.StorageManager} for accessing system storage
1887c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * functions.
1888c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     *
1889c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * @see #getSystemService
1890b104340496e3a531e26c8f428c808eca0e039f50San Mehat     * @see android.os.storage.StorageManager
1891c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     */
1892c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat    public static final String STORAGE_SERVICE = "storage";
1893c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat
1894c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat    /**
18959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
18969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.server.WallpaperService for accessing wallpapers.
18979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
18999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String WALLPAPER_SERVICE = "wallpaper";
19014b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
19029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
19049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Vibrator} for interacting with the vibration hardware.
19059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
19079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.os.Vibrator
19089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String VIBRATOR_SERVICE = "vibrator";
19109e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt
19119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
19139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.app.StatusBarManager} for interacting with the status bar.
19149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
19169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.StatusBarManager
19179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
19189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String STATUS_BAR_SERVICE = "statusbar";
19209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
19239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.net.ConnectivityManager} for handling management of
19249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * network connections.
19259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
19279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.ConnectivityManager
19289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String CONNECTIVITY_SERVICE = "connectivity";
19309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
19339e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * android.net.ThrottleManager} for handling management of
19349e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * throttling.
19359e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     *
19369e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * @hide
19379e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * @see #getSystemService
19389e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * @see android.net.ThrottleManager
19399e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     */
19409e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt    public static final String THROTTLE_SERVICE = "throttle";
19419e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt
19429e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt    /**
19439e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * Use with {@link #getSystemService} to retrieve a {@link
19448662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     * android.os.IUpdateLock} for managing runtime sequences that
19458662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     * must not be interrupted by headless OTA application or similar.
19468662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     *
19478662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     * @hide
19488662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     * @see #getSystemService
19498662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     * @see android.os.UpdateLock
19508662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     */
19518662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate    public static final String UPDATE_LOCK_SERVICE = "updatelock";
19528662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate
19538662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate    /**
19548662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate     * Use with {@link #getSystemService} to retrieve a {@link
1955d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * android.net.NetworkManagementService} for handling management of
1956d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * system network services
1957d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     *
1958d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * @hide
1959d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * @see #getSystemService
1960d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * @see android.net.NetworkManagementService
1961d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     */
1962d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat    public static final String NETWORKMANAGEMENT_SERVICE = "network_management";
1963d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat
1964eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    /** {@hide} */
196575279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey    public static final String NETWORK_STATS_SERVICE = "netstats";
196675279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey    /** {@hide} */
1967eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    public static final String NETWORK_POLICY_SERVICE = "netpolicy";
1968eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
1969d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat    /**
1970d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * Use with {@link #getSystemService} to retrieve a {@link
19719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.net.wifi.WifiManager} for handling management of
19729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Wi-Fi access.
19739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
19759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.wifi.WifiManager
19769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String WIFI_SERVICE = "wifi";
19784b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
19799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
198055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync     * Use with {@link #getSystemService} to retrieve a {@link
198155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync     * android.net.wifi.p2p.WifiP2pManager} for handling management of
1982651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff     * Wi-Fi peer-to-peer connections.
198355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync     *
198455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync     * @see #getSystemService
198555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync     * @see android.net.wifi.p2p.WifiP2pManager
198655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync     */
198755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync    public static final String WIFI_P2P_SERVICE = "wifip2p";
198855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync
198955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync    /**
19907d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff     * Use with {@link #getSystemService} to retrieve a {@link
199160309fc7bb95c9b3fc3e0ed60aa1eeb35bd13a68Irfan Sheriff     * android.net.nsd.NsdManager} for handling management of network service
19927d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff     * discovery
19937d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff     *
19947d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff     * @see #getSystemService
199560309fc7bb95c9b3fc3e0ed60aa1eeb35bd13a68Irfan Sheriff     * @see android.net.nsd.NsdManager
19967d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff     */
19977d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff    public static final String NSD_SERVICE = "servicediscovery";
19987d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff
19997d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff    /**
20009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
20019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.media.AudioManager} for handling management of volume,
20029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ringer modes and audio routing.
20034b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
20049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
20059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.media.AudioManager
20069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
20079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String AUDIO_SERVICE = "audio";
20084b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
20099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
20109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
2011b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * {@link android.media.MediaRouter} for controlling and managing
2012b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * routing of media.
2013b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     *
2014b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * @see #getSystemService
2015b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * @see android.media.MediaRouter
2016b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     */
2017b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn    public static final String MEDIA_ROUTER_SERVICE = "media_router";
2018b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn
2019b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn    /**
2020b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn     * Use with {@link #getSystemService} to retrieve a
20219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.telephony.TelephonyManager} for handling management the
20229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * telephony features of the device.
20234b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
20249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
20259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.telephony.TelephonyManager
20269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
20279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String TELEPHONY_SERVICE = "phone";
20289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
20299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
20309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
20319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.text.ClipboardManager} for accessing and modifying
20329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the contents of the global clipboard.
20334b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
20349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
20359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.text.ClipboardManager
20369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
20379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String CLIPBOARD_SERVICE = "clipboard";
20389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
20399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
20404b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * Use with {@link #getSystemService} to retrieve a
20419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.inputmethod.InputMethodManager} for accessing input
20429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * methods.
20439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
20449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
20459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
20469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String INPUT_METHOD_SERVICE = "input_method";
20479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
20489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
20499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
2050988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * {@link android.view.textservice.TextServicesManager} for accessing
2051988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * text services.
2052988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     *
2053988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @see #getSystemService
2054988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
2055988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
2056988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
2057988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
2058988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Use with {@link #getSystemService} to retrieve a
2059e38d58bf890c03eb034afd18c62c730c7d735f1cDan Egnor     * {@link android.appwidget.AppWidgetManager} for accessing AppWidgets.
20609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
20619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
20629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
20639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2064c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public static final String APPWIDGET_SERVICE = "appwidget";
2065952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor
20669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2067487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     * Use with {@link #getSystemService} to retrieve an
20684528186e0d65fc68ef0dd1941aa2ac8aefcd55a3Christopher Tate     * {@link android.app.backup.IBackupManager IBackupManager} for communicating
2069487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     * with the backup mechanism.
20707f2054392e9957d3ba8579ef08c29cfb27df564eDianne Hackborn     * @hide
20714b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
2072487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     * @see #getSystemService
2073487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     */
2074487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate    public static final String BACKUP_SERVICE = "backup";
2075952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor
2076952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor    /**
2077952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     * Use with {@link #getSystemService} to retrieve a
20781337b012f8e18c725b1ec17b456dc57a084d594dDan Egnor     * {@link android.os.DropBoxManager} instance for recording
2079952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     * diagnostic logs.
2080952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     * @see #getSystemService
2081952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     */
2082952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor    public static final String DROPBOX_SERVICE = "dropbox";
2083952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor
2084487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate    /**
20854b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     * Use with {@link #getSystemService} to retrieve a
208687bba1ee14279bb14a28d42e27c4ef66d9967bf8Dianne Hackborn     * {@link android.app.admin.DevicePolicyManager} for working with global
2087d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * device policy management.
2088d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     *
2089d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * @see #getSystemService
2090d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     */
2091d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn    public static final String DEVICE_POLICY_SERVICE = "device_policy";
2092d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
2093d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn    /**
209453332883543868fb83e111a07306368b7772b340Tobias Haamel     * Use with {@link #getSystemService} to retrieve a
209553332883543868fb83e111a07306368b7772b340Tobias Haamel     * {@link android.app.UiModeManager} for controlling UI modes.
209653332883543868fb83e111a07306368b7772b340Tobias Haamel     *
209753332883543868fb83e111a07306368b7772b340Tobias Haamel     * @see #getSystemService
209853332883543868fb83e111a07306368b7772b340Tobias Haamel     */
209953332883543868fb83e111a07306368b7772b340Tobias Haamel    public static final String UI_MODE_SERVICE = "uimode";
210053332883543868fb83e111a07306368b7772b340Tobias Haamel
210153332883543868fb83e111a07306368b7772b340Tobias Haamel    /**
2102a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     * Use with {@link #getSystemService} to retrieve a
2103d58429f9acdb33f05bdb233b7bba495de80cb336Steve Howard     * {@link android.app.DownloadManager} for requesting HTTP downloads.
2104a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     *
2105a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     * @see #getSystemService
2106a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     */
2107a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard    public static final String DOWNLOAD_SERVICE = "download";
2108a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard
2109a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard    /**
21102d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang     * Use with {@link #getSystemService} to retrieve a
211150b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly     * {@link android.nfc.NfcManager} for using NFC.
211250b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly     *
211350b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly     * @see #getSystemService
211450b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly     */
211550b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly    public static final String NFC_SERVICE = "nfc";
211650b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly
211750b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly    /**
211850b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly     * Use with {@link #getSystemService} to retrieve a
21191abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh     * {@link android.bluetooth.BluetoothAdapter} for using Bluetooth.
21201abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh     *
21211abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh     * @see #getSystemService
21221abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh     * @hide
21231abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh     */
21241abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh    public static final String BLUETOOTH_SERVICE = "bluetooth";
21251abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh
21261abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh    /**
21271abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh     * Use with {@link #getSystemService} to retrieve a
21282d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang     * {@link android.net.sip.SipManager} for accessing the SIP related service.
21292d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang     *
21302d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang     * @see #getSystemService
21312d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang     */
21322d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang    /** @hide */
21332d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang    public static final String SIP_SERVICE = "sip";
21342d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang
21352d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang    /**
2136e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood     * Use with {@link #getSystemService} to retrieve a {@link
2137c4308f01c965571dc2354107c3574df113e397eeMike Lockwood     * android.hardware.usb.UsbManager} for access to USB devices (as a USB host)
2138e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood     * and for controlling this device's behavior as a USB device.
2139e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood     *
2140e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood     * @see #getSystemService
2141c4308f01c965571dc2354107c3574df113e397eeMike Lockwood     * @see android.harware.usb.UsbManager
2142e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood     */
2143e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood    public static final String USB_SERVICE = "usb";
2144e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood
2145e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood    /**
2146b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     * Use with {@link #getSystemService} to retrieve a {@link
2147b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     * android.hardware.SerialManager} for access to serial ports.
2148b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     *
2149b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     * @see #getSystemService
2150b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     * @see android.harware.SerialManager
2151b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     *
2152b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     * @hide
2153b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood     */
2154b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood    public static final String SERIAL_SERVICE = "serial";
2155b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood
2156b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood    /**
21579df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown     * Use with {@link #getSystemService} to retrieve a
21589df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown     * {@link android.hardware.input.InputManager} for interacting with input devices.
21599df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown     *
21609df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown     * @see #getSystemService
21619df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown     * @see android.hardware.input.InputManager
21629df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown     */
21639df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown    public static final String INPUT_SERVICE = "input";
21649df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown
21659df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown    /**
216607b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     * Use with {@link #getSystemService} to retrieve a
2167fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * {@link android.hardware.display.DisplayManager} for interacting with display devices.
2168fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     *
2169fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @see #getSystemService
2170fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @see android.hardware.display.DisplayManager
2171fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     */
2172fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    public static final String DISPLAY_SERVICE = "display";
2173fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
2174fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    /**
2175fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * Use with {@link #getSystemService} to retrieve a
217607b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     * {@link android.os.SchedulingPolicyService} for managing scheduling policy.
217707b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     *
217807b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     * @see #getSystemService
217907b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     * @see android.os.SchedulingPolicyService
218007b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     *
218107b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     * @hide
218207b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten     */
218307b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten    public static final String SCHEDULING_POLICY_SERVICE = "scheduling_policy";
218407b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten
218507b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten    /**
2186258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * Use with {@link #getSystemService} to retrieve a
2187258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * {@link android.os.UserManager} for managing users on devices that support multiple users.
2188258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     *
2189258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * @see #getSystemService
2190258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     * @see android.os.UserManager
2191258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani     */
2192258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani    public static final String USER_SERVICE = "user";
2193258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani
2194258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani    /**
21959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the given permission is allowed for a particular
21969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process and user ID running in the system.
21979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
21989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
21999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be > 0.
22009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
22019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
22029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the given
22049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed that permission, or
22059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
22069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#checkPermission(String, String)
22089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingPermission
22099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
22109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkPermission(String permission, int pid, int uid);
22119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
22139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process of an IPC you are handling has been
22149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted a particular permission.  This is basically the same as calling
22159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #checkPermission(String, int, int)} with the pid and uid returned
22169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by {@link android.os.Binder#getCallingPid} and
22179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.os.Binder#getCallingUid}.  One important difference
22189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is that if you are not currently processing an IPC, this function
22199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always fail.  This is done to protect against accidentally
22209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * leaking permissions; you can use {@link #checkCallingOrSelfPermission}
22219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to avoid this protection.
22229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
22249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the calling
22269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed that permission, or
22279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
22289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#checkPermission(String, String)
22309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkPermission
22319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingOrSelfPermission
22329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
22339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingPermission(String permission);
22349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
22369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process of an IPC <em>or you</em> have been
22379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted a particular permission.  This is the same as
22389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #checkCallingPermission}, except it grants your own permissions
22399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if you are not currently processing an IPC.  Use with care!
22409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
22429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the calling
22449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed that permission, or
22459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
22469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#checkPermission(String, String)
22489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkPermission
22499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingPermission
22509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
22519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingOrSelfPermission(String permission);
22529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
22549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the given permission is not allowed for a particular process
22559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and user ID running in the system, throw a {@link SecurityException}.
22569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
22589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
22599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
22609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
22619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
22629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkPermission(String, int, int)
22649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
22659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforcePermission(
22669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String permission, int pid, int uid, String message);
22679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
22699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the calling process of an IPC you are handling has not been
22709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted a particular permission, throw a {@link
22719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This is basically the same as calling
22729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #enforcePermission(String, int, int, String)} with the
22739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid and uid returned by {@link android.os.Binder#getCallingPid}
22749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and {@link android.os.Binder#getCallingUid}.  One important
22759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * difference is that if you are not currently processing an IPC,
22769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this function will always throw the SecurityException.  This is
22779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * done to protect against accidentally leaking permissions; you
22789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can use {@link #enforceCallingOrSelfPermission} to avoid this
22799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * protection.
22809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
22829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
22839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingPermission(String)
22859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
22869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingPermission(
22879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String permission, String message);
22889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
22909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If neither you nor the calling process of an IPC you are
22919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * handling has been granted a particular permission, throw a
22929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link SecurityException}.  This is the same as {@link
22939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * #enforceCallingPermission}, except it grants your own
22949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions if you are not currently processing an IPC.  Use
22959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with care!
22969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
22989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
22999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingOrSelfPermission(String)
23019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
23029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingOrSelfPermission(
23039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String permission, String message);
23049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
23059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
23069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Grant permission to access a specific Uri to another package, regardless
23079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of whether that package has general permission to access the Uri's
23089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * content provider.  This can be used to grant specific, temporary
23099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions, typically in response to user interaction (such as the
23109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user opening an attachment that you would like someone else to
23119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * display).
23129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Normally you should use {@link Intent#FLAG_GRANT_READ_URI_PERMISSION
23149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_READ_URI_PERMISSION} or
23159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION
23169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_WRITE_URI_PERMISSION} with the Intent being used to
23179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * start an activity instead of this function directly.  If you use this
23189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * function directly, you should be sure to call
23199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #revokeUriPermission} when the target should no longer be allowed
23209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to access it.
23219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>To succeed, the content provider owning the Uri must have set the
23239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestProvider_grantUriPermissions
23249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * grantUriPermissions} attribute in its manifest or included the
23259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestGrantUriPermission
23269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * &lt;grant-uri-permissions&gt;} tag.
23279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param toPackage The package you would like to allow to access the Uri.
23299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri you would like to grant access to.
23309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The desired access modes.  Any combination of
23319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION
23329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_READ_URI_PERMISSION} or
23339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION
23349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
23359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #revokeUriPermission
23379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
23389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void grantUriPermission(String toPackage, Uri uri,
23399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int modeFlags);
23409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
23419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
23429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Remove all permissions to access a particular content provider Uri
23439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that were previously added with {@link #grantUriPermission}.  The given
23449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Uri will match all previously granted Uris that are the same or a
23459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sub-path of the given Uri.  That is, revoking "content://foo/one" will
23469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * revoke both "content://foo/target" and "content://foo/target/sub", but not
23479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * "content://foo".
23489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri you would like to revoke access to.
23509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The desired access modes.  Any combination of
23519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION
23529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_READ_URI_PERMISSION} or
23539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION
23549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
23559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #grantUriPermission
23579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
23589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void revokeUriPermission(Uri uri, int modeFlags);
23599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
23609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
23619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether a particular process and user ID has been granted
23629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI.  This only checks for permissions
23639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that have been explicitly granted -- if the given process/uid has
23649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * more general access to the URI's content provider then this check will
23659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * always fail.
23669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
23689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
23699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
23709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
23719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
23729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
23739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
23749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the given
23769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed to access that uri, or
23779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
23789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingUriPermission
23809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
23819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkUriPermission(Uri uri, int pid, int uid, int modeFlags);
23829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
23839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
23849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process and user ID has been
23859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted permission to access a specific URI.  This is basically
23869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the same as calling {@link #checkUriPermission(Uri, int, int,
23879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * int)} with the pid and uid returned by {@link
23889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingPid} and {@link
23899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingUid}.  One important difference is
23909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that if you are not currently processing an IPC, this function
23919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always fail.
23929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
23949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
23959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
23969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
23979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
23989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller
23999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is allowed to access that uri, or
24009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
24019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkUriPermission(Uri, int, int, int)
24039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
24049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingUriPermission(Uri uri, int modeFlags);
24059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
24069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
24079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process of an IPC <em>or you</em> has been granted
24089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI.  This is the same as
24099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #checkCallingUriPermission}, except it grants your own permissions
24109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if you are not currently processing an IPC.  Use with care!
24119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
24139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
24149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
24159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
24169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller
24189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is allowed to access that uri, or
24199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
24209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingUriPermission
24229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
24239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingOrSelfUriPermission(Uri uri, int modeFlags);
24249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
24259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
24269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Check both a Uri and normal permission.  This allows you to perform
24279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * both {@link #checkPermission} and {@link #checkUriPermission} in one
24289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call.
24299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri whose permission is to be checked, or null to not
24319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * do this check.
24329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param readPermission The permission that provides overall read access,
24339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null to not do this check.
24349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param writePermission The permission that provides overall write
24359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * acess, or null to not do this check.
24369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
24379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
24389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
24399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
24409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
24419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
24429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller
24449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is allowed to access that uri or holds one of the given permissions, or
24459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
24469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
24479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkUriPermission(Uri uri, String readPermission,
24489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String writePermission, int pid, int uid, int modeFlags);
24499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
24509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
24519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If a particular process and user ID has not been granted
24529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI, throw {@link
24539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This only checks for permissions that have
24549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * been explicitly granted -- if the given process/uid has more
24559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * general access to the URI's content provider then this check
24569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always fail.
24579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
24599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
24609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
24619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
24629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
24639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
24649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
24659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
24669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkUriPermission(Uri, int, int, int)
24689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
24699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceUriPermission(
24709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, int pid, int uid, int modeFlags, String message);
24719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
24729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
24739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the calling process and user ID has not been granted
24749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI, throw {@link
24759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This is basically the same as calling
24769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #enforceUriPermission(Uri, int, int, int, String)} with
24779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the pid and uid returned by {@link
24789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingPid} and {@link
24799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingUid}.  One important difference is
24809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that if you are not currently processing an IPC, this function
24819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always throw a SecurityException.
24829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
24849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
24859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
24869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
24879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
24889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
24899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingUriPermission(Uri, int)
24909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
24919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingUriPermission(
24929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, int modeFlags, String message);
24939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
24949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
24959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the calling process of an IPC <em>or you</em> has not been
24969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted permission to access a specific URI, throw {@link
24979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This is the same as {@link
24989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * #enforceCallingUriPermission}, except it grants your own
24999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions if you are not currently processing an IPC.  Use
25009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with care!
25014b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
25029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
25039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
25049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
25059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
25069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
25079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingOrSelfUriPermission(Uri, int)
25099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
25109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingOrSelfUriPermission(
25119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, int modeFlags, String message);
25129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
25139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
25149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Enforce both a Uri and normal permission.  This allows you to perform
25159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * both {@link #enforcePermission} and {@link #enforceUriPermission} in one
25169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call.
25174b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
25189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri whose permission is to be checked, or null to not
25199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * do this check.
25209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param readPermission The permission that provides overall read access,
25219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null to not do this check.
25229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param writePermission The permission that provides overall write
25239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * acess, or null to not do this check.
25249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
25259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
25269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
25279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
25289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
25299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
25309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
25319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkUriPermission(Uri, String, String, int, int, int)
25339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
25349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceUriPermission(
25359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, String readPermission, String writePermission,
25369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int pid, int uid, int modeFlags, String message);
25379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
25389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
25399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for use with {@link #createPackageContext}: include the application
25409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * code with the context.  This means loading code into the caller's
25419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process, so that {@link #getClassLoader()} can be used to instantiate
25429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the application's classes.  Setting this flags imposes security
25439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * restrictions on what application context you can access; if the
25449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * requested application can not be safely loaded into your process,
25459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.SecurityException will be thrown.  If this flag is not set,
25469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * there will be no restrictions on the packages that can be loaded,
25479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * but {@link #getClassLoader} will always return the default system
25489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * class loader.
25499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
25509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONTEXT_INCLUDE_CODE = 0x00000001;
25519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
25529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
25539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for use with {@link #createPackageContext}: ignore any security
25549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * restrictions on the Context being requested, allowing it to always
25559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be loaded.  For use with {@link #CONTEXT_INCLUDE_CODE} to allow code
25569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be loaded into a process even when it isn't safe to do so.  Use
25579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with extreme care!
25589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
25599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONTEXT_IGNORE_SECURITY = 0x00000002;
25604b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main
2561870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    /**
2562870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * Flag for use with {@link #createPackageContext}: a restricted context may
2563870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * disable specific features. For instance, a View associated with a restricted
2564870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * context would ignore particular XML attributes.
2565870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     */
2566870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    public static final int CONTEXT_RESTRICTED = 0x00000004;
25679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
25689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
25699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a new Context object for the given application name.  This
25709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Context is the same as what the named application gets when it is
25719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * launched, containing the same resources and class loader.  Each call to
25729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this method returns a new instance of a Context object; Context objects
25739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are not shared, however they share common state (Resources, ClassLoader,
25749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * etc) so the Context instance itself is fairly lightweight.
25759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Throws {@link PackageManager.NameNotFoundException} if there is no
25779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application with the given package name.
25789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Throws {@link java.lang.SecurityException} if the Context requested
25809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can not be loaded into the caller's process for security reasons (see
25819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #CONTEXT_INCLUDE_CODE} for more information}.
25829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param packageName Name of the application's package.
25849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param flags Option flags, one of {@link #CONTEXT_INCLUDE_CODE}
25859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *              or {@link #CONTEXT_IGNORE_SECURITY}.
25869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return A Context for the application.
25889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws java.lang.SecurityException
25909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws PackageManager.NameNotFoundException if there is no application with
25919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the given package name
25929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
25939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Context createPackageContext(String packageName,
25949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int flags) throws PackageManager.NameNotFoundException;
2595870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy
2596870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    /**
25976d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey     * Similar to {@link #createPackageContext(String, int)}, but with a
25986d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey     * different {@link UserHandle}. For example, {@link #getContentResolver()}
25996d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey     * will open any {@link Uri} as the given user.
26006d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey     *
26016d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey     * @hide
26026d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey     */
26036d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey    public abstract Context createPackageContextAsUser(
26046d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey            String packageName, int flags, UserHandle user)
26056d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey            throws PackageManager.NameNotFoundException;
26066d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey
26076d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey    /**
2608756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * Return a new Context object for the current Context but whose resources
2609756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * are adjusted to match the given Configuration.  Each call to this method
2610a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * returns a new instance of a Context object; Context objects are not
2611756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * shared, however common state (ClassLoader, other Resources for the
2612756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * same configuration) may be so the Context itself can be fairly lightweight.
2613756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     *
2614756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * @param overrideConfiguration A {@link Configuration} specifying what
2615756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * values to modify in the base Configuration of the original Context's
2616756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * resources.  If the base configuration changes (such as due to an
2617756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * orientation change), the resources of this context will also change except
2618756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     * for those that have been explicitly overridden with a value here.
2619756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     *
2620a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * @return A Context with the given configuration override.
2621756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn     */
2622756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn    public abstract Context createConfigurationContext(Configuration overrideConfiguration);
2623756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn
2624756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn    /**
2625a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * Return a new Context object for the current Context but whose resources
2626a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * are adjusted to match the metrics of the given Display.  Each call to this method
2627a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * returns a new instance of a Context object; Context objects are not
2628a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * shared, however common state (ClassLoader, other Resources for the
2629a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * same configuration) may be so the Context itself can be fairly lightweight.
2630a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     *
2631a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * The returned display Context provides a {@link WindowManager}
2632a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * (see {@link #getSystemService(String)}) that is configured to show windows
2633a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * on the given display.  The WindowManager's {@link WindowManager#getDefaultDisplay}
2634a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * method can be used to retrieve the Display from the returned Context.
2635a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     *
2636a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * @param display A {@link Display} object specifying the display
2637a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * for whose metrics the Context's resources should be tailored and upon which
2638a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * new windows should be shown.
2639a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     *
2640a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * @return A Context for the display.
2641a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     */
2642a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown    public abstract Context createDisplayContext(Display display);
2643a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown
2644a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown    /**
264598365d7663cbd82979a5700faf0050220b01084dJeff Brown     * Gets the compatibility info holder for this context.  This information
264698365d7663cbd82979a5700faf0050220b01084dJeff Brown     * is provided on a per-application basis and is used to simulate lower density
264798365d7663cbd82979a5700faf0050220b01084dJeff Brown     * display metrics for legacy applications.
264898365d7663cbd82979a5700faf0050220b01084dJeff Brown     *
2649a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown     * @param displayId The display id for which to get compatibility info.
265098365d7663cbd82979a5700faf0050220b01084dJeff Brown     * @return The compatibility info holder, or null if not required by the application.
265198365d7663cbd82979a5700faf0050220b01084dJeff Brown     * @hide
265298365d7663cbd82979a5700faf0050220b01084dJeff Brown     */
2653a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown    public abstract CompatibilityInfoHolder getCompatibilityInfo(int displayId);
265498365d7663cbd82979a5700faf0050220b01084dJeff Brown
265598365d7663cbd82979a5700faf0050220b01084dJeff Brown    /**
2656870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * Indicates whether this Context is restricted.
26574b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
2658870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * @return True if this Context is restricted, false otherwise.
26594b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main     *
2660870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * @see #CONTEXT_RESTRICTED
2661870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     */
2662870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    public boolean isRestricted() {
2663870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy        return false;
2664870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    }
26659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
2666