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