Context.java revision a58a8751b4c2ce457f0082a0baaee61312d56195
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;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Resources;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.TypedArray;
2474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Noriimport android.database.DatabaseErrorHandler;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase.CursorFactory;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Bitmap;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.drawable.Drawable;
29ac695c608ba620e2362f57126d7be453cf5b7e1bAdam Powellimport android.media.MediaScannerConnection.OnScanCompletedListener;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Looper;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileInputStream;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileOutputStream;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface to global information about an application environment.  This is
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an abstract class whose implementation is provided by
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Android system.  It
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * allows access to application-specific resources and classes, as well as
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * up-calls for application-level operations such as launching activities,
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcasting and receiving intents, etc.
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class Context {
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: the default mode, where the created file can only
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be accessed by the calling application (or all applications sharing the
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * same user ID).
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_PRIVATE = 0x0000;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: allow all other applications to have read access
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the created file.
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_WORLD_READABLE = 0x0001;
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: allow all other applications to have write access
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the created file.
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_WORLD_WRITEABLE = 0x0002;
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * File creation mode: for use with {@link #openFileOutput}, if the file
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * already exists then write data to the end of the existing file
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instead of erasing it.
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int MODE_APPEND = 0x8000;
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #bindService}: automatically create the service as long
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * as the binding exists.  Note that while this will create the service,
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * its {@link android.app.Service#onStart} method will still only be called due to an
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * explicit call to {@link #startService}.  Even without that, though,
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this still provides you with access to the service object while the
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service is created.
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Specifying this flag also tells the system to treat the service
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * as being as important as your own process -- that is, when deciding
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * which process should be killed to free memory, the service will only
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be considered a candidate as long as the processes of any such bindings
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is also a candidate to be killed.  This is to avoid situations where
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the service is being continually created and killed due to low memory.
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int BIND_AUTO_CREATE = 0x0001;
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #bindService}: include debugging help for mismatched
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls to unbind.  When this flag is set, the callstack of the following
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #unbindService} call is retained, to be printed if a later
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * incorrect unbind call is made.  Note that doing this requires retaining
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * information about the binding that was made for the lifetime of the app,
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * resulting in a leak -- this should only be used for debugging.
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int BIND_DEBUG_UNBIND = 0x0002;
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10909c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn    /**
11009c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * Flag for {@link #bindService}: don't allow this binding to raise
11109c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * the target service's process to the foreground scheduling priority.
11209c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * It will still be raised to the at least the same memory priority
11309c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * as the client (so that its process will not be killable in any
11409c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * situation where the client is not killable), but for CPU scheduling
11509c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * purposes it may be left in the background.  This only has an impact
11609c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * in the situation where the binding client is a foreground process
11709c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     * and the target service is in a background process.
11809c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn     */
11909c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn    public static final int BIND_NOT_FOREGROUND = 0x0004;
12009c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return an AssetManager instance for your application's package. */
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract AssetManager getAssets();
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return a Resources instance for your application's package. */
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Resources getResources();
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return PackageManager instance to find global package information. */
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract PackageManager getPackageManager();
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return a ContentResolver instance for your application's package. */
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract ContentResolver getContentResolver();
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the Looper for the main thread of the current process.  This is
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the thread used to dispatch calls to application components (activities,
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * services, etc).
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Looper getMainLooper();
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the context of the single, global Application object of the
142e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * current process.  This generally should only be used if you need a
143e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Context whose lifecycle is separate from the current context, that is
144e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * tied to the lifetime of the process rather than the current component.
145e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
146e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>Consider for example how this interacts with
147e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@ #registerReceiver(BroadcastReceiver, IntentFilter)}:
148e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <ul>
149e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li> <p>If used from an Activity context, the receiver is being registered
150e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * within that activity.  This means that you are expected to unregister
151e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * before the activity is done being destroyed; in fact if you do not do
152e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * so, the framework will clean up your leaked registration as it removes
153e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * the activity and log an error.  Thus, if you use the Activity context
154e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * to register a receiver that is static (global to the process, not
155e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * associated with an Activity instance) then that registration will be
156e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * removed on you at whatever point the activity you used is destroyed.
157e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li> <p>If used from the Context returned here, the receiver is being
158e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * registered with the global state associated with your application.  Thus
159e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * it will never be unregistered for you.  This is necessary if the receiver
160e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * is associated with static data, not a particular component.  However
161e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * using the ApplicationContext elsewhere can easily lead to serious leaks
162e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * if you forget to unregister, unbind, etc.
163e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * </ul>
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Context getApplicationContext();
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a localized, styled CharSequence from the application's package's
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default string table.
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resId Resource id for the CharSequence text
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final CharSequence getText(int resId) {
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getResources().getText(resId);
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a localized string from the application's package's
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default string table.
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resId Resource id for the string
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final String getString(int resId) {
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getResources().getString(resId);
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a localized formatted string from the application's package's
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default string table, substituting the format arguments as defined in
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link java.util.Formatter} and {@link java.lang.String#format}.
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resId Resource id for the format string
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param formatArgs The format arguments that will be used for substitution.
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final String getString(int resId, Object... formatArgs) {
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getResources().getString(resId, formatArgs);
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     /**
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set the base theme for this context.  Note that this should be called
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * before any views are instantiated in the Context (for example before
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calling {@link android.app.Activity#setContentView} or
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.LayoutInflater#inflate}).
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resid The style resource describing the theme.
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setTheme(int resid);
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the Theme object associated with this Context.
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Resources.Theme getTheme();
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(int[])}
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(int[])
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int[] attrs) {
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(attrs);
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(int, int[])}
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(int, int[])
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int resid, int[] attrs) throws Resources.NotFoundException {
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(resid, attrs);
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)}
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            AttributeSet set, int[] attrs) {
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(set, attrs, 0, 0);
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve styled attribute information in this Context's theme.  See
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)}
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more information.
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final TypedArray obtainStyledAttributes(
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) {
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTheme().obtainStyledAttributes(
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            set, attrs, defStyleAttr, defStyleRes);
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a class loader you can use to retrieve classes in this package.
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract ClassLoader getClassLoader();
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Return the name of this application's package. */
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String getPackageName();
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2725c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn    /** Return the full application info for this context's package. */
2735c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn    public abstract ApplicationInfo getApplicationInfo();
2745c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2763214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * Return the full path to this context's primary Android package.
2773214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * The Android package is a ZIP file which contains the application's
2783214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * primary resources.
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note: this is not generally useful for applications, since they should
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be directly accessing the file system.
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return String Path to the resources.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String getPackageResourcePath();
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2883214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * Return the full path to this context's primary Android package.
2893214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * The Android package is a ZIP file which contains application's
2903214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root     * primary code and assets.
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note: this is not generally useful for applications, since they should
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be directly accessing the file system.
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return String Path to the code and assets.
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String getPackageCodePath();
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
30023ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * {@hide}
30123ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * Return the full path to the shared prefs file for the given prefs group name.
30223ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     *
30323ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * <p>Note: this is not generally useful for applications, since they should
30423ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     * not be directly accessing the file system.
30523ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato     */
30623ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato    public abstract File getSharedPrefsFile(String name);
30723ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato
30823ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato    /**
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve and hold the contents of the preferences file 'name', returning
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a SharedPreferences through which you can retrieve and modify its
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * values.  Only one instance of the SharedPreferences object is returned
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to any callers for the same name, meaning they will see each other's
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * edits as soon as they are made.
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name Desired preferences file. If a preferences file by this name
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * does not exist, it will be created when you retrieve an
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default operation, {@link #MODE_WORLD_READABLE}
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and {@link #MODE_WORLD_WRITEABLE} to control permissions.
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the single SharedPreferences instance that can be used
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         to retrieve and modify the preference values.
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract SharedPreferences getSharedPreferences(String name,
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int mode);
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Open a private file associated with this Context's application package
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for reading.
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file to open; can not contain path
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             separators.
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return FileInputStream Resulting input stream.
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #fileList
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteFile
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.io.FileInputStream#FileInputStream(String)
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract FileInputStream openFileInput(String name)
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throws FileNotFoundException;
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Open a private file associated with this Context's application package
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for writing.  Creates the file if it doesn't already exist.
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file to open; can not contain path
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             separators.
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default operation, {@link #MODE_APPEND} to append to an existing file,
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #MODE_WORLD_READABLE} and {@link #MODE_WORLD_WRITEABLE} to control
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions.
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return FileOutputStream Resulting output stream.
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_APPEND
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileInput
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #fileList
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteFile
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.io.FileOutputStream#FileOutputStream(String)
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract FileOutputStream openFileOutput(String name, int mode)
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throws FileNotFoundException;
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Delete the given private file associated with this Context's
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application package.
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file to delete; can not contain path
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             separators.
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return True if the file was successfully deleted; else
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false.
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileInput
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #fileList
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.io.File#delete()
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean deleteFile(String name);
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path on the filesystem where a file created with
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #openFileOutput} is stored.
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the file for which you would like to get
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *          its path.
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns an absolute path to the given file.
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getFilesDir
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getDir
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getFileStreamPath(String name);
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path to the directory on the filesystem where
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * files created with {@link #openFileOutput} are stored.
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the path of the directory holding application files.
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getFileStreamPath
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getDir
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getFilesDir();
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
419e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Returns the absolute path to the directory on the external filesystem
420e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * (that is somewhere on {@link android.os.Environment#getExternalStorageDirectory()
421acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * Environment.getExternalStorageDirectory()}) where the application can
422e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * place persistent files it owns.  These files are private to the
423e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * applications, and not typically visible to the user as media.
424e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
425e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>This is like {@link #getFilesDir()} in that these
426e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files will be deleted when the application is uninstalled, however there
427e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * are some important differences:
428e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
429e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <ul>
430e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>External files are not always available: they will disappear if the
431e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * user mounts the external storage on a computer or removes it.  See the
432e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * APIs on {@link android.os.Environment} for information in the storage state.
433e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>There is no security enforced with these files.  All applications
434e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * can read and write files placed here.
435e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * </ul>
436e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
437e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>Here is an example of typical code to manipulate a file in
438e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * an application's private storage:</p>
439e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
440e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java
441e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * private_file}
442e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
443acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * <p>If you supply a non-null <var>type</var> to this function, the returned
444e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * file will be a path to a sub-directory of the given type.  Though these files
445e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * are not automatically scanned by the media scanner, you can explicitly
446e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * add them to the media database with
447e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.media.MediaScannerConnection#scanFile(Context, String[], String[],
448b7c8c76180dc1abbf55c734ab121a7a2469060f6Ray Chen     *      OnScanCompletedListener) MediaScannerConnection.scanFile}.
449e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Note that this is not the same as
450e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#getExternalStoragePublicDirectory
451e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Environment.getExternalStoragePublicDirectory()}, which provides
452e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * directories of media shared by all applications.  The
453e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * directories returned here are
454acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * owned by the application, and their contents will be removed when the
455e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * application is uninstalled.  Unlike
456e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#getExternalStoragePublicDirectory
457e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Environment.getExternalStoragePublicDirectory()}, the directory
458e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * returned here will be automatically created for you.
459e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
460e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>Here is an example of typical code to manipulate a picture in
461e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * an application's private storage and add it to the media database:</p>
462e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
463e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java
464e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * private_picture}
465e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
466e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @param type The type of files directory to return.  May be null for
467e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * the root of the files directory or one of
468e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * the following Environment constants for a subdirectory:
469e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_MUSIC},
470e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_PODCASTS},
471e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_RINGTONES},
472e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_ALARMS},
473e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_NOTIFICATIONS},
474e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_PICTURES}, or
475e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * {@link android.os.Environment#DIRECTORY_MOVIES}.
476e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
477e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @return Returns the path of the directory holding application files
478e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * on external storage.  Returns null if external storage is not currently
479e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * mounted so it could not ensure the path exists; you will need to call
480e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * this method again when it is available.
481e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
482e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @see #getFilesDir
483acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn     * @see android.os.Environment#getExternalStoragePublicDirectory
484e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     */
485e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    public abstract File getExternalFilesDir(String type);
486e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn
487e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    /**
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path to the application specific cache directory
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on the filesystem. These files will be ones that get deleted first when the
490e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * device runs low on storage.
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * There is no guarantee when these files will be deleted.
492e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
493e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <strong>Note: you should not <em>rely</em> on the system deleting these
494e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files for you; you should always have a reasonable maximum, such as 1 MB,
495e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * for the amount of space you consume with cache files, and prune those
496e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files when exceeding that space.</strong>
497e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the path of the directory holding application cache files.
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getFileStreamPath
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getDir
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getCacheDir();
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
507e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Returns the absolute path to the directory on the external filesystem
508e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * (that is somewhere on {@link android.os.Environment#getExternalStorageDirectory()
509e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * Environment.getExternalStorageDirectory()} where the application can
510e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * place cache files it owns.
511e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
512e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <p>This is like {@link #getCacheDir()} in that these
513e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * files will be deleted when the application is uninstalled, however there
514e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * are some important differences:
515e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
516e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <ul>
517e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>The platform does not monitor the space available in external storage,
518e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * and thus will not automatically delete these files.  Note that you should
519e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * be managing the maximum space you will use for these anyway, just like
520e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * with {@link #getCacheDir()}.
521e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>External files are not always available: they will disappear if the
522e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * user mounts the external storage on a computer or removes it.  See the
523e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * APIs on {@link android.os.Environment} for information in the storage state.
524e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * <li>There is no security enforced with these files.  All applications
525e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * can read and write files placed here.
526e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * </ul>
527e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
528e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @return Returns the path of the directory holding application cache files
529e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * on external storage.  Returns null if external storage is not currently
530e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * mounted so it could not ensure the path exists; you will need to call
531e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * this method again when it is available.
532e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     *
533e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     * @see #getCacheDir
534e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn     */
535e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    public abstract File getExternalCacheDir();
536e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn
537e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn    /**
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an array of strings naming the private files associated with
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this Context's application package.
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Array of strings naming the private files.
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileInput
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteFile
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String[] fileList();
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve, creating if needed, a new directory in which the application
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can place its own custom data files.  You can use the returned File
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * object to create and access files in this directory.  Note that files
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * created through a File object will only be accessible by your own
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application; you can only set the mode of the entire directory, not
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of individual files.
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name Name of the directory to retrieve.  This is a directory
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that is created as part of your application data.
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * default operation, {@link #MODE_WORLD_READABLE} and
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #MODE_WORLD_WRITEABLE} to control permissions.
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns a File object for the requested directory.  The directory
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will have been created if it does not already exist.
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openFileOutput(String, int)
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getDir(String name, int mode);
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Open a new private SQLiteDatabase associated with this Context's
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application package.  Create the database file if it doesn't exist.
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name (unique in the application package) of the database.
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     default operation, {@link #MODE_WORLD_READABLE}
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     and {@link #MODE_WORLD_WRITEABLE} to control permissions.
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param factory An optional factory class that is called to instantiate a
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     cursor when query is called.
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The contents of a newly created database with the given name.
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws android.database.sqlite.SQLiteException if the database file could not be opened.
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_PRIVATE
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_READABLE
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #MODE_WORLD_WRITEABLE
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteDatabase
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract SQLiteDatabase openOrCreateDatabase(String name,
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int mode, CursorFactory factory);
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
59374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * Open a new private SQLiteDatabase associated with this Context's
59474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * application package.  Creates the database file if it doesn't exist.
59574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *
59674f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * <p>Accepts input param: a concrete instance of {@link DatabaseErrorHandler} to be
59774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * used to handle corruption when sqlite reports database corruption.</p>
59874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *
59974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param name The name (unique in the application package) of the database.
60074f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the
60174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *     default operation, {@link #MODE_WORLD_READABLE}
60274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *     and {@link #MODE_WORLD_WRITEABLE} to control permissions.
60374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param factory An optional factory class that is called to instantiate a
60474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *     cursor when query is called.
60574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @param errorHandler the {@link DatabaseErrorHandler} to be used when sqlite reports database
60603acd51bae7d3fe746d21aa89f5b6de539d92bc8Vasu Nori     * corruption. if null, {@link android.database.DefaultDatabaseErrorHandler} is assumed.
60774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @return The contents of a newly created database with the given name.
60874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @throws android.database.sqlite.SQLiteException if the database file could not be opened.
60974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     *
61074f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #MODE_PRIVATE
61174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #MODE_WORLD_READABLE
61274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #MODE_WORLD_WRITEABLE
61374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     * @see #deleteDatabase
61474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori     */
61574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori    public abstract SQLiteDatabase openOrCreateDatabase(String name,
61674f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori            int mode, CursorFactory factory, DatabaseErrorHandler errorHandler);
61774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori
61874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori    /**
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Delete an existing private SQLiteDatabase associated with this Context's
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application package.
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name (unique in the application package) of the
6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             database.
6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return True if the database was successfully deleted; else false.
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openOrCreateDatabase
6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean deleteDatabase(String name);
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the absolute path on the filesystem where a database created with
6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #openOrCreateDatabase} is stored.
6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the database for which you would like to get
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *          its path.
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns an absolute path to the given database.
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openOrCreateDatabase
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract File getDatabasePath(String name);
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an array of strings naming the private databases associated with
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this Context's application package.
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Array of strings naming the private databases.
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #openOrCreateDatabase
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #deleteDatabase
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract String[] databaseList();
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6564c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#getDrawable
6578cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.get()} instead.
6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6594a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Drawable getWallpaper();
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6634c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#peekDrawable
6648cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.peek()} instead.
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6664a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Drawable peekWallpaper();
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6708cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#getDesiredMinimumWidth()
6718cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.getDesiredMinimumWidth()} instead.
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6734a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int getWallpaperDesiredMinimumWidth();
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6778cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#getDesiredMinimumHeight()
6788cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.getDesiredMinimumHeight()} instead.
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6804a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int getWallpaperDesiredMinimumHeight();
6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6844c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#setBitmap(Bitmap)
6858cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.set()} instead.
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6874a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setWallpaper(Bitmap bitmap) throws IOException;
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6914c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#setStream(InputStream)
6928cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.set()} instead.
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6944a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setWallpaper(InputStream data) throws IOException;
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6988cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * @deprecated Use {@link android.app.WallpaperManager#clear
6998cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn     * WallpaperManager.clear()} instead.
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7014a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    @Deprecated
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void clearWallpaper() throws IOException;
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Launch a new activity.  You will not receive any information about when
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the activity exits.
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note that if this method is being called from outside of an
7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.Activity} Context, then the Intent must include
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link Intent#FLAG_ACTIVITY_NEW_TASK} launch flag.  This is because,
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * without being started from an existing Activity, there is no existing
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * task in which to place the new activity and thus it needs to be placed
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in its own separate task.
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method throws {@link ActivityNotFoundException}
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if there was no Activity found to run the given Intent.
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The description of the activity to start.
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws ActivityNotFoundException
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#resolveActivity
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void startActivity(Intent intent);
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
727fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * Like {@link #startActivity(Intent)}, but taking a IntentSender
728fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * to start.  If the IntentSender is for an activity, that activity will be started
729ae22c05b91d1e7a458066792eb5cfc0974c1be9eDianne Hackborn     * as if you had called the regular {@link #startActivity(Intent)}
730fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * here; otherwise, its associated action will be executed (such as
731fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * sending a broadcast) as if you had called
732fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * {@link IntentSender#sendIntent IntentSender.sendIntent} on it.
733fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     *
734fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param intent The IntentSender to launch.
735fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param fillInIntent If non-null, this will be provided as the
736fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * intent parameter to {@link IntentSender#sendIntent}.
737fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param flagsMask Intent flags in the original IntentSender that you
738fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * would like to change.
739fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param flagsValues Desired values for any bits set in
740fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * <var>flagsMask</var>
741fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     * @param extraFlags Always set to 0.
742fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn     */
743fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn    public abstract void startIntentSender(IntentSender intent,
744fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
745fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn            throws IntentSender.SendIntentException;
746fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn
747fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn    /**
7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast the given intent to all interested BroadcastReceivers.  This
7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call is asynchronous; it returns immediately, and you will continue
7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * executing while the receivers are run.  No results are propagated from
7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * receivers and receivers can not abort the broadcast. If you want
7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to allow receivers to propagate results or abort the broadcast, you must
7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * send an ordered broadcast using
7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendOrderedBroadcast(Intent, String)}.
7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent, String)
7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String)
7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendBroadcast(Intent intent);
7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast the given intent to all interested BroadcastReceivers, allowing
7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an optional required permission to be enforced.  This
7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call is asynchronous; it returns immediately, and you will continue
7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * executing while the receivers are run.  No results are propagated from
7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * receivers and receivers can not abort the broadcast. If you want
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to allow receivers to propagate results or abort the broadcast, you must
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * send an ordered broadcast using
7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendOrderedBroadcast(Intent, String)}.
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiverPermission (optional) String naming a permissions that
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               a receiver must hold in order to receive your broadcast.
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               If null, no permission is required.
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String)
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendBroadcast(Intent intent,
7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String receiverPermission);
7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast the given intent to all interested BroadcastReceivers, delivering
7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * them one at a time to allow more preferred receivers to consume the
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * broadcast before it is delivered to less preferred receivers.  This
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call is asynchronous; it returns immediately, and you will continue
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * executing while the receivers are run.
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiverPermission (optional) String naming a permissions that
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               a receiver must hold in order to receive your broadcast.
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               If null, no permission is required.
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendOrderedBroadcast(Intent intent,
8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String receiverPermission);
8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Version of {@link #sendBroadcast(Intent)} that allows you to
8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * receive data back from the broadcast.  This is accomplished by
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * supplying your own BroadcastReceiver when calling, which will be
8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * treated as a final receiver at the end of the broadcast -- its
8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link BroadcastReceiver#onReceive} method will be called with
825efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * the result values collected from the other receivers.  The broadcast will
8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be serialized in the same way as calling
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendOrderedBroadcast(Intent, String)}.
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Like {@link #sendBroadcast(Intent)}, this method is
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * asynchronous; it will return before
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * resultReceiver.onReceive() is called.
8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               Intent will receive the broadcast.
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiverPermission String naming a permissions that
8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               a receiver must hold in order to receive your broadcast.
8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               If null, no permission is required.
8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param resultReceiver Your own BroadcastReceiver to treat as the final
8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                       receiver of the broadcast.
8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param scheduler A custom Handler with which to schedule the
8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                  resultReceiver callback; if null it will be
8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                  scheduled in the Context's main thread.
8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param initialCode An initial value for the result code.  Often
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                    Activity.RESULT_OK.
8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param initialData An initial value for the result data.  Often
8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                    null.
8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param initialExtras An initial value for the result extras.  Often
8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                      null.
8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent, String)
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendOrderedBroadcast(Intent, String)
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendStickyBroadcast(Intent)
856efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.content.BroadcastReceiver
8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.Activity#RESULT_OK
8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendOrderedBroadcast(Intent intent,
8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String receiverPermission, BroadcastReceiver resultReceiver,
8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Handler scheduler, int initialCode, String initialData,
8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle initialExtras);
8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the
8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent you are sending stays around after the broadcast is complete,
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * so that others can quickly retrieve that data through the return
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * value of {@link #registerReceiver(BroadcastReceiver, IntentFilter)}.  In
8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all other ways, this behaves the same as
8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #sendBroadcast(Intent)}.
8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY}
8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission in order to use this API.  If you do not hold that
8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission, {@link SecurityException} will be thrown.
8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to broadcast; all receivers matching this
8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent will receive the broadcast, and the Intent will be held to
8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be re-broadcast to future receivers.
8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast(Intent)
883efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void sendStickyBroadcast(Intent intent);
886efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn
887efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn    /**
888efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * Version of {@link #sendStickyBroadcast} that allows you to
889efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * receive data back from the broadcast.  This is accomplished by
890efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * supplying your own BroadcastReceiver when calling, which will be
891efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * treated as a final receiver at the end of the broadcast -- its
892efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * {@link BroadcastReceiver#onReceive} method will be called with
893efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * the result values collected from the other receivers.  The broadcast will
894efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * be serialized in the same way as calling
895efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * {@link #sendOrderedBroadcast(Intent, String)}.
896efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
897efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * <p>Like {@link #sendBroadcast(Intent)}, this method is
898efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * asynchronous; it will return before
899efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * resultReceiver.onReceive() is called.  Note that the sticky data
900efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * stored is only the data you initially supply to the broadcast, not
901efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * the result of any changes made by the receivers.
902efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
903efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
904efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
905efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param intent The Intent to broadcast; all receivers matching this
906efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *               Intent will receive the broadcast.
907efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param resultReceiver Your own BroadcastReceiver to treat as the final
908efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                       receiver of the broadcast.
909efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param scheduler A custom Handler with which to schedule the
910efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                  resultReceiver callback; if null it will be
911efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                  scheduled in the Context's main thread.
912efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param initialCode An initial value for the result code.  Often
913efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                    Activity.RESULT_OK.
914efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param initialData An initial value for the result data.  Often
915efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                    null.
916efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @param initialExtras An initial value for the result extras.  Often
917efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *                      null.
918efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     *
919efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendBroadcast(Intent)
920efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendBroadcast(Intent, String)
921efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendOrderedBroadcast(Intent, String)
922efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #sendStickyBroadcast(Intent)
923efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see android.content.BroadcastReceiver
924efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see #registerReceiver
925efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     * @see android.app.Activity#RESULT_OK
926efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn     */
927efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn    public abstract void sendStickyOrderedBroadcast(Intent intent,
928efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn            BroadcastReceiver resultReceiver,
929efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn            Handler scheduler, int initialCode, String initialData,
930efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn            Bundle initialExtras);
931efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn
9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Remove the data previously sent with {@link #sendStickyBroadcast},
9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * so that it is as if the sticky broadcast had never happened.
9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY}
9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission in order to use this API.  If you do not hold that
9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission, {@link SecurityException} will be thrown.
9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent that was previously broadcast.
9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendStickyBroadcast
9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void removeStickyBroadcast(Intent intent);
9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
948a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * Register a BroadcastReceiver to be run in the main activity thread.  The
9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>receiver</var> will be called with any broadcast Intent that
9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * matches <var>filter</var>, in the main application thread.
9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>The system may broadcast Intents that are "sticky" -- these stay
9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * around after the broadcast as finished, to be sent to any later
9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registrations. If your IntentFilter matches one of these sticky
9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intents, that Intent will be returned by this function
9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>and</strong> sent to your <var>receiver</var> as if it had just
9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * been broadcast.
9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>There may be multiple sticky Intents that match <var>filter</var>,
9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in which case each of these will be sent to <var>receiver</var>.  In
9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this case, only one of these can be returned directly by the function;
9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * which of these that is returned is arbitrarily decided by the system.
9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If you know the Intent your are registering for is sticky, you can
9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * supply null for your <var>receiver</var>.  In this case, no receiver is
9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registered -- the function simply returns the sticky Intent that
9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * matches <var>filter</var>.  In the case of multiple matches, the same
9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * rules as described above apply.
9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
972a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * <p class="note">Note: this method <em>cannot be called from a
973a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * {@link BroadcastReceiver} component;</em> that is, from a BroadcastReceiver
974a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * that is declared in an application's manifest.  It is okay, however, to call
975a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * this method from another BroadcastReceiver that has itself been registered
976a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * at run time with {@link #registerReceiver}, since the lifetime of such a
977a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate     * registered BroadcastReceiver is tied to the object that registered it.</p>
9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiver The BroadcastReceiver to handle the broadcast.
9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param filter Selects the Intent broadcasts to be received.
9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The first sticky intent found that matches <var>filter</var>,
9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         or null if there are none.
9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)
9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast
9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterReceiver
9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Intent registerReceiver(BroadcastReceiver receiver,
9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                            IntentFilter filter);
9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register to receive intent broadcasts, to run in the context of
9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>scheduler</var>.  See
9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerReceiver(BroadcastReceiver, IntentFilter)} for more
9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * information.  This allows you to enforce permissions on who can
9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * broadcast intents to your receiver, or have the receiver run in
9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a different thread than the main application thread.
9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiver The BroadcastReceiver to handle the broadcast.
10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param filter Selects the Intent broadcasts to be received.
10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param broadcastPermission String naming a permissions that a
10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      broadcaster must hold in order to send an Intent to you.  If null,
10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      no permission is required.
10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param scheduler Handler identifying the thread that will receive
10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      the Intent.  If null, the main thread of the process will be used.
10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The first sticky intent found that matches <var>filter</var>,
10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         or null if there are none.
10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver(BroadcastReceiver, IntentFilter)
10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #sendBroadcast
10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterReceiver
10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Intent registerReceiver(BroadcastReceiver receiver,
10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                            IntentFilter filter,
10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                            String broadcastPermission,
10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                            Handler scheduler);
10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister a previously registered BroadcastReceiver.  <em>All</em>
10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * filters that have been registered for this BroadcastReceiver will be
10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * removed.
10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param receiver The BroadcastReceiver to unregister.
10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerReceiver
10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void unregisterReceiver(BroadcastReceiver receiver);
10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Request that a given application service be started.  The Intent
10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can either contain the complete class name of a specific service
10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation to start, or an abstract definition through the
10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * action and other fields of the kind of service to start.  If this service
10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is not already running, it will be instantiated and started (creating a
10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process for it if needed); if it is running then it remains running.
10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Every call to this method will result in a corresponding call to
10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the target service's {@link android.app.Service#onStart} method,
10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with the <var>intent</var> given here.  This provides a convenient way
10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to submit jobs to a service without having to bind and call on to its
10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * interface.
10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Using startService() overrides the default service lifetime that is
10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * managed by {@link #bindService}: it requires the service to remain
10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * running until {@link #stopService} is called, regardless of whether
10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * any clients are connected to it.  Note that calls to startService()
10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are not nesting: no matter how many times you call startService(),
10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a single call to {@link #stopService} will stop it.
10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>The system attempts to keep running services around as much as
10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * possible.  The only time they should be stopped is if the current
10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * foreground application is using so many resources that the service needs
10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be killed.  If any errors happen in the service's process, it will
10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * automatically be restarted.
10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function will throw {@link SecurityException} if you do not
10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have permission to start the given service.
10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param service Identifies the service to be started.  The Intent may
10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      specify either an explicit component name to start, or a logical
10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      description (action, category, etc) to match an
10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      {@link IntentFilter} published by a service.  Additional values
10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      may be included in the Intent extras to supply arguments along with
10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      this specific start call.
10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If the service is being started or is already running, the
10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link ComponentName} of the actual service that was started is
10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returned; else if the service does not exist null is returned.
10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws SecurityException
10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #stopService
10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #bindService
10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract ComponentName startService(Intent service);
10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Request that a given application service be stopped.  If the service is
10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not running, nothing happens.  Otherwise it is stopped.  Note that calls
10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to startService() are not counted -- this stops the service no matter
10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * how many times it was started.
10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note that if a stopped service still has {@link ServiceConnection}
10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * objects bound to it with the {@link #BIND_AUTO_CREATE} set, it will
10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be destroyed until all of these bindings are removed.  See
10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the {@link android.app.Service} documentation for more details on a
10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service's lifecycle.
10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function will throw {@link SecurityException} if you do not
10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have permission to stop the given service.
10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param service Description of the service to be stopped.  The Intent may
10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      specify either an explicit component name to start, or a logical
10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      description (action, category, etc) to match an
10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      {@link IntentFilter} published by a service.
11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If there is a service matching the given Intent that is already
11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * running, then it is stopped and true is returned; else false is returned.
11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws SecurityException
11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #startService
11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean stopService(Intent service);
11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connect to an application service, creating it if needed.  This defines
11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a dependency between your application and the service.  The given
11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>conn</var> will receive the service object when its created and be
11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * told if it dies and restarts.  The service will be considered required
11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by the system only for as long as the calling context exists.  For
11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * example, if this Context is an Activity that is stopped, the service will
11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not be required to continue running until the Activity is resumed.
11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function will throw {@link SecurityException} if you do not
11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have permission to bind to the given service.
11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p class="note">Note: this method <em>can not be called from an
11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link BroadcastReceiver} component</em>.  A pattern you can use to
11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * communicate from an BroadcastReceiver to a Service is to call
11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #startService} with the arguments containing the command to be
11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sent, with the service calling its
11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.Service#stopSelf(int)} method when done executing
11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that command.  See the API demo App/Service/Service Start Arguments
11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Controller for an illustration of this.  It is okay, however, to use
11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this method from an BroadcastReceiver that has been registered with
11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerReceiver}, since the lifetime of this BroadcastReceiver
11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is tied to another object (the one that registered it).</p>
11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param service Identifies the service to connect to.  The Intent may
11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      specify either an explicit component name, or a logical
11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      description (action, category, etc) to match an
11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      {@link IntentFilter} published by a service.
11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param conn Receives information as the service is started and stopped.
11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param flags Operation options for the binding.  May be 0 or
11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *          {@link #BIND_AUTO_CREATE}.
11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If you have successfully bound to the service, true is returned;
11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false is returned if the connection is not made so you will not
11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         receive the service object.
11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws SecurityException
11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unbindService
11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #startService
11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #BIND_AUTO_CREATE
11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean bindService(Intent service, ServiceConnection conn,
11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int flags);
11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disconnect from an application service.  You will no longer receive
11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls as the service is restarted, and the service is now allowed to
11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * stop at any time.
11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param conn The connection interface previously supplied to
11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             bindService().
11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #bindService
11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void unbindService(ServiceConnection conn);
11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Start executing an {@link android.app.Instrumentation} class.  The given
11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instrumentation component will be run by killing its target application
11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (if currently running), starting the target process, instantiating the
11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation component, and then letting it drive the application.
11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This function is not synchronous -- it returns as soon as the
11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation has started and while it is running.
11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Instrumentation is normally only allowed to run against a package
11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that is either unsigned or signed with a signature that the
11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the instrumentation package is also signed with (ensuring the target
11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * trusts the instrumentation).
11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param className Name of the Instrumentation component to be run.
11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param profileFile Optional path to write profiling data as the
11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation runs, or null for no profiling.
11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arguments Additional optional arguments to pass to the
11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instrumentation, or null.
11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns true if the instrumentation was successfully started,
11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * else false if it could not be found.
11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean startInstrumentation(ComponentName className,
11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String profileFile, Bundle arguments);
11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the handle to a system-level service by name. The class of the
11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returned object varies by the requested name. Currently available names
11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are:
11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <dl>
11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #WINDOW_SERVICE} ("window")
11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> The top-level window manager in which you can place custom
12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  windows.  The returned object is a {@link android.view.WindowManager}.
12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #LAYOUT_INFLATER_SERVICE} ("layout_inflater")
12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.view.LayoutInflater} for inflating layout resources
12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  in this context.
12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #ACTIVITY_SERVICE} ("activity")
12059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.ActivityManager} for interacting with the
12069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  global activity state of the system.
12079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #POWER_SERVICE} ("power")
12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.os.PowerManager} for controlling power
12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  management.
12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #ALARM_SERVICE} ("alarm")
12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.AlarmManager} for receiving intents at the
12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  time of your choosing.
12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #NOTIFICATION_SERVICE} ("notification")
12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.NotificationManager} for informing the user
12159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   of background events.
12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #KEYGUARD_SERVICE} ("keyguard")
12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.KeyguardManager} for controlling keyguard.
12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #LOCATION_SERVICE} ("location")
12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.location.LocationManager} for controlling location
12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   (e.g., GPS) updates.
12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #SEARCH_SERVICE} ("search")
12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.app.SearchManager} for handling search.
12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #VIBRATOR_SERVICE} ("vibrator")
12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.os.Vibrator} for interacting with the vibrator
12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  hardware.
12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #CONNECTIVITY_SERVICE} ("connection")
12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.net.ConnectivityManager ConnectivityManager} for
12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  handling management of network connections.
12299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dt> {@link #WIFI_SERVICE} ("wifi")
12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <dd> A {@link android.net.wifi.WifiManager WifiManager} for management of
12319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Wi-Fi connectivity.
12329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <dt> {@link #INPUT_METHOD_SERVICE} ("input_method")
12339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <dd> An {@link android.view.inputmethod.InputMethodManager InputMethodManager}
12349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for management of input methods.
123553332883543868fb83e111a07306368b7772b340Tobias Haamel     * <dt> {@link #UI_MODE_SERVICE} ("uimode")
123653332883543868fb83e111a07306368b7772b340Tobias Haamel     * <dd> An {@link android.app.UiModeManager} for controlling UI modes.
12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </dl>
12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note:  System services obtained via this API may be closely associated with
12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the Context in which they are obtained from.  In general, do not share the
12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service objects between various different contexts (Activities, Applications,
12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Services, Providers, etc.)
12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param name The name of the desired service.
12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The service or null if the name does not exist.
12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #WINDOW_SERVICE
12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.WindowManager
12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #LAYOUT_INFLATER_SERVICE
12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.LayoutInflater
12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #ACTIVITY_SERVICE
12539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.ActivityManager
12549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #POWER_SERVICE
12559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.os.PowerManager
12569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #ALARM_SERVICE
12579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.AlarmManager
12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #NOTIFICATION_SERVICE
12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.NotificationManager
12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #KEYGUARD_SERVICE
12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.KeyguardManager
12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #LOCATION_SERVICE
12639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.location.LocationManager
12649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #SEARCH_SERVICE
12659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.SearchManager
12669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #SENSOR_SERVICE
12679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.hardware.SensorManager
1268c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * @see #STORAGE_SERVICE
1269b104340496e3a531e26c8f428c808eca0e039f50San Mehat     * @see android.os.storage.StorageManager
12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #VIBRATOR_SERVICE
12719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.os.Vibrator
12729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #CONNECTIVITY_SERVICE
12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.ConnectivityManager
12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #WIFI_SERVICE
12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.wifi.WifiManager
12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #AUDIO_SERVICE
12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.media.AudioManager
12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #TELEPHONY_SERVICE
12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.telephony.TelephonyManager
12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #INPUT_METHOD_SERVICE
12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.inputmethod.InputMethodManager
128253332883543868fb83e111a07306368b7772b340Tobias Haamel     * @see #UI_MODE_SERVICE
128353332883543868fb83e111a07306368b7772b340Tobias Haamel     * @see android.app.UiModeManager
12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Object getSystemService(String name);
12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.os.PowerManager} for controlling power management,
12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * including "wake locks," which let you keep the device on while
12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * you're running long tasks.
12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String POWER_SERVICE = "power";
1294d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.WindowManager} for accessing the system's window
12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * manager.
12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.WindowManager
13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String WINDOW_SERVICE = "window";
1304d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.LayoutInflater} for inflating layout resources in this
13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * context.
13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.view.LayoutInflater
13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater";
1314d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
1317603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * {@link android.accounts.AccountManager} for receiving intents at a
1318603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * time of your choosing.
1319603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     *
1320603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * @see #getSystemService
1321603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * @see android.accounts.AccountManager
1322603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     */
1323603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    public static final String ACCOUNT_SERVICE = "account";
1324d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
1325603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    /**
1326603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana     * Use with {@link #getSystemService} to retrieve a
13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.ActivityManager} for interacting with the global
13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * system state.
13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.ActivityManager
13329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String ACTIVITY_SERVICE = "activity";
1334d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
13379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.AlarmManager} for receiving intents at a
13389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * time of your choosing.
13399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.AlarmManager
13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String ALARM_SERVICE = "alarm";
1344d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
13479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.NotificationManager} for informing the user of
13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * background events.
13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.NotificationManager
13529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String NOTIFICATION_SERVICE = "notification";
1354d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
135775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * {@link android.view.accessibility.AccessibilityManager} for giving the user
135875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * feedback for UI events through the registered event listeners.
135975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
136075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #getSystemService
136175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see android.view.accessibility.AccessibilityManager
136275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
136375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final String ACCESSIBILITY_SERVICE = "accessibility";
1364d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
136575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
136675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Use with {@link #getSystemService} to retrieve a
13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.app.NotificationManager} for controlling keyguard.
13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.KeyguardManager
13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String KEYGUARD_SERVICE = "keyguard";
1373d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.location.LocationManager} for controlling location
13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * updates.
13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.location.LocationManager
13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String LOCATION_SERVICE = "location";
1383a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao
1384a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao    /**
1385a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * Use with {@link #getSystemService} to retrieve a
1386a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * {@link android.location.CountryDetector} for detecting the country that
1387a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * the user is in.
1388a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     *
1389a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     * @hide
1390a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao     */
1391a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao    public static final String COUNTRY_DETECTOR = "country_detector";
1392a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao
13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.app.SearchManager} for handling searches.
13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.SearchManager
13999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String SEARCH_SERVICE = "search";
1401d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.hardware.SensorManager} for accessing sensors.
14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.hardware.SensorManager
14089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String SENSOR_SERVICE = "sensor";
1410d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
14119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1412c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * Use with {@link #getSystemService} to retrieve a {@link
141302c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root     * android.os.storage.StorageManager} for accessing system storage
1414c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * functions.
1415c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     *
1416c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     * @see #getSystemService
1417b104340496e3a531e26c8f428c808eca0e039f50San Mehat     * @see android.os.storage.StorageManager
1418c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat     */
1419c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat    public static final String STORAGE_SERVICE = "storage";
1420c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat
1421c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat    /**
14229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
14239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.server.WallpaperService for accessing wallpapers.
14249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String WALLPAPER_SERVICE = "wallpaper";
1428d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
14299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Vibrator} for interacting with the vibration hardware.
14329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.os.Vibrator
14359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String VIBRATOR_SERVICE = "vibrator";
14379e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt
14389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.app.StatusBarManager} for interacting with the status bar.
14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.app.StatusBarManager
14449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
14459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String STATUS_BAR_SERVICE = "statusbar";
14479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
14509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.net.ConnectivityManager} for handling management of
14519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * network connections.
14529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.ConnectivityManager
14559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String CONNECTIVITY_SERVICE = "connectivity";
14579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a {@link
14609e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * android.net.ThrottleManager} for handling management of
14619e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * throttling.
14629e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     *
14639e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * @hide
14649e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * @see #getSystemService
14659e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * @see android.net.ThrottleManager
14669e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     */
14679e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt    public static final String THROTTLE_SERVICE = "throttle";
14689e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt
14699e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt    /**
14709e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt     * Use with {@link #getSystemService} to retrieve a {@link
1471d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * android.net.NetworkManagementService} for handling management of
1472d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * system network services
1473d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     *
1474d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * @hide
1475d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * @see #getSystemService
1476d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * @see android.net.NetworkManagementService
1477d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     */
1478d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat    public static final String NETWORKMANAGEMENT_SERVICE = "network_management";
1479d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat
1480d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat    /**
1481d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat     * Use with {@link #getSystemService} to retrieve a {@link
14829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.net.wifi.WifiManager} for handling management of
14839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Wi-Fi access.
14849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.net.wifi.WifiManager
14879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String WIFI_SERVICE = "wifi";
14899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
14929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.media.AudioManager} for handling management of volume,
14939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ringer modes and audio routing.
14949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
14969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.media.AudioManager
14979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String AUDIO_SERVICE = "audio";
14999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
15029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.telephony.TelephonyManager} for handling management the
15039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * telephony features of the device.
15049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
15069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.telephony.TelephonyManager
15079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
15089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String TELEPHONY_SERVICE = "phone";
15099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
15119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
15129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.text.ClipboardManager} for accessing and modifying
15139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the contents of the global clipboard.
15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see android.text.ClipboardManager
15179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
15189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String CLIPBOARD_SERVICE = "clipboard";
15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.inputmethod.InputMethodManager} for accessing input
15239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * methods.
15249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
15269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
15279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String INPUT_METHOD_SERVICE = "input_method";
15289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
15309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use with {@link #getSystemService} to retrieve a
1531e38d58bf890c03eb034afd18c62c730c7d735f1cDan Egnor     * {@link android.appwidget.AppWidgetManager} for accessing AppWidgets.
15329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
15349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getSystemService
15359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1536c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public static final String APPWIDGET_SERVICE = "appwidget";
1537952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor
15389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1539487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     * Use with {@link #getSystemService} to retrieve an
15404528186e0d65fc68ef0dd1941aa2ac8aefcd55a3Christopher Tate     * {@link android.app.backup.IBackupManager IBackupManager} for communicating
1541487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     * with the backup mechanism.
15427f2054392e9957d3ba8579ef08c29cfb27df564eDianne Hackborn     * @hide
15437f2054392e9957d3ba8579ef08c29cfb27df564eDianne Hackborn     *
1544487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     * @see #getSystemService
1545487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate     */
1546487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate    public static final String BACKUP_SERVICE = "backup";
1547952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor
1548952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor    /**
1549952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     * Use with {@link #getSystemService} to retrieve a
15501337b012f8e18c725b1ec17b456dc57a084d594dDan Egnor     * {@link android.os.DropBoxManager} instance for recording
1551952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     * diagnostic logs.
1552952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     * @see #getSystemService
1553952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor     */
1554952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor    public static final String DROPBOX_SERVICE = "dropbox";
1555952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor
1556487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate    /**
1557d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * Use with {@link #getSystemService} to retrieve a
155887bba1ee14279bb14a28d42e27c4ef66d9967bf8Dianne Hackborn     * {@link android.app.admin.DevicePolicyManager} for working with global
1559d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * device policy management.
1560d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     *
1561d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * @see #getSystemService
1562d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     */
1563d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn    public static final String DEVICE_POLICY_SERVICE = "device_policy";
1564d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn
1565d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn    /**
156653332883543868fb83e111a07306368b7772b340Tobias Haamel     * Use with {@link #getSystemService} to retrieve a
156753332883543868fb83e111a07306368b7772b340Tobias Haamel     * {@link android.app.UiModeManager} for controlling UI modes.
156853332883543868fb83e111a07306368b7772b340Tobias Haamel     *
156953332883543868fb83e111a07306368b7772b340Tobias Haamel     * @see #getSystemService
157053332883543868fb83e111a07306368b7772b340Tobias Haamel     */
157153332883543868fb83e111a07306368b7772b340Tobias Haamel    public static final String UI_MODE_SERVICE = "uimode";
157253332883543868fb83e111a07306368b7772b340Tobias Haamel
157353332883543868fb83e111a07306368b7772b340Tobias Haamel    /**
1574a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     * Use with {@link #getSystemService} to retrieve a
1575a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     * {@link android.net.DownloadManager} for requesting HTTP downloads.
1576a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     *
1577a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     * @see #getSystemService
1578a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard     */
1579a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard    public static final String DOWNLOAD_SERVICE = "download";
1580a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard
1581a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard    /**
15829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the given permission is allowed for a particular
15839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process and user ID running in the system.
15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
15869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be > 0.
15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
15889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
15899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the given
15919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed that permission, or
15929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
15939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
15949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#checkPermission(String, String)
15959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingPermission
15969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkPermission(String permission, int pid, int uid);
15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process of an IPC you are handling has been
16019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted a particular permission.  This is basically the same as calling
16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #checkPermission(String, int, int)} with the pid and uid returned
16039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by {@link android.os.Binder#getCallingPid} and
16049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.os.Binder#getCallingUid}.  One important difference
16059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is that if you are not currently processing an IPC, this function
16069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always fail.  This is done to protect against accidentally
16079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * leaking permissions; you can use {@link #checkCallingOrSelfPermission}
16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to avoid this protection.
16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the calling
16139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed that permission, or
16149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
16159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#checkPermission(String, String)
16179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkPermission
16189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingOrSelfPermission
16199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingPermission(String permission);
16219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process of an IPC <em>or you</em> have been
16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted a particular permission.  This is the same as
16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #checkCallingPermission}, except it grants your own permissions
16269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if you are not currently processing an IPC.  Use with care!
16279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the calling
16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed that permission, or
16329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
16339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see PackageManager#checkPermission(String, String)
16359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkPermission
16369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingPermission
16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingOrSelfPermission(String permission);
16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the given permission is not allowed for a particular process
16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and user ID running in the system, throw a {@link SecurityException}.
16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
16459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
16469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
16479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
16489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
16499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkPermission(String, int, int)
16519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforcePermission(
16539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String permission, int pid, int uid, String message);
16549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the calling process of an IPC you are handling has not been
16579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted a particular permission, throw a {@link
16589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This is basically the same as calling
16599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #enforcePermission(String, int, int, String)} with the
16609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid and uid returned by {@link android.os.Binder#getCallingPid}
16619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and {@link android.os.Binder#getCallingUid}.  One important
16629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * difference is that if you are not currently processing an IPC,
16639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this function will always throw the SecurityException.  This is
16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * done to protect against accidentally leaking permissions; you
16659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can use {@link #enforceCallingOrSelfPermission} to avoid this
16669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * protection.
16679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
16699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
16709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingPermission(String)
16729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingPermission(
16749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String permission, String message);
16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If neither you nor the calling process of an IPC you are
16789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * handling has been granted a particular permission, throw a
16799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link SecurityException}.  This is the same as {@link
16809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * #enforceCallingPermission}, except it grants your own
16819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions if you are not currently processing an IPC.  Use
16829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with care!
16839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param permission The name of the permission being checked.
16859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
16869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
16879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingOrSelfPermission(String)
16889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
16899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingOrSelfPermission(
16909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String permission, String message);
16919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
16929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Grant permission to access a specific Uri to another package, regardless
16949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of whether that package has general permission to access the Uri's
16959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * content provider.  This can be used to grant specific, temporary
16969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions, typically in response to user interaction (such as the
16979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user opening an attachment that you would like someone else to
16989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * display).
16999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Normally you should use {@link Intent#FLAG_GRANT_READ_URI_PERMISSION
17019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_READ_URI_PERMISSION} or
17029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION
17039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_WRITE_URI_PERMISSION} with the Intent being used to
17049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * start an activity instead of this function directly.  If you use this
17059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * function directly, you should be sure to call
17069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #revokeUriPermission} when the target should no longer be allowed
17079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to access it.
17089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>To succeed, the content provider owning the Uri must have set the
17109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestProvider_grantUriPermissions
17119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * grantUriPermissions} attribute in its manifest or included the
17129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestGrantUriPermission
17139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * &lt;grant-uri-permissions&gt;} tag.
17149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param toPackage The package you would like to allow to access the Uri.
17169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri you would like to grant access to.
17179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The desired access modes.  Any combination of
17189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION
17199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_READ_URI_PERMISSION} or
17209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION
17219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
17229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #revokeUriPermission
17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void grantUriPermission(String toPackage, Uri uri,
17269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int modeFlags);
17279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Remove all permissions to access a particular content provider Uri
17309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that were previously added with {@link #grantUriPermission}.  The given
17319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Uri will match all previously granted Uris that are the same or a
17329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sub-path of the given Uri.  That is, revoking "content://foo/one" will
17339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * revoke both "content://foo/target" and "content://foo/target/sub", but not
17349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * "content://foo".
17359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri you would like to revoke access to.
17379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The desired access modes.  Any combination of
17389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION
17399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_READ_URI_PERMISSION} or
17409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION
17419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
17429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #grantUriPermission
17449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void revokeUriPermission(Uri uri, int modeFlags);
17469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether a particular process and user ID has been granted
17499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI.  This only checks for permissions
17509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that have been explicitly granted -- if the given process/uid has
17519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * more general access to the URI's content provider then this check will
17529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * always fail.
17539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
17559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
17569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
17579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
17589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
17599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
17609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
17619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the given
17639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pid/uid is allowed to access that uri, or
17649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
17659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingUriPermission
17679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkUriPermission(Uri uri, int pid, int uid, int modeFlags);
17699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process and user ID has been
17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted permission to access a specific URI.  This is basically
17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the same as calling {@link #checkUriPermission(Uri, int, int,
17749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * int)} with the pid and uid returned by {@link
17759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingPid} and {@link
17769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingUid}.  One important difference is
17779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that if you are not currently processing an IPC, this function
17789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always fail.
17799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
17819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
17829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
17839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
17849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller
17869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is allowed to access that uri, or
17879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
17889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkUriPermission(Uri, int, int, int)
17909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
17919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingUriPermission(Uri uri, int modeFlags);
17929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
17949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determine whether the calling process of an IPC <em>or you</em> has been granted
17959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI.  This is the same as
17969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #checkCallingUriPermission}, except it grants your own permissions
17979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if you are not currently processing an IPC.  Use with care!
17989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
17999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
18009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
18019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
18029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
18039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller
18059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is allowed to access that uri, or
18069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
18079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingUriPermission
18099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkCallingOrSelfUriPermission(Uri uri, int modeFlags);
18119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Check both a Uri and normal permission.  This allows you to perform
18149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * both {@link #checkPermission} and {@link #checkUriPermission} in one
18159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call.
18169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri whose permission is to be checked, or null to not
18189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * do this check.
18199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param readPermission The permission that provides overall read access,
18209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null to not do this check.
18219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param writePermission The permission that provides overall write
18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * acess, or null to not do this check.
18239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
18259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
18269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
18279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
18289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
18299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller
18319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is allowed to access that uri or holds one of the given permissions, or
18329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#PERMISSION_DENIED} if it is not.
18339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract int checkUriPermission(Uri uri, String readPermission,
18359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String writePermission, int pid, int uid, int modeFlags);
18369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If a particular process and user ID has not been granted
18399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI, throw {@link
18409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This only checks for permissions that have
18419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * been explicitly granted -- if the given process/uid has more
18429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * general access to the URI's content provider then this check
18439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always fail.
18449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
18469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
18479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
18489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
18499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
18509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
18519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
18529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
18539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkUriPermission(Uri, int, int, int)
18559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceUriPermission(
18579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, int pid, int uid, int modeFlags, String message);
18589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the calling process and user ID has not been granted
18619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permission to access a specific URI, throw {@link
18629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This is basically the same as calling
18639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #enforceUriPermission(Uri, int, int, int, String)} with
18649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the pid and uid returned by {@link
18659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingPid} and {@link
18669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Binder#getCallingUid}.  One important difference is
18679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that if you are not currently processing an IPC, this function
18689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will always throw a SecurityException.
18699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
18719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
18729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
18739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
18749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
18759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingUriPermission(Uri, int)
18779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingUriPermission(
18799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, int modeFlags, String message);
18809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
18829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the calling process of an IPC <em>or you</em> has not been
18839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * granted permission to access a specific URI, throw {@link
18849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SecurityException}.  This is the same as {@link
18859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * #enforceCallingUriPermission}, except it grants your own
18869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * permissions if you are not currently processing an IPC.  Use
18879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with care!
18889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The uri that is being checked.
18909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
18919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
18929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
18939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
18949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
18959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkCallingOrSelfUriPermission(Uri, int)
18969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
18979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceCallingOrSelfUriPermission(
18989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, int modeFlags, String message);
18999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Enforce both a Uri and normal permission.  This allows you to perform
19029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * both {@link #enforcePermission} and {@link #enforceUriPermission} in one
19039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call.
19049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The Uri whose permission is to be checked, or null to not
19069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * do this check.
19079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param readPermission The permission that provides overall read access,
19089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null to not do this check.
19099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param writePermission The permission that provides overall write
19109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * acess, or null to not do this check.
19119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pid The process ID being checked against.  Must be &gt; 0.
19129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uid The user ID being checked against.  A uid of 0 is the root
19139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user, which will pass every permission check.
19149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param modeFlags The type of access to grant.  May be one or both of
19159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or
19169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.
19179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param message A message to include in the exception if it is thrown.
19189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #checkUriPermission(Uri, String, String, int, int, int)
19209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void enforceUriPermission(
19229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Uri uri, String readPermission, String writePermission,
19239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int pid, int uid, int modeFlags, String message);
19249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for use with {@link #createPackageContext}: include the application
19279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * code with the context.  This means loading code into the caller's
19289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process, so that {@link #getClassLoader()} can be used to instantiate
19299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the application's classes.  Setting this flags imposes security
19309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * restrictions on what application context you can access; if the
19319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * requested application can not be safely loaded into your process,
19329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.SecurityException will be thrown.  If this flag is not set,
19339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * there will be no restrictions on the packages that can be loaded,
19349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * but {@link #getClassLoader} will always return the default system
19359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * class loader.
19369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONTEXT_INCLUDE_CODE = 0x00000001;
19389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for use with {@link #createPackageContext}: ignore any security
19419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * restrictions on the Context being requested, allowing it to always
19429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be loaded.  For use with {@link #CONTEXT_INCLUDE_CODE} to allow code
19439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be loaded into a process even when it isn't safe to do so.  Use
19449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with extreme care!
19459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CONTEXT_IGNORE_SECURITY = 0x00000002;
1947870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy
1948870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    /**
1949870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * Flag for use with {@link #createPackageContext}: a restricted context may
1950870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * disable specific features. For instance, a View associated with a restricted
1951870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * context would ignore particular XML attributes.
1952870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     */
1953870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    public static final int CONTEXT_RESTRICTED = 0x00000004;
19549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
19569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return a new Context object for the given application name.  This
19579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Context is the same as what the named application gets when it is
19589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * launched, containing the same resources and class loader.  Each call to
19599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this method returns a new instance of a Context object; Context objects
19609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are not shared, however they share common state (Resources, ClassLoader,
19619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * etc) so the Context instance itself is fairly lightweight.
19629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Throws {@link PackageManager.NameNotFoundException} if there is no
19649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application with the given package name.
19659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Throws {@link java.lang.SecurityException} if the Context requested
19679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can not be loaded into the caller's process for security reasons (see
19689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #CONTEXT_INCLUDE_CODE} for more information}.
19699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param packageName Name of the application's package.
19719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param flags Option flags, one of {@link #CONTEXT_INCLUDE_CODE}
19729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *              or {@link #CONTEXT_IGNORE_SECURITY}.
19739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return A Context for the application.
19759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
19769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws java.lang.SecurityException
19779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws PackageManager.NameNotFoundException if there is no application with
19789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the given package name
19799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
19809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Context createPackageContext(String packageName,
19819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int flags) throws PackageManager.NameNotFoundException;
1982870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy
1983870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    /**
1984870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * Indicates whether this Context is restricted.
1985870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     *
1986870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * @return True if this Context is restricted, false otherwise.
1987870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     *
1988870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     * @see #CONTEXT_RESTRICTED
1989870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy     */
1990870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    public boolean isRestricted() {
1991870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy        return false;
1992870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy    }
19939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
1994