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; 368c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkeyimport android.os.UserManager; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet; 3898365d7663cbd82979a5700faf0050220b01084dJeff Brownimport android.view.CompatibilityInfoHolder; 39a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.Display; 40a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.WindowManager; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileInputStream; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileOutputStream; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream; 48df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasaniimport java.util.List; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface to global information about an application environment. This is 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an abstract class whose implementation is provided by 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Android system. It 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * allows access to application-specific resources and classes, as well as 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * up-calls for application-level operations such as launching activities, 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcasting and receiving intents, etc. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class Context { 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * File creation mode: the default mode, where the created file can only 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be accessed by the calling application (or all applications sharing the 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * same user ID). 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_READABLE 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_WRITEABLE 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int MODE_PRIVATE = 0x0000; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 681506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * @deprecated Creating world-readable files is very dangerous, and likely 691506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * to cause security holes in applications. It is strongly discouraged; 701506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * instead, applications should use more formal mechanism for interactions 711506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * such as {@link ContentProvider}, {@link BroadcastReceiver}, and 721506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * {@link android.app.Service}. There are no guarantees that this 731506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * access mode will remain on a file, such as when it goes through a 741506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * backup and restore. 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * File creation mode: allow all other applications to have read access 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to the created file. 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_PRIVATE 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_WRITEABLE 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 80556b09e184b891d9542092962ed248616810e054Dianne Hackborn @Deprecated 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int MODE_WORLD_READABLE = 0x0001; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 831506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * @deprecated Creating world-writable files is very dangerous, and likely 841506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * to cause security holes in applications. It is strongly discouraged; 851506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * instead, applications should use more formal mechanism for interactions 861506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * such as {@link ContentProvider}, {@link BroadcastReceiver}, and 871506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * {@link android.app.Service}. There are no guarantees that this 881506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * access mode will remain on a file, such as when it goes through a 891506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * backup and restore. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * File creation mode: allow all other applications to have write access 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to the created file. 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_PRIVATE 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_READABLE 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 95556b09e184b891d9542092962ed248616810e054Dianne Hackborn @Deprecated 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int MODE_WORLD_WRITEABLE = 0x0002; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * File creation mode: for use with {@link #openFileOutput}, if the file 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * already exists then write data to the end of the existing file 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instead of erasing it. 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int MODE_APPEND = 0x8000; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1064e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * SharedPreference loading flag: when set, the file on disk will 1074e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * be checked for modification even if the shared preferences 1084e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * instance is already loaded in this process. This behavior is 1094e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * sometimes desired in cases where the application has multiple 1104e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * processes, all writing to the same SharedPreferences file. 1114e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * Generally there are better forms of communication between 1124e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * processes, though. 1134e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * 1144e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * <p>This was the legacy (but undocumented) behavior in and 1154e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * before Gingerbread (Android 2.3) and this flag is implied when 1164e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * targetting such releases. For applications targetting SDK 1174e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * versions <em>greater than</em> Android 2.3, this flag must be 1184e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * explicitly set if desired. 1194e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * 1204e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * @see #getSharedPreferences 1214e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick */ 1224e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick public static final int MODE_MULTI_PROCESS = 0x0004; 1234e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick 1244e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick /** 12547847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * Database open flag: when set, the database is opened with write-ahead 12647847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * logging enabled by default. 12747847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * 12847847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * @see #openOrCreateDatabase(String, int, CursorFactory) 12947847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * @see #openOrCreateDatabase(String, int, CursorFactory, DatabaseErrorHandler) 13047847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * @see SQLiteDatabase#enableWriteAheadLogging 13147847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown */ 13247847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 0x0008; 13347847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown 13447847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown /** 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for {@link #bindService}: automatically create the service as long 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * as the binding exists. Note that while this will create the service, 1374b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * its {@link android.app.Service#onStartCommand} 1384b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * method will still only be called due to an 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * explicit call to {@link #startService}. Even without that, though, 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this still provides you with access to the service object while the 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * service is created. 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 143c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * <p>Note that prior to {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}, 144c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * not supplying this flag would also impact how important the system 145c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * consider's the target service's process to be. When set, the only way 146c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * for it to be raised was by binding from a service in which case it will 147c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * only be important when that activity is in the foreground. Now to 148c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * achieve this behavior you must explicitly supply the new flag 149c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * {@link #BIND_ADJUST_WITH_ACTIVITY}. For compatibility, old applications 150c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * that don't specify {@link #BIND_AUTO_CREATE} will automatically have 151c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * the flags {@link #BIND_WAIVE_PRIORITY} and 152c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * {@link #BIND_ADJUST_WITH_ACTIVITY} set for them in order to achieve 153c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * the same result. 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BIND_AUTO_CREATE = 0x0001; 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for {@link #bindService}: include debugging help for mismatched 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * calls to unbind. When this flag is set, the callstack of the following 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #unbindService} call is retained, to be printed if a later 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * incorrect unbind call is made. Note that doing this requires retaining 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * information about the binding that was made for the lifetime of the app, 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * resulting in a leak -- this should only be used for debugging. 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BIND_DEBUG_UNBIND = 0x0002; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16709c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn /** 16809c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * Flag for {@link #bindService}: don't allow this binding to raise 16909c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * the target service's process to the foreground scheduling priority. 170130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn * It will still be raised to at least the same memory priority 17109c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * as the client (so that its process will not be killable in any 17209c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * situation where the client is not killable), but for CPU scheduling 17309c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * purposes it may be left in the background. This only has an impact 17409c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * in the situation where the binding client is a foreground process 17509c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn * and the target service is in a background process. 17609c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn */ 17709c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn public static final int BIND_NOT_FOREGROUND = 0x0004; 17809c916bccbf236ccd0a2c80941e28cc55006e02aDianne Hackborn 179130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn /** 180c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Flag for {@link #bindService}: indicates that the client application 181c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * binding to this service considers the service to be more important than 182c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * the app itself. When set, the platform will try to have the out of 183b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * memory killer kill the app before it kills the service it is bound to, though 184c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * this is not guaranteed to be the case. 185c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn */ 186c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn public static final int BIND_ABOVE_CLIENT = 0x0008; 187c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn 188c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn /** 189130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn * Flag for {@link #bindService}: allow the process hosting the bound 190130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn * service to go through its normal memory management. It will be 191130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn * treated more like a running service, allowing the system to 192130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn * (temporarily) expunge the process if low on memory or for some other 193c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * whim it may have, and being more aggressive about making it a candidate 194c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * to be killed (and restarted) if running for a long time. 195c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn */ 196c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn public static final int BIND_ALLOW_OOM_MANAGEMENT = 0x0010; 197c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn 198c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn /** 199c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Flag for {@link #bindService}: don't impact the scheduling or 200c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * memory management priority of the target service's hosting process. 201c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Allows the service's process to be managed on the background LRU list 202c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * just like a regular application process in the background. 203c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn */ 204c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn public static final int BIND_WAIVE_PRIORITY = 0x0020; 205c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn 206c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn /** 207c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Flag for {@link #bindService}: this service is very important to 208c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * the client, so should be brought to the foreground process level 209c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * when the client is. Normally a process can only be raised to the 210c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * visibility level by a client, even if that client is in the foreground. 211c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn */ 212c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn public static final int BIND_IMPORTANT = 0x0040; 213c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn 214c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn /** 215c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Flag for {@link #bindService}: If binding from an activity, allow the 216c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * target service's process importance to be raised based on whether the 217c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * activity is visible to the user, regardless whether another flag is 218c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * used to reduce the amount that the client process's overall importance 219c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * is used to impact it. 220130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn */ 2212c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0080; 2222c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn 2232c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn /** 224b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * @hide An idea that is not yet implemented. 225b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * Flag for {@link #bindService}: If binding from an activity, consider 226b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * this service to be visible like the binding activity is. That is, 227b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * it will be treated as something more important to keep around than 228b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * invisible background activities. This will impact the number of 229b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * recent activities the user can switch between without having them 230b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * restart. There is no guarantee this will be respected, as the system 231b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * tries to balance such requests from one app vs. the importantance of 232b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn * keeping other apps around. 233b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn */ 234b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn public static final int BIND_VISIBLE = 0x0100; 235b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn 236b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn /** 2372c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn * Flag for {@link #bindService}: Don't consider the bound service to be 2382c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn * visible, even if the caller is visible. 2392c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn * @hide 2402c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn */ 2412c84cfc001fb92a71811bf7384b7f865ff31ff9dDianne Hackborn public static final int BIND_NOT_VISIBLE = 0x40000000; 242130b0d2b2629bdd8fc415e0f3da947f965a3f29dDianne Hackborn 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Return an AssetManager instance for your application's package. */ 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract AssetManager getAssets(); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Return a Resources instance for your application's package. */ 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Resources getResources(); 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Return PackageManager instance to find global package information. */ 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract PackageManager getPackageManager(); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Return a ContentResolver instance for your application's package. */ 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract ContentResolver getContentResolver(); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the Looper for the main thread of the current process. This is 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the thread used to dispatch calls to application components (activities, 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * services, etc). 259f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown * <p> 260f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown * By definition, this method returns the same result as would be obtained 261f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown * by calling {@link Looper#getMainLooper() Looper.getMainLooper()}. 262f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown * </p> 263f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown * 264f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown * @return The main looper. 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Looper getMainLooper(); 2674b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the context of the single, global Application object of the 270e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * current process. This generally should only be used if you need a 271e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Context whose lifecycle is separate from the current context, that is 272e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * tied to the lifetime of the process rather than the current component. 2734b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 274e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <p>Consider for example how this interacts with 27536af79434fb62c26238132eaeda2ec5e732f3c2fBrad Fitzpatrick * {@link #registerReceiver(BroadcastReceiver, IntentFilter)}: 276e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <ul> 277e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <li> <p>If used from an Activity context, the receiver is being registered 278e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * within that activity. This means that you are expected to unregister 279e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * before the activity is done being destroyed; in fact if you do not do 280e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * so, the framework will clean up your leaked registration as it removes 281e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * the activity and log an error. Thus, if you use the Activity context 282e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * to register a receiver that is static (global to the process, not 283e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * associated with an Activity instance) then that registration will be 284e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * removed on you at whatever point the activity you used is destroyed. 285e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <li> <p>If used from the Context returned here, the receiver is being 286e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * registered with the global state associated with your application. Thus 287e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * it will never be unregistered for you. This is necessary if the receiver 288e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * is associated with static data, not a particular component. However 289e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * using the ApplicationContext elsewhere can easily lead to serious leaks 290e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * if you forget to unregister, unbind, etc. 291e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * </ul> 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Context getApplicationContext(); 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 296c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Add a new {@link ComponentCallbacks} to the base application of the 297c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Context, which will be called at the same times as the ComponentCallbacks 298c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * methods of activities and other components are called. Note that you 299c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * <em>must</em> be sure to use {@link #unregisterComponentCallbacks} when 300c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * appropriate in the future; this will not be removed for you. 301905577f6345c014fc2489a8068ea967ba8c18012Dianne Hackborn * 302905577f6345c014fc2489a8068ea967ba8c18012Dianne Hackborn * @param callback The interface to call. This can be either a 303905577f6345c014fc2489a8068ea967ba8c18012Dianne Hackborn * {@link ComponentCallbacks} or {@link ComponentCallbacks2} interface. 304c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn */ 305c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn public void registerComponentCallbacks(ComponentCallbacks callback) { 306c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn getApplicationContext().registerComponentCallbacks(callback); 307c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn } 308c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn 309c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn /** 310c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * Remove a {@link ComponentCallbacks} objec that was previously registered 311c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * with {@link #registerComponentCallbacks(ComponentCallbacks)}. 312c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn */ 313c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn public void unregisterComponentCallbacks(ComponentCallbacks callback) { 314c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn getApplicationContext().unregisterComponentCallbacks(callback); 315c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn } 316c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn 317c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn /** 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a localized, styled CharSequence from the application's package's 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * default string table. 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resId Resource id for the CharSequence text 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final CharSequence getText(int resId) { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getResources().getText(resId); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a localized string from the application's package's 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * default string table. 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resId Resource id for the string 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final String getString(int resId) { 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getResources().getString(resId); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a localized formatted string from the application's package's 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * default string table, substituting the format arguments as defined in 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link java.util.Formatter} and {@link java.lang.String#format}. 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resId Resource id for the format string 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param formatArgs The format arguments that will be used for substitution. 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final String getString(int resId, Object... formatArgs) { 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getResources().getString(resId, formatArgs); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the base theme for this context. Note that this should be called 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * before any views are instantiated in the Context (for example before 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * calling {@link android.app.Activity#setContentView} or 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.view.LayoutInflater#inflate}). 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resid The style resource describing the theme. 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void setTheme(int resid); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 360247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn /** @hide Needed for some internal implementation... not public because 361247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn * you can't assume this actually means anything. */ 362247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn public int getThemeResId() { 363247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn return 0; 364247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn } 365247fe74c934cb3fba85aae7e051a8044f460fb11Dianne Hackborn 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the Theme object associated with this Context. 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Resources.Theme getTheme(); 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve styled attribute information in this Context's theme. See 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Resources.Theme#obtainStyledAttributes(int[])} 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for more information. 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see Resources.Theme#obtainStyledAttributes(int[]) 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final TypedArray obtainStyledAttributes( 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] attrs) { 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getTheme().obtainStyledAttributes(attrs); 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve styled attribute information in this Context's theme. See 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Resources.Theme#obtainStyledAttributes(int, int[])} 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for more information. 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see Resources.Theme#obtainStyledAttributes(int, int[]) 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final TypedArray obtainStyledAttributes( 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int resid, int[] attrs) throws Resources.NotFoundException { 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getTheme().obtainStyledAttributes(resid, attrs); 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve styled attribute information in this Context's theme. See 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)} 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for more information. 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int) 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final TypedArray obtainStyledAttributes( 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AttributeSet set, int[] attrs) { 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getTheme().obtainStyledAttributes(set, attrs, 0, 0); 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve styled attribute information in this Context's theme. See 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)} 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for more information. 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int) 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final TypedArray obtainStyledAttributes( 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) { 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getTheme().obtainStyledAttributes( 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project set, attrs, defStyleAttr, defStyleRes); 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a class loader you can use to retrieve classes in this package. 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract ClassLoader getClassLoader(); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Return the name of this application's package. */ 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String getPackageName(); 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 428d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn /** @hide Return the name of the base context this context is derived from. */ 429d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn public abstract String getBasePackageName(); 430d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn 4315c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn /** Return the full application info for this context's package. */ 4325c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn public abstract ApplicationInfo getApplicationInfo(); 4334b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4353214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root * Return the full path to this context's primary Android package. 4363214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root * The Android package is a ZIP file which contains the application's 4373214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root * primary resources. 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Note: this is not generally useful for applications, since they should 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not be directly accessing the file system. 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return String Path to the resources. 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String getPackageResourcePath(); 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4473214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root * Return the full path to this context's primary Android package. 4483214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root * The Android package is a ZIP file which contains application's 4493214839482aebcdfccc7cec0b0849739ef46fa68Kenny Root * primary code and assets. 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Note: this is not generally useful for applications, since they should 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not be directly accessing the file system. 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return String Path to the code and assets. 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String getPackageCodePath(); 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 45923ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato * {@hide} 46023ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato * Return the full path to the shared prefs file for the given prefs group name. 46123ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato * 46223ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato * <p>Note: this is not generally useful for applications, since they should 46323ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato * not be directly accessing the file system. 46423ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato */ 46523ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato public abstract File getSharedPrefsFile(String name); 46623ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato 46723ecae3bbb60c5af940f3a22170d75eb6ac05b69Joe Onorato /** 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve and hold the contents of the preferences file 'name', returning 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a SharedPreferences through which you can retrieve and modify its 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Only one instance of the SharedPreferences object is returned 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to any callers for the same name, meaning they will see each other's 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * edits as soon as they are made. 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name Desired preferences file. If a preferences file by this name 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * does not exist, it will be created when you retrieve an 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * editor (SharedPreferences.edit()) and then commit changes (Editor.commit()). 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mode Operating mode. Use 0 or {@link #MODE_PRIVATE} for the 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * default operation, {@link #MODE_WORLD_READABLE} 4794e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * and {@link #MODE_WORLD_WRITEABLE} to control permissions. The bit 4804e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * {@link #MODE_MULTI_PROCESS} can also be used if multiple processes 4814e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * are mutating the same SharedPreferences file. {@link #MODE_MULTI_PROCESS} 4824e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * is always on in apps targetting Gingerbread (Android 2.3) and below, and 4834e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * off by default in later versions. 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the single SharedPreferences instance that can be used 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to retrieve and modify the preference values. 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_PRIVATE 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_READABLE 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_WRITEABLE 4914e920f70f38d52d3a74c6a3133388a2e2cb6c175Brad Fitzpatrick * @see #MODE_MULTI_PROCESS 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract SharedPreferences getSharedPreferences(String name, 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mode); 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Open a private file associated with this Context's application package 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for reading. 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name of the file to open; can not contain path 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * separators. 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return FileInputStream Resulting input stream. 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #fileList 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #deleteFile 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.io.FileInputStream#FileInputStream(String) 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract FileInputStream openFileInput(String name) 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws FileNotFoundException; 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5141506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * Open a private file associated with this Context's application package 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for writing. Creates the file if it doesn't already exist. 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5171506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * @param name The name of the file to open; can not contain path 5181506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * separators. 51992091fa9636403728fe94cc83400495a8612c2d3Nick Kralevich * @param mode Operating mode. Use 0 or {@link #MODE_PRIVATE} for the 5201506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * default operation, {@link #MODE_APPEND} to append to an existing file, 5211506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * {@link #MODE_WORLD_READABLE} and {@link #MODE_WORLD_WRITEABLE} to control 5221506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * permissions. 5231506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return FileOutputStream Resulting output stream. 5251506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_APPEND 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_PRIVATE 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_READABLE 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_WRITEABLE 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileInput 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #fileList 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #deleteFile 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.io.FileOutputStream#FileOutputStream(String) 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract FileOutputStream openFileOutput(String name, int mode) 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws FileNotFoundException; 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Delete the given private file associated with this Context's 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application package. 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name of the file to delete; can not contain path 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * separators. 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return True if the file was successfully deleted; else 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * false. 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileInput 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #fileList 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.io.File#delete() 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract boolean deleteFile(String name); 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the absolute path on the filesystem where a file created with 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #openFileOutput} is stored. 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name of the file for which you would like to get 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * its path. 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns an absolute path to the given file. 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getFilesDir 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getDir 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract File getFileStreamPath(String name); 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the absolute path to the directory on the filesystem where 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * files created with {@link #openFileOutput} are stored. 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the path of the directory holding application files. 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getFileStreamPath 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getDir 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract File getFilesDir(); 5814b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 583e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Returns the absolute path to the directory on the external filesystem 584e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * (that is somewhere on {@link android.os.Environment#getExternalStorageDirectory() 585acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn * Environment.getExternalStorageDirectory()}) where the application can 586e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * place persistent files it owns. These files are private to the 587e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * applications, and not typically visible to the user as media. 5884b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 589e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <p>This is like {@link #getFilesDir()} in that these 590e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * files will be deleted when the application is uninstalled, however there 591e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * are some important differences: 5924b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 593e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <ul> 594e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <li>External files are not always available: they will disappear if the 595e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * user mounts the external storage on a computer or removes it. See the 596e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * APIs on {@link android.os.Environment} for information in the storage state. 597e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <li>There is no security enforced with these files. All applications 598e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * can read and write files placed here. 599e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * </ul> 6004b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 6018c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * <p>On devices with multiple users (as described by {@link UserManager}), 6028c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * each user has their own isolated external storage. Applications only 6038c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * have access to the external storage for the user they're running as.</p> 6048c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * 605e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <p>Here is an example of typical code to manipulate a file in 606e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * an application's private storage:</p> 6074b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 608e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java 609e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * private_file} 610e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * 611acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn * <p>If you supply a non-null <var>type</var> to this function, the returned 612e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * file will be a path to a sub-directory of the given type. Though these files 613e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * are not automatically scanned by the media scanner, you can explicitly 614e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * add them to the media database with 615e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.media.MediaScannerConnection#scanFile(Context, String[], String[], 616b7c8c76180dc1abbf55c734ab121a7a2469060f6Ray Chen * OnScanCompletedListener) MediaScannerConnection.scanFile}. 617e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Note that this is not the same as 618e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#getExternalStoragePublicDirectory 619e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Environment.getExternalStoragePublicDirectory()}, which provides 620e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * directories of media shared by all applications. The 621e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * directories returned here are 622acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn * owned by the application, and their contents will be removed when the 623e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * application is uninstalled. Unlike 624e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#getExternalStoragePublicDirectory 625e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Environment.getExternalStoragePublicDirectory()}, the directory 626e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * returned here will be automatically created for you. 6274b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 628e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <p>Here is an example of typical code to manipulate a picture in 629e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * an application's private storage and add it to the media database:</p> 6304b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 631e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java 632e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * private_picture} 6334b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 6348c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * <p>Writing to this path requires the 6358c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission.</p> 6368c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * 637e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * @param type The type of files directory to return. May be null for 638e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * the root of the files directory or one of 639e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * the following Environment constants for a subdirectory: 640e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_MUSIC}, 641e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_PODCASTS}, 642e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_RINGTONES}, 643e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_ALARMS}, 644e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_NOTIFICATIONS}, 645e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_PICTURES}, or 646e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * {@link android.os.Environment#DIRECTORY_MOVIES}. 6474b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 648e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * @return Returns the path of the directory holding application files 649e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * on external storage. Returns null if external storage is not currently 650e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * mounted so it could not ensure the path exists; you will need to call 651e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * this method again when it is available. 652e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * 653e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * @see #getFilesDir 654acaf028fc9efd9754f57ed65476e79a816811b35Dianne Hackborn * @see android.os.Environment#getExternalStoragePublicDirectory 655e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn */ 656e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn public abstract File getExternalFilesDir(String type); 6574b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 658e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn /** 659805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn * Return the directory where this application's OBB files (if there 660805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn * are any) can be found. Note if the application does not have any OBB 661805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn * files, this directory may not exist. 6628c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * 6638c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * <p>On devices with multiple users (as described by {@link UserManager}), 6648c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * multiple users may share the same OBB storage location. Applications 6658c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * should ensure that multiple instances running under different users 6668c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * don't interfere with each other.</p> 667805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn */ 668805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn public abstract File getObbDir(); 669805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn 670805fd7ee0e5dc2939e85c84f78d9890a51982bc0Dianne Hackborn /** 6714b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * Returns the absolute path to the application specific cache directory 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the filesystem. These files will be ones that get deleted first when the 673e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * device runs low on storage. 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * There is no guarantee when these files will be deleted. 6754b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 676e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <strong>Note: you should not <em>rely</em> on the system deleting these 677e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * files for you; you should always have a reasonable maximum, such as 1 MB, 678e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * for the amount of space you consume with cache files, and prune those 679e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * files when exceeding that space.</strong> 6804b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the path of the directory holding application cache files. 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getFileStreamPath 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getDir 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract File getCacheDir(); 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 690e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Returns the absolute path to the directory on the external filesystem 691e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * (that is somewhere on {@link android.os.Environment#getExternalStorageDirectory() 692e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * Environment.getExternalStorageDirectory()} where the application can 693e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * place cache files it owns. 6944b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 695e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <p>This is like {@link #getCacheDir()} in that these 696e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * files will be deleted when the application is uninstalled, however there 697e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * are some important differences: 6984b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 699e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <ul> 700556b09e184b891d9542092962ed248616810e054Dianne Hackborn * <li>The platform does not always monitor the space available in external 701556b09e184b891d9542092962ed248616810e054Dianne Hackborn * storage, and thus may not automatically delete these files. Currently 702556b09e184b891d9542092962ed248616810e054Dianne Hackborn * the only time files here will be deleted by the platform is when running 703556b09e184b891d9542092962ed248616810e054Dianne Hackborn * on {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} or later and 704556b09e184b891d9542092962ed248616810e054Dianne Hackborn * {@link android.os.Environment#isExternalStorageEmulated() 705556b09e184b891d9542092962ed248616810e054Dianne Hackborn * Environment.isExternalStorageEmulated()} returns true. Note that you should 706e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * be managing the maximum space you will use for these anyway, just like 707e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * with {@link #getCacheDir()}. 708e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <li>External files are not always available: they will disappear if the 709e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * user mounts the external storage on a computer or removes it. See the 710e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * APIs on {@link android.os.Environment} for information in the storage state. 711e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * <li>There is no security enforced with these files. All applications 712e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * can read and write files placed here. 713e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * </ul> 714e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * 7158c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * <p>On devices with multiple users (as described by {@link UserManager}), 7168c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * each user has their own isolated external storage. Applications only 7178c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * have access to the external storage for the user they're running as.</p> 7188c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * 7198c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * <p>Writing to this path requires the 7208c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission.</p> 7218c16579994a58c5763788b4f6be864e8a8219575Jeff Sharkey * 722e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * @return Returns the path of the directory holding application cache files 723e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * on external storage. Returns null if external storage is not currently 724e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * mounted so it could not ensure the path exists; you will need to call 725e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * this method again when it is available. 726e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * 727e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn * @see #getCacheDir 728e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn */ 729e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn public abstract File getExternalCacheDir(); 7304b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 731e83cefcef07f9ac025642c1ffec76b4c7ab39cf2Dianne Hackborn /** 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns an array of strings naming the private files associated with 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this Context's application package. 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Array of strings naming the private files. 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileInput 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #deleteFile 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String[] fileList(); 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve, creating if needed, a new directory in which the application 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can place its own custom data files. You can use the returned File 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * object to create and access files in this directory. Note that files 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * created through a File object will only be accessible by your own 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application; you can only set the mode of the entire directory, not 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of individual files. 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name Name of the directory to retrieve. This is a directory 7521506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * that is created as part of your application data. 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mode Operating mode. Use 0 or {@link #MODE_PRIVATE} for the 7541506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * default operation, {@link #MODE_WORLD_READABLE} and 7551506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * {@link #MODE_WORLD_WRITEABLE} to control permissions. 7561506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns a File object for the requested directory. The directory 7581506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * will have been created if it does not already exist. 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openFileOutput(String, int) 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract File getDir(String name, int mode); 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Open a new private SQLiteDatabase associated with this Context's 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application package. Create the database file if it doesn't exist. 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name (unique in the application package) of the database. 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mode Operating mode. Use 0 or {@link #MODE_PRIVATE} for the 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * default operation, {@link #MODE_WORLD_READABLE} 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and {@link #MODE_WORLD_WRITEABLE} to control permissions. 77247847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * Use {@link #MODE_ENABLE_WRITE_AHEAD_LOGGING} to enable write-ahead logging by default. 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param factory An optional factory class that is called to instantiate a 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * cursor when query is called. 7751506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The contents of a newly created database with the given name. 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws android.database.sqlite.SQLiteException if the database file could not be opened. 7781506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_PRIVATE 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_READABLE 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #MODE_WORLD_WRITEABLE 78247847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * @see #MODE_ENABLE_WRITE_AHEAD_LOGGING 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #deleteDatabase 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract SQLiteDatabase openOrCreateDatabase(String name, 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mode, CursorFactory factory); 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 78974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * Open a new private SQLiteDatabase associated with this Context's 79074f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * application package. Creates the database file if it doesn't exist. 79174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * 79274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * <p>Accepts input param: a concrete instance of {@link DatabaseErrorHandler} to be 79374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * used to handle corruption when sqlite reports database corruption.</p> 79474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * 79574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @param name The name (unique in the application package) of the database. 79674f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @param mode Operating mode. Use 0 or {@link #MODE_PRIVATE} for the 79774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * default operation, {@link #MODE_WORLD_READABLE} 79874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * and {@link #MODE_WORLD_WRITEABLE} to control permissions. 79947847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * Use {@link #MODE_ENABLE_WRITE_AHEAD_LOGGING} to enable write-ahead logging by default. 80074f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @param factory An optional factory class that is called to instantiate a 80174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * cursor when query is called. 80274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @param errorHandler the {@link DatabaseErrorHandler} to be used when sqlite reports database 8031506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * corruption. if null, {@link android.database.DefaultDatabaseErrorHandler} is assumed. 80474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @return The contents of a newly created database with the given name. 80574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @throws android.database.sqlite.SQLiteException if the database file could not be opened. 8061506921e8e7897be8297365dcaf15f4c6d6eb472Nick Kralevich * 80774f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @see #MODE_PRIVATE 80874f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @see #MODE_WORLD_READABLE 80974f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @see #MODE_WORLD_WRITEABLE 81047847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown * @see #MODE_ENABLE_WRITE_AHEAD_LOGGING 81174f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori * @see #deleteDatabase 81274f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori */ 81374f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori public abstract SQLiteDatabase openOrCreateDatabase(String name, 81474f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori int mode, CursorFactory factory, DatabaseErrorHandler errorHandler); 81574f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori 81674f170f9468d3cf6d7d0ef453320141a3e63571bVasu Nori /** 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Delete an existing private SQLiteDatabase associated with this Context's 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application package. 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name (unique in the application package) of the 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * database. 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return True if the database was successfully deleted; else false. 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openOrCreateDatabase 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract boolean deleteDatabase(String name); 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the absolute path on the filesystem where a database created with 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #openOrCreateDatabase} is stored. 8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name of the database for which you would like to get 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * its path. 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns an absolute path to the given database. 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openOrCreateDatabase 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract File getDatabasePath(String name); 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns an array of strings naming the private databases associated with 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this Context's application package. 8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Array of strings naming the private databases. 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #openOrCreateDatabase 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #deleteDatabase 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String[] databaseList(); 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8544c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#getDrawable 8558cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.get()} instead. 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8574a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Drawable getWallpaper(); 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8614c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#peekDrawable 8628cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.peek()} instead. 8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8644a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Drawable peekWallpaper(); 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8688cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#getDesiredMinimumWidth() 8698cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.getDesiredMinimumWidth()} instead. 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8714a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int getWallpaperDesiredMinimumWidth(); 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8758cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#getDesiredMinimumHeight() 8768cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.getDesiredMinimumHeight()} instead. 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8784a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int getWallpaperDesiredMinimumHeight(); 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8824c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#setBitmap(Bitmap) 8838cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.set()} instead. 8849530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 8859530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#SET_WALLPAPER}. 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8874a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void setWallpaper(Bitmap bitmap) throws IOException; 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8914c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3Dianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#setStream(InputStream) 8928cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.set()} instead. 8939530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 8949530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#SET_WALLPAPER}. 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8964a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void setWallpaper(InputStream data) throws IOException; 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9008cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * @deprecated Use {@link android.app.WallpaperManager#clear 9018cc6a5026aeb5cf9cc36529426fe0cc66714f5fbDianne Hackborn * WallpaperManager.clear()} instead. 9029530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 9039530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#SET_WALLPAPER}. 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9054a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn @Deprecated 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void clearWallpaper() throws IOException; 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 909a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * Same as {@link #startActivity(Intent, Bundle)} with no options 910a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * specified. 911a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 912a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param intent The description of the activity to start. 913a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 914a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @throws ActivityNotFoundException 915a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 916a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see {@link #startActivity(Intent, Bundle)} 917a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see PackageManager#resolveActivity 918a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn */ 919a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn public abstract void startActivity(Intent intent); 920a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn 921a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn /** 9228832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of {@link #startActivity(Intent)} that allows you to specify the 9238832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the activity will be started for. This is not available to applications 9248832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 9258832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS_FULL permission. 9268264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani * @param intent The description of the activity to start. 92779af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn * @param user The UserHandle of the user to start this activity for. 9288264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani * @throws ActivityNotFoundException 9298264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani * @hide 9308264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani */ 93179af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn public void startActivityAsUser(Intent intent, UserHandle user) { 9328264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani throw new RuntimeException("Not implemented. Must override in a subclass."); 9338264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani } 9348264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani 9358264408f5995534f8e3147b001664ea0df52aaa5Amith Yamasani /** 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Launch a new activity. You will not receive any information about when 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the activity exits. 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Note that if this method is being called from outside of an 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.Activity} Context, then the Intent must include 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the {@link Intent#FLAG_ACTIVITY_NEW_TASK} launch flag. This is because, 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * without being started from an existing Activity, there is no existing 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * task in which to place the new activity and thus it needs to be placed 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in its own separate task. 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This method throws {@link ActivityNotFoundException} 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if there was no Activity found to run the given Intent. 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The description of the activity to start. 950a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param options Additional options for how the Activity should be started. 9517a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * May be null if there are no options. See {@link android.app.ActivityOptions} 9527a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * for how to build the Bundle supplied here; there are no supported definitions 9537a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * for building it manually. 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws ActivityNotFoundException 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 95760dd520d37a6d3163747eb9a4266d0a08b207c98Scott Main * @see #startActivity(Intent) 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see PackageManager#resolveActivity 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 960a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn public abstract void startActivity(Intent intent, Bundle options); 961a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn 962a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn /** 9638832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of {@link #startActivity(Intent, Bundle)} that allows you to specify the 9648832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the activity will be started for. This is not available to applications 9658832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 9668832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS_FULL permission. 967258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * @param intent The description of the activity to start. 968258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * @param options Additional options for how the Activity should be started. 969258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * May be null if there are no options. See {@link android.app.ActivityOptions} 970258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * for how to build the Bundle supplied here; there are no supported definitions 971258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * for building it manually. 97279af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn * @param user The UserHandle of the user to start this activity for. 973258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * @throws ActivityNotFoundException 974258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * @hide 975258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani */ 97679af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn public void startActivityAsUser(Intent intent, Bundle options, UserHandle userId) { 977258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani throw new RuntimeException("Not implemented. Must override in a subclass."); 978258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani } 979258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani 980258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani /** 981a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * Same as {@link #startActivities(Intent[], Bundle)} with no options 982a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * specified. 983a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 984a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param intents An array of Intents to be started. 985a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 986a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @throws ActivityNotFoundException 987a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 988a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see {@link #startActivities(Intent[], Bundle)} 989a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see PackageManager#resolveActivity 990a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn */ 991a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn public abstract void startActivities(Intent[] intents); 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 994621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * Launch multiple new activities. This is generally the same as calling 995621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * {@link #startActivity(Intent)} for the first Intent in the array, 996621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * that activity during its creation calling {@link #startActivity(Intent)} 997621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * for the second entry, etc. Note that unlike that approach, generally 998621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * none of the activities except the last in the array will be created 999621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * at this point, but rather will be created when the user first visits 1000621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * them (due to pressing back from the activity on top). 1001621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * 1002621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * <p>This method throws {@link ActivityNotFoundException} 1003621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * if there was no Activity found for <em>any</em> given Intent. In this 1004621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * case the state of the activity stack is undefined (some Intents in the 1005621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * list may be on it, some not), so you probably want to avoid such situations. 1006621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * 1007621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * @param intents An array of Intents to be started. 1008a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param options Additional options for how the Activity should be started. 10097a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * See {@link android.content.Context#startActivity(Intent, Bundle) 10107a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * Context.startActivity(Intent, Bundle)} for more details. 1011621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * 1012621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * @throws ActivityNotFoundException 1013621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * 1014a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see {@link #startActivities(Intent[])} 1015621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn * @see PackageManager#resolveActivity 1016621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn */ 1017a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn public abstract void startActivities(Intent[] intents, Bundle options); 1018a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn 1019a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn /** 1020ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @hide 1021ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * Launch multiple new activities. This is generally the same as calling 1022ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * {@link #startActivity(Intent)} for the first Intent in the array, 1023ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * that activity during its creation calling {@link #startActivity(Intent)} 1024ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * for the second entry, etc. Note that unlike that approach, generally 1025ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * none of the activities except the last in the array will be created 1026ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * at this point, but rather will be created when the user first visits 1027ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * them (due to pressing back from the activity on top). 1028ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * 1029ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * <p>This method throws {@link ActivityNotFoundException} 1030ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * if there was no Activity found for <em>any</em> given Intent. In this 1031ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * case the state of the activity stack is undefined (some Intents in the 1032ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * list may be on it, some not), so you probably want to avoid such situations. 1033ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * 1034ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @param intents An array of Intents to be started. 1035ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @param options Additional options for how the Activity should be started. 1036ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @param userHandle The user for whom to launch the activities 1037ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * See {@link android.content.Context#startActivity(Intent, Bundle) 1038ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * Context.startActivity(Intent, Bundle)} for more details. 1039ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * 1040ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @throws ActivityNotFoundException 1041ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * 1042ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @see {@link #startActivities(Intent[])} 1043ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani * @see PackageManager#resolveActivity 1044ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani */ 1045ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani public void startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) { 1046ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani throw new RuntimeException("Not implemented. Must override in a subclass."); 1047ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani } 1048ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani 1049ea7e91514ee1968d15713e82a5cca745e2c46a05Amith Yamasani /** 1050a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * Same as {@link #startIntentSender(IntentSender, Intent, int, int, int, Bundle)} 1051a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * with no options specified. 1052a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 1053a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param intent The IntentSender to launch. 1054a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param fillInIntent If non-null, this will be provided as the 1055a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * intent parameter to {@link IntentSender#sendIntent}. 1056a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param flagsMask Intent flags in the original IntentSender that you 1057a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * would like to change. 1058a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param flagsValues Desired values for any bits set in 1059a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * <var>flagsMask</var> 1060a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param extraFlags Always set to 0. 1061a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 1062a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see #startActivity(Intent) 1063a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see #startIntentSender(IntentSender, Intent, int, int, int, Bundle) 1064a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn */ 1065a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn public abstract void startIntentSender(IntentSender intent, 1066a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) 1067a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn throws IntentSender.SendIntentException; 1068621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn 1069621e17de87f18003aba2dedb719a2941020a7902Dianne Hackborn /** 1070a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * Like {@link #startActivity(Intent, Bundle)}, but taking a IntentSender 1071fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * to start. If the IntentSender is for an activity, that activity will be started 1072ae22c05b91d1e7a458066792eb5cfc0974c1be9eDianne Hackborn * as if you had called the regular {@link #startActivity(Intent)} 1073fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * here; otherwise, its associated action will be executed (such as 1074fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * sending a broadcast) as if you had called 1075fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * {@link IntentSender#sendIntent IntentSender.sendIntent} on it. 10764b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 1077fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * @param intent The IntentSender to launch. 1078fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * @param fillInIntent If non-null, this will be provided as the 1079fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * intent parameter to {@link IntentSender#sendIntent}. 1080fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * @param flagsMask Intent flags in the original IntentSender that you 1081fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * would like to change. 1082fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * @param flagsValues Desired values for any bits set in 1083fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * <var>flagsMask</var> 1084fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn * @param extraFlags Always set to 0. 1085a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @param options Additional options for how the Activity should be started. 10867a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * See {@link android.content.Context#startActivity(Intent, Bundle) 10877a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * Context.startActivity(Intent, Bundle)} for more details. If options 10887a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * have also been supplied by the IntentSender, options given here will 10897a2195cdd33f27c79eda343defc1f7ccf59cc8acDianne Hackborn * override any that conflict with those given by the IntentSender. 1090a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * 1091a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see #startActivity(Intent, Bundle) 1092a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn * @see #startIntentSender(IntentSender, Intent, int, int, int) 1093fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn */ 1094fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn public abstract void startIntentSender(IntentSender intent, 1095a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, 1096a4972e951bf2bdb7afdafee95b3ab0c15b8bacaeDianne Hackborn Bundle options) throws IntentSender.SendIntentException; 1097fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn 1098fa82f22f1d8c4c828bdf9b670006be4f4fec772eDianne Hackborn /** 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Broadcast the given intent to all interested BroadcastReceivers. This 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * call is asynchronous; it returns immediately, and you will continue 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * executing while the receivers are run. No results are propagated from 11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * receivers and receivers can not abort the broadcast. If you want 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to allow receivers to propagate results or abort the broadcast, you must 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * send an ordered broadcast using 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #sendOrderedBroadcast(Intent, String)}. 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The Intent to broadcast; all receivers matching this 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent will receive the broadcast. 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.content.BroadcastReceiver 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast(Intent, String) 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendOrderedBroadcast(Intent, String) 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void sendBroadcast(Intent intent); 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Broadcast the given intent to all interested BroadcastReceivers, allowing 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an optional required permission to be enforced. This 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * call is asynchronous; it returns immediately, and you will continue 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * executing while the receivers are run. No results are propagated from 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * receivers and receivers can not abort the broadcast. If you want 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to allow receivers to propagate results or abort the broadcast, you must 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * send an ordered broadcast using 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #sendOrderedBroadcast(Intent, String)}. 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The Intent to broadcast; all receivers matching this 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent will receive the broadcast. 113426b71be600a44341a34079a007ce1492a6f26c1fBrad Fitzpatrick * @param receiverPermission (optional) String naming a permission that 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a receiver must hold in order to receive your broadcast. 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If null, no permission is required. 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.content.BroadcastReceiver 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast(Intent) 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendOrderedBroadcast(Intent, String) 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void sendBroadcast(Intent intent, 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String receiverPermission); 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1148f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * Like {@link #sendBroadcast(Intent, String)}, but also allows specification 1149f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * of an assocated app op as per {@link android.app.AppOpsManager}. 1150f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * @hide 1151f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn */ 1152f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn public abstract void sendBroadcast(Intent intent, 1153f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn String receiverPermission, int appOp); 1154f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn 1155f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn /** 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Broadcast the given intent to all interested BroadcastReceivers, delivering 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * them one at a time to allow more preferred receivers to consume the 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcast before it is delivered to less preferred receivers. This 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * call is asynchronous; it returns immediately, and you will continue 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * executing while the receivers are run. 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The Intent to broadcast; all receivers matching this 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent will receive the broadcast. 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param receiverPermission (optional) String naming a permissions that 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a receiver must hold in order to receive your broadcast. 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If null, no permission is required. 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.content.BroadcastReceiver 11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver 11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast(Intent) 11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void sendOrderedBroadcast(Intent intent, 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String receiverPermission); 11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Version of {@link #sendBroadcast(Intent)} that allows you to 11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * receive data back from the broadcast. This is accomplished by 11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * supplying your own BroadcastReceiver when calling, which will be 11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * treated as a final receiver at the end of the broadcast -- its 11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link BroadcastReceiver#onReceive} method will be called with 1184efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * the result values collected from the other receivers. The broadcast will 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be serialized in the same way as calling 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #sendOrderedBroadcast(Intent, String)}. 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Like {@link #sendBroadcast(Intent)}, this method is 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * asynchronous; it will return before 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * resultReceiver.onReceive() is called. 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The Intent to broadcast; all receivers matching this 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent will receive the broadcast. 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param receiverPermission String naming a permissions that 11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a receiver must hold in order to receive your broadcast. 11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If null, no permission is required. 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resultReceiver Your own BroadcastReceiver to treat as the final 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * receiver of the broadcast. 12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param scheduler A custom Handler with which to schedule the 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * resultReceiver callback; if null it will be 12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * scheduled in the Context's main thread. 12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param initialCode An initial value for the result code. Often 12059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Activity.RESULT_OK. 12069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param initialData An initial value for the result data. Often 12079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null. 12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param initialExtras An initial value for the result extras. Often 12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null. 12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast(Intent) 12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast(Intent, String) 12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendOrderedBroadcast(Intent, String) 12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendStickyBroadcast(Intent) 1215efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle) 12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.content.BroadcastReceiver 12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver 12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.Activity#RESULT_OK 12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void sendOrderedBroadcast(Intent intent, 12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String receiverPermission, BroadcastReceiver resultReceiver, 12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Handler scheduler, int initialCode, String initialData, 12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle initialExtras); 12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1226f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * Like {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, android.os.Handler, 1227f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * int, String, android.os.Bundle)}, but also allows specification 1228f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * of an assocated app op as per {@link android.app.AppOpsManager}. 1229f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn * @hide 1230f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn */ 1231f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn public abstract void sendOrderedBroadcast(Intent intent, 1232f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn String receiverPermission, int appOp, BroadcastReceiver resultReceiver, 1233f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn Handler scheduler, int initialCode, String initialData, 1234f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn Bundle initialExtras); 1235f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn 1236f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn /** 12378832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of {@link #sendBroadcast(Intent)} that allows you to specify the 12388832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the broadcast will be sent to. This is not available to applications 12398832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 12408832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS permission. 12417d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param intent The intent to broadcast 124279af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn * @param user UserHandle to send the intent to. 12437d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @see #sendBroadcast(Intent) 12447d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn */ 124579af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn public abstract void sendBroadcastAsUser(Intent intent, UserHandle user); 12467d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn 12477d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn /** 12488832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the 12498832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the broadcast will be sent to. This is not available to applications 12508832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 12518832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS permission. 12525ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 12535ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param intent The Intent to broadcast; all receivers matching this 12545ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * Intent will receive the broadcast. 12555ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param user UserHandle to send the intent to. 12565ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param receiverPermission (optional) String naming a permission that 12575ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * a receiver must hold in order to receive your broadcast. 12585ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * If null, no permission is required. 12595ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 12605ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @see #sendBroadcast(Intent, String) 12615ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn */ 12625ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn public abstract void sendBroadcastAsUser(Intent intent, UserHandle user, 12635ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn String receiverPermission); 12645ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn 12655ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn /** 12668832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of 12678832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)} 12688832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that allows you to specify the 12698832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the broadcast will be sent to. This is not available to applications 12708832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 12718832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS permission. 12727d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * 12737d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 12747d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * 12757d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param intent The Intent to broadcast; all receivers matching this 12767d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * Intent will receive the broadcast. 127779af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn * @param user UserHandle to send the intent to. 12785ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param receiverPermission String naming a permissions that 12795ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * a receiver must hold in order to receive your broadcast. 12805ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * If null, no permission is required. 12817d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param resultReceiver Your own BroadcastReceiver to treat as the final 12827d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * receiver of the broadcast. 12837d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param scheduler A custom Handler with which to schedule the 12847d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * resultReceiver callback; if null it will be 12857d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * scheduled in the Context's main thread. 12867d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param initialCode An initial value for the result code. Often 12877d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * Activity.RESULT_OK. 12887d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param initialData An initial value for the result data. Often 12897d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * null. 12907d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @param initialExtras An initial value for the result extras. Often 12917d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * null. 12927d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * 12937d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) 12947d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn */ 129579af1dd54c16cde063152922b42c96d72ae9eca8Dianne Hackborn public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, 12965ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, 12977d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn int initialCode, String initialData, Bundle initialExtras); 12987d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn 12997d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn /** 13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the 13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent you are sending stays around after the broadcast is complete, 13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * so that others can quickly retrieve that data through the return 13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of {@link #registerReceiver(BroadcastReceiver, IntentFilter)}. In 13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * all other ways, this behaves the same as 13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #sendBroadcast(Intent)}. 13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY} 13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission in order to use this API. If you do not hold that 13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission, {@link SecurityException} will be thrown. 13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The Intent to broadcast; all receivers matching this 13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent will receive the broadcast, and the Intent will be held to 13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be re-broadcast to future receivers. 13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast(Intent) 1316efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle) 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void sendStickyBroadcast(Intent intent); 13194b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 1320efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn /** 1321efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * Version of {@link #sendStickyBroadcast} that allows you to 1322efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * receive data back from the broadcast. This is accomplished by 1323efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * supplying your own BroadcastReceiver when calling, which will be 1324efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * treated as a final receiver at the end of the broadcast -- its 1325efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * {@link BroadcastReceiver#onReceive} method will be called with 1326efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * the result values collected from the other receivers. The broadcast will 1327efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * be serialized in the same way as calling 1328efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * {@link #sendOrderedBroadcast(Intent, String)}. 1329efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * 1330efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * <p>Like {@link #sendBroadcast(Intent)}, this method is 1331efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * asynchronous; it will return before 1332efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * resultReceiver.onReceive() is called. Note that the sticky data 1333efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * stored is only the data you initially supply to the broadcast, not 1334efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * the result of any changes made by the receivers. 1335efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * 1336efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 1337efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * 1338efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @param intent The Intent to broadcast; all receivers matching this 1339efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * Intent will receive the broadcast. 1340efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @param resultReceiver Your own BroadcastReceiver to treat as the final 1341efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * receiver of the broadcast. 1342efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @param scheduler A custom Handler with which to schedule the 1343efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * resultReceiver callback; if null it will be 1344efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * scheduled in the Context's main thread. 1345efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @param initialCode An initial value for the result code. Often 1346efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * Activity.RESULT_OK. 1347efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @param initialData An initial value for the result data. Often 1348efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * null. 1349efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @param initialExtras An initial value for the result extras. Often 1350efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * null. 1351efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * 1352efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #sendBroadcast(Intent) 1353efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #sendBroadcast(Intent, String) 1354efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #sendOrderedBroadcast(Intent, String) 1355efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #sendStickyBroadcast(Intent) 1356efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see android.content.BroadcastReceiver 1357efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see #registerReceiver 1358efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn * @see android.app.Activity#RESULT_OK 1359efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn */ 1360efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn public abstract void sendStickyOrderedBroadcast(Intent intent, 1361efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn BroadcastReceiver resultReceiver, 1362efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn Handler scheduler, int initialCode, String initialData, 1363efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn Bundle initialExtras); 1364efa199f016985b0a9d0471e42c803ee9f7941f0eDianne Hackborn 13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Remove the data previously sent with {@link #sendStickyBroadcast}, 13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * so that it is as if the sticky broadcast had never happened. 13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY} 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission in order to use this API. If you do not hold that 13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission, {@link SecurityException} will be thrown. 13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param intent The Intent that was previously broadcast. 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendStickyBroadcast 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void removeStickyBroadcast(Intent intent); 13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13808832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of {@link #sendStickyBroadcast(Intent)} that allows you to specify the 13818832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the broadcast will be sent to. This is not available to applications 13828832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 13838832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS permission. 13845ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 13855ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param intent The Intent to broadcast; all receivers matching this 13865ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * Intent will receive the broadcast, and the Intent will be held to 13875ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * be re-broadcast to future receivers. 13885ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param user UserHandle to send the intent to. 13895ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 13905ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @see #sendBroadcast(Intent) 13915ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn */ 13925ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn public abstract void sendStickyBroadcastAsUser(Intent intent, UserHandle user); 13935ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn 13945ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn /** 13958832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of 13968832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * {@link #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)} 13978832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that allows you to specify the 13988832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the broadcast will be sent to. This is not available to applications 13998832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 14008832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS permission. 14015ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 14025ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 14035ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 14045ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param intent The Intent to broadcast; all receivers matching this 14055ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * Intent will receive the broadcast. 14065ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param user UserHandle to send the intent to. 14075ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param resultReceiver Your own BroadcastReceiver to treat as the final 14085ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * receiver of the broadcast. 14095ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param scheduler A custom Handler with which to schedule the 14105ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * resultReceiver callback; if null it will be 14115ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * scheduled in the Context's main thread. 14125ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param initialCode An initial value for the result code. Often 14135ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * Activity.RESULT_OK. 14145ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param initialData An initial value for the result data. Often 14155ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * null. 14165ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param initialExtras An initial value for the result extras. Often 14175ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * null. 14185ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 14195ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle) 14205ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn */ 14215ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn public abstract void sendStickyOrderedBroadcastAsUser(Intent intent, 14225ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn UserHandle user, BroadcastReceiver resultReceiver, 14235ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn Handler scheduler, int initialCode, String initialData, 14245ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn Bundle initialExtras); 14255ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn 14265ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn /** 14278832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * Version of {@link #removeStickyBroadcast(Intent)} that allows you to specify the 14288832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * user the broadcast will be sent to. This is not available to applications 14298832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * that are not pre-installed on the system image. Using it requires holding 14308832c18d8b63367929c2d394c9c508f56003d400Dianne Hackborn * the INTERACT_ACROSS_USERS permission. 14315ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 14325ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * <p>You must hold the {@link android.Manifest.permission#BROADCAST_STICKY} 14335ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * permission in order to use this API. If you do not hold that 14345ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * permission, {@link SecurityException} will be thrown. 14355ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 14365ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param intent The Intent that was previously broadcast. 14375ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @param user UserHandle to remove the sticky broadcast from. 14385ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * 14395ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn * @see #sendStickyBroadcastAsUser 14405ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn */ 14415ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn public abstract void removeStickyBroadcastAsUser(Intent intent, UserHandle user); 14425ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn 14435ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn /** 1444a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * Register a BroadcastReceiver to be run in the main activity thread. The 14459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <var>receiver</var> will be called with any broadcast Intent that 14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * matches <var>filter</var>, in the main application thread. 14479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>The system may broadcast Intents that are "sticky" -- these stay 14499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * around after the broadcast as finished, to be sent to any later 14509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * registrations. If your IntentFilter matches one of these sticky 14519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intents, that Intent will be returned by this function 14529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <strong>and</strong> sent to your <var>receiver</var> as if it had just 14539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * been broadcast. 14549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>There may be multiple sticky Intents that match <var>filter</var>, 14569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in which case each of these will be sent to <var>receiver</var>. In 14579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this case, only one of these can be returned directly by the function; 14589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * which of these that is returned is arbitrarily decided by the system. 14599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>If you know the Intent your are registering for is sticky, you can 14619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * supply null for your <var>receiver</var>. In this case, no receiver is 14629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * registered -- the function simply returns the sticky Intent that 14639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * matches <var>filter</var>. In the case of multiple matches, the same 14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * rules as described above apply. 14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14686c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * <p>As of {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}, receivers 14696c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * registered with this method will correctly respect the 14706c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * {@link Intent#setPackage(String)} specified for an Intent being broadcast. 14716c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * Prior to that, it would be ignored and delivered to all matching registered 14726c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * receivers. Be careful if using this for security.</p> 14736c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * 1474a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * <p class="note">Note: this method <em>cannot be called from a 1475a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * {@link BroadcastReceiver} component;</em> that is, from a BroadcastReceiver 1476a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * that is declared in an application's manifest. It is okay, however, to call 1477a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * this method from another BroadcastReceiver that has itself been registered 1478a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * at run time with {@link #registerReceiver}, since the lifetime of such a 1479a34df8a2ba450b2c2ad83ccbbac30b80e2706bb2Chris Tate * registered BroadcastReceiver is tied to the object that registered it.</p> 14809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param receiver The BroadcastReceiver to handle the broadcast. 14829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param filter Selects the Intent broadcasts to be received. 14839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The first sticky intent found that matches <var>filter</var>, 14859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there are none. 14869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 14879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler) 14889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast 14899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #unregisterReceiver 14909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Intent registerReceiver(BroadcastReceiver receiver, 14929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IntentFilter filter); 14939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Register to receive intent broadcasts, to run in the context of 14969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <var>scheduler</var>. See 14979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #registerReceiver(BroadcastReceiver, IntentFilter)} for more 14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * information. This allows you to enforce permissions on who can 14999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcast intents to your receiver, or have the receiver run in 15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a different thread than the main application thread. 15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts. 15039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15046c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * <p>As of {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}, receivers 15056c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * registered with this method will correctly respect the 15066c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * {@link Intent#setPackage(String)} specified for an Intent being broadcast. 15076c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * Prior to that, it would be ignored and delivered to all matching registered 15086c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * receivers. Be careful if using this for security.</p> 15096c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn * 15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param receiver The BroadcastReceiver to handle the broadcast. 15119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param filter Selects the Intent broadcasts to be received. 15129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param broadcastPermission String naming a permissions that a 15139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcaster must hold in order to send an Intent to you. If null, 15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no permission is required. 15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param scheduler Handler identifying the thread that will receive 15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Intent. If null, the main thread of the process will be used. 15179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The first sticky intent found that matches <var>filter</var>, 15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there are none. 15209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver(BroadcastReceiver, IntentFilter) 15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #sendBroadcast 15239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #unregisterReceiver 15249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Intent registerReceiver(BroadcastReceiver receiver, 152620e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn IntentFilter filter, String broadcastPermission, Handler scheduler); 152720e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn 152820e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn /** 152920e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @hide 153020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * Same as {@link #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler) 153120e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * but for a specific user. This receiver will receiver broadcasts that 153220e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * are sent to the requested user. It 153320e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * requires holding the {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} 153420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * permission. 153520e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * 153620e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @param receiver The BroadcastReceiver to handle the broadcast. 153720e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @param user UserHandle to send the intent to. 153820e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @param filter Selects the Intent broadcasts to be received. 153920e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @param broadcastPermission String naming a permissions that a 154020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * broadcaster must hold in order to send an Intent to you. If null, 154120e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * no permission is required. 154220e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @param scheduler Handler identifying the thread that will receive 154320e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * the Intent. If null, the main thread of the process will be used. 154420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * 154520e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @return The first sticky intent found that matches <var>filter</var>, 154620e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * or null if there are none. 154720e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * 154820e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler 154920e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @see #sendBroadcast 155020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn * @see #unregisterReceiver 155120e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn */ 155220e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver, 155320e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn UserHandle user, IntentFilter filter, String broadcastPermission, 155420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn Handler scheduler); 15559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unregister a previously registered BroadcastReceiver. <em>All</em> 15589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * filters that have been registered for this BroadcastReceiver will be 15599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * removed. 15609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param receiver The BroadcastReceiver to unregister. 15629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #registerReceiver 15649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void unregisterReceiver(BroadcastReceiver receiver); 15669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Request that a given application service be started. The Intent 15699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can either contain the complete class name of a specific service 15709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation to start, or an abstract definition through the 15719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * action and other fields of the kind of service to start. If this service 15729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is not already running, it will be instantiated and started (creating a 15739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * process for it if needed); if it is running then it remains running. 15749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Every call to this method will result in a corresponding call to 15764b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * the target service's {@link android.app.Service#onStartCommand} method, 15779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with the <var>intent</var> given here. This provides a convenient way 15789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to submit jobs to a service without having to bind and call on to its 15799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * interface. 15809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Using startService() overrides the default service lifetime that is 15829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * managed by {@link #bindService}: it requires the service to remain 15839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * running until {@link #stopService} is called, regardless of whether 15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any clients are connected to it. Note that calls to startService() 15859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are not nesting: no matter how many times you call startService(), 15869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a single call to {@link #stopService} will stop it. 15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>The system attempts to keep running services around as much as 15899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * possible. The only time they should be stopped is if the current 15909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * foreground application is using so many resources that the service needs 15919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to be killed. If any errors happen in the service's process, it will 15929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * automatically be restarted. 15939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This function will throw {@link SecurityException} if you do not 15959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * have permission to start the given service. 15969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param service Identifies the service to be started. The Intent may 15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specify either an explicit component name to start, or a logical 15999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * description (action, category, etc) to match an 16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link IntentFilter} published by a service. Additional values 16019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * may be included in the Intent extras to supply arguments along with 16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this specific start call. 16039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return If the service is being started or is already running, the 16059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link ComponentName} of the actual service that was started is 16069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned; else if the service does not exist null is returned. 16079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws SecurityException 16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #stopService 16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #bindService 16129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract ComponentName startService(Intent service); 16149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Request that a given application service be stopped. If the service is 16179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not running, nothing happens. Otherwise it is stopped. Note that calls 16189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to startService() are not counted -- this stops the service no matter 16199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * how many times it was started. 16209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Note that if a stopped service still has {@link ServiceConnection} 16229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * objects bound to it with the {@link #BIND_AUTO_CREATE} set, it will 16239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not be destroyed until all of these bindings are removed. See 16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the {@link android.app.Service} documentation for more details on a 16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * service's lifecycle. 16269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This function will throw {@link SecurityException} if you do not 16289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * have permission to stop the given service. 16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param service Description of the service to be stopped. The Intent may 16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specify either an explicit component name to start, or a logical 16329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * description (action, category, etc) to match an 16339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link IntentFilter} published by a service. 16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return If there is a service matching the given Intent that is already 16369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * running, then it is stopped and true is returned; else false is returned. 16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws SecurityException 16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #startService 16419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract boolean stopService(Intent service); 16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16457767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn * @hide like {@link #startService(Intent)} but for a specific user. 16467767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn */ 16477767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn public abstract ComponentName startServiceAsUser(Intent service, UserHandle user); 16487767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn 16497767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn /** 16507767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn * @hide like {@link #stopService(Intent)} but for a specific user. 16517767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn */ 16527767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn public abstract boolean stopServiceAsUser(Intent service, UserHandle user); 16537767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn 16547767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn /** 16559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Connect to an application service, creating it if needed. This defines 16569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a dependency between your application and the service. The given 1657f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa * <var>conn</var> will receive the service object when it is created and be 16589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * told if it dies and restarts. The service will be considered required 16599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by the system only for as long as the calling context exists. For 16609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * example, if this Context is an Activity that is stopped, the service will 16619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not be required to continue running until the Activity is resumed. 16629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This function will throw {@link SecurityException} if you do not 16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * have permission to bind to the given service. 16659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1666f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa * <p class="note">Note: this method <em>can not be called from a 16679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link BroadcastReceiver} component</em>. A pattern you can use to 1668f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa * communicate from a BroadcastReceiver to a Service is to call 16699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #startService} with the arguments containing the command to be 16709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sent, with the service calling its 16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.Service#stopSelf(int)} method when done executing 16729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that command. See the API demo App/Service/Service Start Arguments 16739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Controller for an illustration of this. It is okay, however, to use 1674f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa * this method from a BroadcastReceiver that has been registered with 16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #registerReceiver}, since the lifetime of this BroadcastReceiver 16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is tied to another object (the one that registered it).</p> 16779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param service Identifies the service to connect to. The Intent may 16799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specify either an explicit component name, or a logical 16809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * description (action, category, etc) to match an 16819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link IntentFilter} published by a service. 16829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param conn Receives information as the service is started and stopped. 168379b3317b775810bac088b0998c48eb6506e2578cChristopher Tate * This must be a valid ServiceConnection object; it must not be null. 16844b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * @param flags Operation options for the binding. May be 0, 1685c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * {@link #BIND_AUTO_CREATE}, {@link #BIND_DEBUG_UNBIND}, 1686c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * {@link #BIND_NOT_FOREGROUND}, {@link #BIND_ABOVE_CLIENT}, 1687c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * {@link #BIND_ALLOW_OOM_MANAGEMENT}, or 1688c68c913d357e2955d4bd7ca52829071e531c7825Dianne Hackborn * {@link #BIND_WAIVE_PRIORITY}. 16899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return If you have successfully bound to the service, true is returned; 16909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * false is returned if the connection is not made so you will not 16919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * receive the service object. 16929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws SecurityException 16949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 16959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #unbindService 16969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #startService 16979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #BIND_AUTO_CREATE 16984b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * @see #BIND_DEBUG_UNBIND 16994b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * @see #BIND_NOT_FOREGROUND 17009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract boolean bindService(Intent service, ServiceConnection conn, 17029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int flags); 17039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17057d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * Same as {@link #bindService(Intent, ServiceConnection, int)}, but with an explicit userHandle 170637ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani * argument for use by system server and other multi-user aware code. 170737ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani * @hide 170837ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani */ 170927b89e6658a0d233a53f5d7ca20dc57fec82d955Amith Yamasani public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user) { 171037ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani throw new RuntimeException("Not implemented. Must override in a subclass."); 171137ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani } 171237ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani 171337ce3a8af6faab675319d0803b288ab1dddc76beAmith Yamasani /** 17149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Disconnect from an application service. You will no longer receive 17159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * calls as the service is restarted, and the service is now allowed to 17169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * stop at any time. 17179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param conn The connection interface previously supplied to 171979b3317b775810bac088b0998c48eb6506e2578cChristopher Tate * bindService(). This parameter must not be null. 17209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #bindService 17229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void unbindService(ServiceConnection conn); 17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Start executing an {@link android.app.Instrumentation} class. The given 17279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Instrumentation component will be run by killing its target application 17289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (if currently running), starting the target process, instantiating the 17299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instrumentation component, and then letting it drive the application. 17309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This function is not synchronous -- it returns as soon as the 17329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instrumentation has started and while it is running. 17339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Instrumentation is normally only allowed to run against a package 17359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that is either unsigned or signed with a signature that the 17369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the instrumentation package is also signed with (ensuring the target 17379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * trusts the instrumentation). 17389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param className Name of the Instrumentation component to be run. 17409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param profileFile Optional path to write profiling data as the 17419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instrumentation runs, or null for no profiling. 17429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param arguments Additional optional arguments to pass to the 17439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instrumentation, or null. 17449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true if the instrumentation was successfully started, 17469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * else false if it could not be found. 17479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract boolean startInstrumentation(ComponentName className, 17499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String profileFile, Bundle arguments); 17509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the handle to a system-level service by name. The class of the 17539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned object varies by the requested name. Currently available names 17549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are: 17554b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 17569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dl> 17579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #WINDOW_SERVICE} ("window") 17589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> The top-level window manager in which you can place custom 17599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * windows. The returned object is a {@link android.view.WindowManager}. 17609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #LAYOUT_INFLATER_SERVICE} ("layout_inflater") 17619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.view.LayoutInflater} for inflating layout resources 17629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in this context. 17639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #ACTIVITY_SERVICE} ("activity") 17649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.app.ActivityManager} for interacting with the 17659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * global activity state of the system. 17669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #POWER_SERVICE} ("power") 17679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.os.PowerManager} for controlling power 17689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * management. 17699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #ALARM_SERVICE} ("alarm") 17709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.app.AlarmManager} for receiving intents at the 17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * time of your choosing. 17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #NOTIFICATION_SERVICE} ("notification") 17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.app.NotificationManager} for informing the user 17749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of background events. 17759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #KEYGUARD_SERVICE} ("keyguard") 17769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.app.KeyguardManager} for controlling keyguard. 17779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #LOCATION_SERVICE} ("location") 17789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.location.LocationManager} for controlling location 17799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (e.g., GPS) updates. 17809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #SEARCH_SERVICE} ("search") 17819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.app.SearchManager} for handling search. 17829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #VIBRATOR_SERVICE} ("vibrator") 17839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.os.Vibrator} for interacting with the vibrator 17849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * hardware. 17859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #CONNECTIVITY_SERVICE} ("connection") 17869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.net.ConnectivityManager ConnectivityManager} for 17879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * handling management of network connections. 17889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #WIFI_SERVICE} ("wifi") 17899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> A {@link android.net.wifi.WifiManager WifiManager} for management of 17909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Wi-Fi connectivity. 17919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dt> {@link #INPUT_METHOD_SERVICE} ("input_method") 17929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <dd> An {@link android.view.inputmethod.InputMethodManager InputMethodManager} 17939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for management of input methods. 179453332883543868fb83e111a07306368b7772b340Tobias Haamel * <dt> {@link #UI_MODE_SERVICE} ("uimode") 179553332883543868fb83e111a07306368b7772b340Tobias Haamel * <dd> An {@link android.app.UiModeManager} for controlling UI modes. 17967083c42fff819b2c4949984a461bd54e9fa822a3Steve Howard * <dt> {@link #DOWNLOAD_SERVICE} ("download") 1797d58429f9acdb33f05bdb233b7bba495de80cb336Steve Howard * <dd> A {@link android.app.DownloadManager} for requesting HTTP downloads 17989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </dl> 17994b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 18009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Note: System services obtained via this API may be closely associated with 18019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Context in which they are obtained from. In general, do not share the 18029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * service objects between various different contexts (Activities, Applications, 18039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Services, Providers, etc.) 18049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 18059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name The name of the desired service. 18064b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 18079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The service or null if the name does not exist. 18084b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 18099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #WINDOW_SERVICE 18109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.view.WindowManager 18119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #LAYOUT_INFLATER_SERVICE 18129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.view.LayoutInflater 18139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #ACTIVITY_SERVICE 18149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.ActivityManager 18159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #POWER_SERVICE 18169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.os.PowerManager 18179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #ALARM_SERVICE 18189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.AlarmManager 18199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #NOTIFICATION_SERVICE 18209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.NotificationManager 18219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #KEYGUARD_SERVICE 18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.KeyguardManager 18239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #LOCATION_SERVICE 18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.location.LocationManager 18259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #SEARCH_SERVICE 18269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.SearchManager 18279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #SENSOR_SERVICE 18289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.hardware.SensorManager 1829c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat * @see #STORAGE_SERVICE 1830b104340496e3a531e26c8f428c808eca0e039f50San Mehat * @see android.os.storage.StorageManager 18319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #VIBRATOR_SERVICE 18329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.os.Vibrator 18339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #CONNECTIVITY_SERVICE 18349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.net.ConnectivityManager 18359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #WIFI_SERVICE 18369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.net.wifi.WifiManager 18379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #AUDIO_SERVICE 18389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.media.AudioManager 1839b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * @see #MEDIA_ROUTER_SERVICE 1840b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * @see android.media.MediaRouter 18419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #TELEPHONY_SERVICE 18429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.telephony.TelephonyManager 18439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #INPUT_METHOD_SERVICE 18449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.view.inputmethod.InputMethodManager 184553332883543868fb83e111a07306368b7772b340Tobias Haamel * @see #UI_MODE_SERVICE 184653332883543868fb83e111a07306368b7772b340Tobias Haamel * @see android.app.UiModeManager 18477083c42fff819b2c4949984a461bd54e9fa822a3Steve Howard * @see #DOWNLOAD_SERVICE 1848d58429f9acdb33f05bdb233b7bba495de80cb336Steve Howard * @see android.app.DownloadManager 18499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Object getSystemService(String name); 18519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 18549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.os.PowerManager} for controlling power management, 18559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * including "wake locks," which let you keep the device on while 18569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you're running long tasks. 18579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String POWER_SERVICE = "power"; 18594b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 18609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 18629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.view.WindowManager} for accessing the system's window 18639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * manager. 18649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 18659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 18669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.view.WindowManager 18679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String WINDOW_SERVICE = "window"; 18694b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 18709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 18729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.view.LayoutInflater} for inflating layout resources in this 18739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * context. 18749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 18759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 18769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.view.LayoutInflater 18779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater"; 18794b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 18809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 1882603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * {@link android.accounts.AccountManager} for receiving intents at a 1883603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * time of your choosing. 1884603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * 1885603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * @see #getSystemService 1886603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * @see android.accounts.AccountManager 1887603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana */ 1888603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public static final String ACCOUNT_SERVICE = "account"; 18894b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 1890603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana /** 1891603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Use with {@link #getSystemService} to retrieve a 18929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.ActivityManager} for interacting with the global 18939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * system state. 18949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 18959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 18969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.ActivityManager 18979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ACTIVITY_SERVICE = "activity"; 18994b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 19029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.AlarmManager} for receiving intents at a 19039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * time of your choosing. 19049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.AlarmManager 19079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ALARM_SERVICE = "alarm"; 19094b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 19129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.NotificationManager} for informing the user of 19139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * background events. 19149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.NotificationManager 19179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NOTIFICATION_SERVICE = "notification"; 19194b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 192275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.view.accessibility.AccessibilityManager} for giving the user 192375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * feedback for UI events through the registered event listeners. 192475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * 192575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * @see #getSystemService 192675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * @see android.view.accessibility.AccessibilityManager 192775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov */ 192875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov public static final String ACCESSIBILITY_SERVICE = "accessibility"; 19294b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 193075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov /** 193175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Use with {@link #getSystemService} to retrieve a 19329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.NotificationManager} for controlling keyguard. 19339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.KeyguardManager 19369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String KEYGUARD_SERVICE = "keyguard"; 19384b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 19419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.location.LocationManager} for controlling location 19429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * updates. 19439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.location.LocationManager 19469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LOCATION_SERVICE = "location"; 1948a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao 1949a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao /** 1950a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao * Use with {@link #getSystemService} to retrieve a 1951a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao * {@link android.location.CountryDetector} for detecting the country that 1952a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao * the user is in. 1953a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao * 1954a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao * @hide 1955a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao */ 1956a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao public static final String COUNTRY_DETECTOR = "country_detector"; 1957a58a8751b4c2ce457f0082a0baaee61312d56195Bai Tao 19589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 19609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.app.SearchManager} for handling searches. 19619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.SearchManager 19649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SEARCH_SERVICE = "search"; 19664b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 19699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.hardware.SensorManager} for accessing sensors. 19709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.hardware.SensorManager 19739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SENSOR_SERVICE = "sensor"; 19754b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1977c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat * Use with {@link #getSystemService} to retrieve a {@link 197802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * android.os.storage.StorageManager} for accessing system storage 1979c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat * functions. 1980c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat * 1981c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat * @see #getSystemService 1982b104340496e3a531e26c8f428c808eca0e039f50San Mehat * @see android.os.storage.StorageManager 1983c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat */ 1984c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat public static final String STORAGE_SERVICE = "storage"; 1985c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat 1986c9d8175f40691228e25f0dd924cc2453a6f08e10San Mehat /** 19879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 19889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * com.android.server.WallpaperService for accessing wallpapers. 19899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String WALLPAPER_SERVICE = "wallpaper"; 19934b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 19949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 19969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.os.Vibrator} for interacting with the vibration hardware. 19979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 19989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 19999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.os.Vibrator 20009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String VIBRATOR_SERVICE = "vibrator"; 20029e696c29f06d45d2891e1d38fd8d9033a9e21bb9Robert Greenwalt 20039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 20059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.app.StatusBarManager} for interacting with the status bar. 20069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 20079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 20089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.app.StatusBarManager 20099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 20109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String STATUS_BAR_SERVICE = "statusbar"; 20129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 20159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.net.ConnectivityManager} for handling management of 20169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * network connections. 20179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 20189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 20199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.net.ConnectivityManager 20209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONNECTIVITY_SERVICE = "connectivity"; 20229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a {@link 20258662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * android.os.IUpdateLock} for managing runtime sequences that 20268662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * must not be interrupted by headless OTA application or similar. 20278662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * 20288662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * @hide 20298662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * @see #getSystemService 20308662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * @see android.os.UpdateLock 20318662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate */ 20328662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate public static final String UPDATE_LOCK_SERVICE = "updatelock"; 20338662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate 20348662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate /** 20358662cab5c6a01ea5c426512e6f6d2cf3e158aea0Christopher Tate * Use with {@link #getSystemService} to retrieve a {@link 2036d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * android.net.NetworkManagementService} for handling management of 2037d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * system network services 2038d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * 2039d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * @hide 2040d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * @see #getSystemService 2041d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * @see android.net.NetworkManagementService 2042d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat */ 2043d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat public static final String NETWORKMANAGEMENT_SERVICE = "network_management"; 2044d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat 2045eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey /** {@hide} */ 204675279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey public static final String NETWORK_STATS_SERVICE = "netstats"; 204775279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey /** {@hide} */ 2048eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey public static final String NETWORK_POLICY_SERVICE = "netpolicy"; 2049eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey 2050d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat /** 2051d1df8ac6d076ef15ba8857211da2e447b6505fb3San Mehat * Use with {@link #getSystemService} to retrieve a {@link 20529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.net.wifi.WifiManager} for handling management of 20539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Wi-Fi access. 20549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 20559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 20569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.net.wifi.WifiManager 20579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String WIFI_SERVICE = "wifi"; 20594b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 20609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 206155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * Use with {@link #getSystemService} to retrieve a {@link 206255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * android.net.wifi.p2p.WifiP2pManager} for handling management of 2063651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff * Wi-Fi peer-to-peer connections. 206455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 206555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * @see #getSystemService 206655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * @see android.net.wifi.p2p.WifiP2pManager 206755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync */ 206855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public static final String WIFI_P2P_SERVICE = "wifip2p"; 206955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 207055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** 20717d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff * Use with {@link #getSystemService} to retrieve a {@link 207260309fc7bb95c9b3fc3e0ed60aa1eeb35bd13a68Irfan Sheriff * android.net.nsd.NsdManager} for handling management of network service 20737d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff * discovery 20747d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff * 20757d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff * @see #getSystemService 207660309fc7bb95c9b3fc3e0ed60aa1eeb35bd13a68Irfan Sheriff * @see android.net.nsd.NsdManager 20777d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff */ 20787d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff public static final String NSD_SERVICE = "servicediscovery"; 20797d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff 20807d024d372431effc87168afdc7cbe387680c4935Irfan Sheriff /** 20819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 20829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.media.AudioManager} for handling management of volume, 20839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * ringer modes and audio routing. 20844b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 20859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 20869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.media.AudioManager 20879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String AUDIO_SERVICE = "audio"; 20894b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 20909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 2092b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * {@link android.media.MediaRouter} for controlling and managing 2093b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * routing of media. 2094b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * 2095b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * @see #getSystemService 2096b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * @see android.media.MediaRouter 2097b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn */ 2098b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn public static final String MEDIA_ROUTER_SERVICE = "media_router"; 2099b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn 2100b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn /** 2101b58b8f832d06b0ffa8886eba5a4916578a3b8743Dianne Hackborn * Use with {@link #getSystemService} to retrieve a 21029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.telephony.TelephonyManager} for handling management the 21039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * telephony features of the device. 21044b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 21059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 21069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.telephony.TelephonyManager 21079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TELEPHONY_SERVICE = "phone"; 21099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 21119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 21129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.text.ClipboardManager} for accessing and modifying 21139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the contents of the global clipboard. 21144b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 21159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 21169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.text.ClipboardManager 21179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CLIPBOARD_SERVICE = "clipboard"; 21199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 21214b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * Use with {@link #getSystemService} to retrieve a 21229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.view.inputmethod.InputMethodManager} for accessing input 21239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * methods. 21249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 21269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String INPUT_METHOD_SERVICE = "input_method"; 21289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 21309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use with {@link #getSystemService} to retrieve a 2131988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * {@link android.view.textservice.TextServicesManager} for accessing 2132988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * text services. 2133988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * 2134988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @see #getSystemService 2135988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 2136988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public static final String TEXT_SERVICES_MANAGER_SERVICE = "textservices"; 2137988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 2138988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 2139988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Use with {@link #getSystemService} to retrieve a 2140e38d58bf890c03eb034afd18c62c730c7d735f1cDan Egnor * {@link android.appwidget.AppWidgetManager} for accessing AppWidgets. 21419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 21439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getSystemService 21449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2145c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project public static final String APPWIDGET_SERVICE = "appwidget"; 2146952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor 21479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2148487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate * Use with {@link #getSystemService} to retrieve an 21494528186e0d65fc68ef0dd1941aa2ac8aefcd55a3Christopher Tate * {@link android.app.backup.IBackupManager IBackupManager} for communicating 2150487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate * with the backup mechanism. 21517f2054392e9957d3ba8579ef08c29cfb27df564eDianne Hackborn * @hide 21524b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 2153487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate * @see #getSystemService 2154487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate */ 2155487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate public static final String BACKUP_SERVICE = "backup"; 2156952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor 2157952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor /** 2158952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor * Use with {@link #getSystemService} to retrieve a 21591337b012f8e18c725b1ec17b456dc57a084d594dDan Egnor * {@link android.os.DropBoxManager} instance for recording 2160952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor * diagnostic logs. 2161952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor * @see #getSystemService 2162952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor */ 2163952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor public static final String DROPBOX_SERVICE = "dropbox"; 2164952402704a175ba27f6c89dff1ada634c5ce5626Dan Egnor 2165487529a70cd1479ae8d6bbfb356be7e72542c185Christopher Tate /** 21664b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * Use with {@link #getSystemService} to retrieve a 216787bba1ee14279bb14a28d42e27c4ef66d9967bf8Dianne Hackborn * {@link android.app.admin.DevicePolicyManager} for working with global 2168d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn * device policy management. 2169d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn * 2170d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn * @see #getSystemService 2171d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn */ 2172d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn public static final String DEVICE_POLICY_SERVICE = "device_policy"; 2173d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn 2174d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn /** 217553332883543868fb83e111a07306368b7772b340Tobias Haamel * Use with {@link #getSystemService} to retrieve a 217653332883543868fb83e111a07306368b7772b340Tobias Haamel * {@link android.app.UiModeManager} for controlling UI modes. 217753332883543868fb83e111a07306368b7772b340Tobias Haamel * 217853332883543868fb83e111a07306368b7772b340Tobias Haamel * @see #getSystemService 217953332883543868fb83e111a07306368b7772b340Tobias Haamel */ 218053332883543868fb83e111a07306368b7772b340Tobias Haamel public static final String UI_MODE_SERVICE = "uimode"; 218153332883543868fb83e111a07306368b7772b340Tobias Haamel 218253332883543868fb83e111a07306368b7772b340Tobias Haamel /** 2183a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard * Use with {@link #getSystemService} to retrieve a 2184d58429f9acdb33f05bdb233b7bba495de80cb336Steve Howard * {@link android.app.DownloadManager} for requesting HTTP downloads. 2185a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard * 2186a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard * @see #getSystemService 2187a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard */ 2188a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard public static final String DOWNLOAD_SERVICE = "download"; 2189a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard 2190a2709360665f77ed8bebccb2df86f08e8c83a701Steve Howard /** 21912d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang * Use with {@link #getSystemService} to retrieve a 219250b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly * {@link android.nfc.NfcManager} for using NFC. 219350b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly * 219450b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly * @see #getSystemService 219550b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly */ 219650b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly public static final String NFC_SERVICE = "nfc"; 219750b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly 219850b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly /** 219950b4d8f643f31b37e9872f562fb869059cf79c8aNick Pelly * Use with {@link #getSystemService} to retrieve a 22001abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh * {@link android.bluetooth.BluetoothAdapter} for using Bluetooth. 22011abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh * 22021abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh * @see #getSystemService 22031abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh */ 22041abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh public static final String BLUETOOTH_SERVICE = "bluetooth"; 22051abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh 22061abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh /** 22071abb1cb3a8fe17f7866150604c2fd73751da787eJaikumar Ganesh * Use with {@link #getSystemService} to retrieve a 22082d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang * {@link android.net.sip.SipManager} for accessing the SIP related service. 22092d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang * 22102d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang * @see #getSystemService 22112d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang */ 22122d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang /** @hide */ 22132d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang public static final String SIP_SERVICE = "sip"; 22142d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang 22152d94231ef91c732f649ff7af9520ee9eac441b16Chung-yih Wang /** 2216e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Use with {@link #getSystemService} to retrieve a {@link 2217c4308f01c965571dc2354107c3574df113e397eeMike Lockwood * android.hardware.usb.UsbManager} for access to USB devices (as a USB host) 2218e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * and for controlling this device's behavior as a USB device. 2219e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 2220e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * @see #getSystemService 2221c4308f01c965571dc2354107c3574df113e397eeMike Lockwood * @see android.harware.usb.UsbManager 2222e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood */ 2223e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final String USB_SERVICE = "usb"; 2224e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 2225e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood /** 2226b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * Use with {@link #getSystemService} to retrieve a {@link 2227b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * android.hardware.SerialManager} for access to serial ports. 2228b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 2229b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @see #getSystemService 2230b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @see android.harware.SerialManager 2231b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 2232b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @hide 2233b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood */ 2234b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood public static final String SERIAL_SERVICE = "serial"; 2235b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 2236b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood /** 22379df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown * Use with {@link #getSystemService} to retrieve a 22389df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown * {@link android.hardware.input.InputManager} for interacting with input devices. 22399df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown * 22409df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown * @see #getSystemService 22419df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown * @see android.hardware.input.InputManager 22429df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown */ 22439df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown public static final String INPUT_SERVICE = "input"; 22449df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown 22459df6e7a926ce480baf70e97ee1b9ea387193f6adJeff Brown /** 224607b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * Use with {@link #getSystemService} to retrieve a 2247fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * {@link android.hardware.display.DisplayManager} for interacting with display devices. 2248fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * 2249fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * @see #getSystemService 2250fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * @see android.hardware.display.DisplayManager 2251fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown */ 2252fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown public static final String DISPLAY_SERVICE = "display"; 2253fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown 2254fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown /** 2255fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Use with {@link #getSystemService} to retrieve a 225607b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * {@link android.os.SchedulingPolicyService} for managing scheduling policy. 225707b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * 225807b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * @see #getSystemService 225907b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * @see android.os.SchedulingPolicyService 226007b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * 226107b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten * @hide 226207b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten */ 226307b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten public static final String SCHEDULING_POLICY_SERVICE = "scheduling_policy"; 226407b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten 226507b0465095bd9ab3412caefa4fcacbdc3825c64bGlenn Kasten /** 2266258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * Use with {@link #getSystemService} to retrieve a 2267258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * {@link android.os.UserManager} for managing users on devices that support multiple users. 2268258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * 2269258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * @see #getSystemService 2270258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * @see android.os.UserManager 2271258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani */ 2272258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani public static final String USER_SERVICE = "user"; 2273258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani 2274258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani /** 2275a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * Use with {@link #getSystemService} to retrieve a 2276a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * {@link android.app.AppOpsManager} for tracking application operations 2277a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * on the device. 2278a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * 2279a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * @see #getSystemService 2280a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * @see android.app.AppOpsManager 2281a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * 2282a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn * @hide 2283a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn */ 2284a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn public static final String APP_OPS_SERVICE = "appops"; 2285a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn 2286a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn /** 22879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine whether the given permission is allowed for a particular 22889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * process and user ID running in the system. 22899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 22909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permission The name of the permission being checked. 22919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pid The process ID being checked against. Must be > 0. 22929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uid The user ID being checked against. A uid of 0 is the root 22939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user, which will pass every permission check. 22949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 22959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the given 22969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pid/uid is allowed that permission, or 22979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 22989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 22999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see PackageManager#checkPermission(String, String) 23009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingPermission 23019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkPermission(String permission, int pid, int uid); 23039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine whether the calling process of an IPC you are handling has been 23069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * granted a particular permission. This is basically the same as calling 23079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #checkPermission(String, int, int)} with the pid and uid returned 23089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by {@link android.os.Binder#getCallingPid} and 23099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.os.Binder#getCallingUid}. One important difference 23109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is that if you are not currently processing an IPC, this function 23119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will always fail. This is done to protect against accidentally 23129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * leaking permissions; you can use {@link #checkCallingOrSelfPermission} 23139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to avoid this protection. 23149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permission The name of the permission being checked. 23169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the calling 23189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pid/uid is allowed that permission, or 23199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 23209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see PackageManager#checkPermission(String, String) 23229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkPermission 23239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingOrSelfPermission 23249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkCallingPermission(String permission); 23269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine whether the calling process of an IPC <em>or you</em> have been 23299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * granted a particular permission. This is the same as 23309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #checkCallingPermission}, except it grants your own permissions 23319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if you are not currently processing an IPC. Use with care! 23329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permission The name of the permission being checked. 23349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the calling 23369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pid/uid is allowed that permission, or 23379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 23389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see PackageManager#checkPermission(String, String) 23409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkPermission 23419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingPermission 23429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkCallingOrSelfPermission(String permission); 23449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the given permission is not allowed for a particular process 23479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and user ID running in the system, throw a {@link SecurityException}. 23489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permission The name of the permission being checked. 23509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pid The process ID being checked against. Must be > 0. 23519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uid The user ID being checked against. A uid of 0 is the root 23529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user, which will pass every permission check. 23539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 23549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkPermission(String, int, int) 23569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforcePermission( 23589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String permission, int pid, int uid, String message); 23599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the calling process of an IPC you are handling has not been 23629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * granted a particular permission, throw a {@link 23639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SecurityException}. This is basically the same as calling 23649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #enforcePermission(String, int, int, String)} with the 23659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pid and uid returned by {@link android.os.Binder#getCallingPid} 23669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and {@link android.os.Binder#getCallingUid}. One important 23679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * difference is that if you are not currently processing an IPC, 23689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this function will always throw the SecurityException. This is 23699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * done to protect against accidentally leaking permissions; you 23709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can use {@link #enforceCallingOrSelfPermission} to avoid this 23719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * protection. 23729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permission The name of the permission being checked. 23749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 23759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingPermission(String) 23779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforceCallingPermission( 23799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String permission, String message); 23809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If neither you nor the calling process of an IPC you are 23839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * handling has been granted a particular permission, throw a 23849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link SecurityException}. This is the same as {@link 23859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * #enforceCallingPermission}, except it grants your own 23869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permissions if you are not currently processing an IPC. Use 23879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with care! 23889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permission The name of the permission being checked. 23909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 23919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingOrSelfPermission(String) 23939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforceCallingOrSelfPermission( 23959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String permission, String message); 23969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Grant permission to access a specific Uri to another package, regardless 23999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of whether that package has general permission to access the Uri's 24009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * content provider. This can be used to grant specific, temporary 24019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permissions, typically in response to user interaction (such as the 24029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user opening an attachment that you would like someone else to 24039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * display). 24049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Normally you should use {@link Intent#FLAG_GRANT_READ_URI_PERMISSION 24069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent.FLAG_GRANT_READ_URI_PERMISSION} or 24079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION 24089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent.FLAG_GRANT_WRITE_URI_PERMISSION} with the Intent being used to 24099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * start an activity instead of this function directly. If you use this 24109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * function directly, you should be sure to call 24119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #revokeUriPermission} when the target should no longer be allowed 24129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to access it. 24139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>To succeed, the content provider owning the Uri must have set the 24159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.styleable#AndroidManifestProvider_grantUriPermissions 24169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * grantUriPermissions} attribute in its manifest or included the 24179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.styleable#AndroidManifestGrantUriPermission 24189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <grant-uri-permissions>} tag. 24199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toPackage The package you would like to allow to access the Uri. 24219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The Uri you would like to grant access to. 24229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The desired access modes. Any combination of 24239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION 24249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent.FLAG_GRANT_READ_URI_PERMISSION} or 24259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION 24269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 24279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #revokeUriPermission 24299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void grantUriPermission(String toPackage, Uri uri, 24319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modeFlags); 24329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Remove all permissions to access a particular content provider Uri 24359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that were previously added with {@link #grantUriPermission}. The given 24369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Uri will match all previously granted Uris that are the same or a 24379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sub-path of the given Uri. That is, revoking "content://foo/one" will 24389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * revoke both "content://foo/target" and "content://foo/target/sub", but not 24399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * "content://foo". 24409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The Uri you would like to revoke access to. 24429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The desired access modes. Any combination of 24439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION 24449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent.FLAG_GRANT_READ_URI_PERMISSION} or 24459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION 24469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 24479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #grantUriPermission 24499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void revokeUriPermission(Uri uri, int modeFlags); 24519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine whether a particular process and user ID has been granted 24549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission to access a specific URI. This only checks for permissions 24559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that have been explicitly granted -- if the given process/uid has 24569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * more general access to the URI's content provider then this check will 24579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always fail. 24589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The uri that is being checked. 24609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pid The process ID being checked against. Must be > 0. 24619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uid The user ID being checked against. A uid of 0 is the root 24629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user, which will pass every permission check. 24639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 24649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 24659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 24669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the given 24689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pid/uid is allowed to access that uri, or 24699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 24709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingUriPermission 24729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkUriPermission(Uri uri, int pid, int uid, int modeFlags); 24749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine whether the calling process and user ID has been 24779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * granted permission to access a specific URI. This is basically 24789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the same as calling {@link #checkUriPermission(Uri, int, int, 24799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * int)} with the pid and uid returned by {@link 24809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.os.Binder#getCallingPid} and {@link 24819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.os.Binder#getCallingUid}. One important difference is 24829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that if you are not currently processing an IPC, this function 24839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will always fail. 24849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The uri that is being checked. 24869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 24879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 24889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 24899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller 24919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is allowed to access that uri, or 24929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 24939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 24949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkUriPermission(Uri, int, int, int) 24959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkCallingUriPermission(Uri uri, int modeFlags); 24979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine whether the calling process of an IPC <em>or you</em> has been granted 25009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission to access a specific URI. This is the same as 25019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #checkCallingUriPermission}, except it grants your own permissions 25029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if you are not currently processing an IPC. Use with care! 25039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The uri that is being checked. 25059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 25069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 25079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 25089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller 25109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is allowed to access that uri, or 25119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 25129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingUriPermission 25149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkCallingOrSelfUriPermission(Uri uri, int modeFlags); 25169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Check both a Uri and normal permission. This allows you to perform 25199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * both {@link #checkPermission} and {@link #checkUriPermission} in one 25209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * call. 25219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The Uri whose permission is to be checked, or null to not 25239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * do this check. 25249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param readPermission The permission that provides overall read access, 25259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null to not do this check. 25269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param writePermission The permission that provides overall write 25279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * acess, or null to not do this check. 25289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pid The process ID being checked against. Must be > 0. 25299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uid The user ID being checked against. A uid of 0 is the root 25309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user, which will pass every permission check. 25319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 25329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 25339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 25349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns {@link PackageManager#PERMISSION_GRANTED} if the caller 25369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is allowed to access that uri or holds one of the given permissions, or 25379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#PERMISSION_DENIED} if it is not. 25389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract int checkUriPermission(Uri uri, String readPermission, 25409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String writePermission, int pid, int uid, int modeFlags); 25419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If a particular process and user ID has not been granted 25449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission to access a specific URI, throw {@link 25459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SecurityException}. This only checks for permissions that have 25469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * been explicitly granted -- if the given process/uid has more 25479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * general access to the URI's content provider then this check 25489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will always fail. 25499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The uri that is being checked. 25519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pid The process ID being checked against. Must be > 0. 25529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uid The user ID being checked against. A uid of 0 is the root 25539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user, which will pass every permission check. 25549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 25559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 25569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 25579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 25589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkUriPermission(Uri, int, int, int) 25609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforceUriPermission( 25629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri uri, int pid, int uid, int modeFlags, String message); 25639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the calling process and user ID has not been granted 25669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission to access a specific URI, throw {@link 25679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SecurityException}. This is basically the same as calling 25689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #enforceUriPermission(Uri, int, int, int, String)} with 25699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the pid and uid returned by {@link 25709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.os.Binder#getCallingPid} and {@link 25719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.os.Binder#getCallingUid}. One important difference is 25729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that if you are not currently processing an IPC, this function 25739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will always throw a SecurityException. 25749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The uri that is being checked. 25769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 25779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 25789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 25799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 25809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 25819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingUriPermission(Uri, int) 25829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforceCallingUriPermission( 25849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri uri, int modeFlags, String message); 25859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the calling process of an IPC <em>or you</em> has not been 25889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * granted permission to access a specific URI, throw {@link 25899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SecurityException}. This is the same as {@link 25909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * #enforceCallingUriPermission}, except it grants your own 25919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permissions if you are not currently processing an IPC. Use 25929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with care! 25934b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 25949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The uri that is being checked. 25959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 25969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 25979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 25989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 25999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkCallingOrSelfUriPermission(Uri, int) 26019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforceCallingOrSelfUriPermission( 26039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri uri, int modeFlags, String message); 26049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Enforce both a Uri and normal permission. This allows you to perform 26079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * both {@link #enforcePermission} and {@link #enforceUriPermission} in one 26089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * call. 26094b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 26109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uri The Uri whose permission is to be checked, or null to not 26119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * do this check. 26129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param readPermission The permission that provides overall read access, 26139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null to not do this check. 26149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param writePermission The permission that provides overall write 26159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * acess, or null to not do this check. 26169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pid The process ID being checked against. Must be > 0. 26179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param uid The user ID being checked against. A uid of 0 is the root 26189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user, which will pass every permission check. 26199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modeFlags The type of access to grant. May be one or both of 26209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION} or 26219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_WRITE_URI_PERMISSION}. 26229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param message A message to include in the exception if it is thrown. 26239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #checkUriPermission(Uri, String, String, int, int, int) 26259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void enforceUriPermission( 26279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri uri, String readPermission, String writePermission, 26289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int pid, int uid, int modeFlags, String message); 26299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for use with {@link #createPackageContext}: include the application 26329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * code with the context. This means loading code into the caller's 26339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * process, so that {@link #getClassLoader()} can be used to instantiate 26349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the application's classes. Setting this flags imposes security 26359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * restrictions on what application context you can access; if the 26369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * requested application can not be safely loaded into your process, 26379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * java.lang.SecurityException will be thrown. If this flag is not set, 26389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there will be no restrictions on the packages that can be loaded, 26399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * but {@link #getClassLoader} will always return the default system 26409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * class loader. 26419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int CONTEXT_INCLUDE_CODE = 0x00000001; 26439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for use with {@link #createPackageContext}: ignore any security 26469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * restrictions on the Context being requested, allowing it to always 26479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be loaded. For use with {@link #CONTEXT_INCLUDE_CODE} to allow code 26489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to be loaded into a process even when it isn't safe to do so. Use 26499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with extreme care! 26509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int CONTEXT_IGNORE_SECURITY = 0x00000002; 26524b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main 2653870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy /** 2654870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy * Flag for use with {@link #createPackageContext}: a restricted context may 2655870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy * disable specific features. For instance, a View associated with a restricted 2656870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy * context would ignore particular XML attributes. 2657870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy */ 2658870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy public static final int CONTEXT_RESTRICTED = 0x00000004; 26599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a new Context object for the given application name. This 26629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Context is the same as what the named application gets when it is 26639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * launched, containing the same resources and class loader. Each call to 26649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this method returns a new instance of a Context object; Context objects 26659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are not shared, however they share common state (Resources, ClassLoader, 26669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * etc) so the Context instance itself is fairly lightweight. 26679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Throws {@link PackageManager.NameNotFoundException} if there is no 26699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application with the given package name. 26709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Throws {@link java.lang.SecurityException} if the Context requested 26729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can not be loaded into the caller's process for security reasons (see 26739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #CONTEXT_INCLUDE_CODE} for more information}. 26749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param packageName Name of the application's package. 26769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags Option flags, one of {@link #CONTEXT_INCLUDE_CODE} 26779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or {@link #CONTEXT_IGNORE_SECURITY}. 26789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return A Context for the application. 26809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 26819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws java.lang.SecurityException 26829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws PackageManager.NameNotFoundException if there is no application with 26839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the given package name 26849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Context createPackageContext(String packageName, 26869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int flags) throws PackageManager.NameNotFoundException; 2687870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy 2688870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy /** 26896d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey * Similar to {@link #createPackageContext(String, int)}, but with a 26906d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey * different {@link UserHandle}. For example, {@link #getContentResolver()} 26916d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey * will open any {@link Uri} as the given user. 26926d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey * 26936d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey * @hide 26946d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey */ 26956d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey public abstract Context createPackageContextAsUser( 26966d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey String packageName, int flags, UserHandle user) 26976d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey throws PackageManager.NameNotFoundException; 26986d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey 26996d51571835737c7502a2e111ee9dc2527ebad984Jeff Sharkey /** 2700a75a883fe9ea1790803148f0a561473073e3f264Jim Miller * Get the userId associated with this context 2701a75a883fe9ea1790803148f0a561473073e3f264Jim Miller * @return user id 2702a75a883fe9ea1790803148f0a561473073e3f264Jim Miller * 2703a75a883fe9ea1790803148f0a561473073e3f264Jim Miller * @hide 2704a75a883fe9ea1790803148f0a561473073e3f264Jim Miller */ 2705a75a883fe9ea1790803148f0a561473073e3f264Jim Miller public abstract int getUserId(); 2706a75a883fe9ea1790803148f0a561473073e3f264Jim Miller 2707a75a883fe9ea1790803148f0a561473073e3f264Jim Miller /** 2708756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * Return a new Context object for the current Context but whose resources 2709756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * are adjusted to match the given Configuration. Each call to this method 2710a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * returns a new instance of a Context object; Context objects are not 2711756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * shared, however common state (ClassLoader, other Resources for the 2712756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * same configuration) may be so the Context itself can be fairly lightweight. 2713756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * 2714756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * @param overrideConfiguration A {@link Configuration} specifying what 2715756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * values to modify in the base Configuration of the original Context's 2716756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * resources. If the base configuration changes (such as due to an 2717756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * orientation change), the resources of this context will also change except 2718756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * for those that have been explicitly overridden with a value here. 2719756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn * 2720a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * @return A Context with the given configuration override. 2721756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn */ 2722756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn public abstract Context createConfigurationContext(Configuration overrideConfiguration); 2723756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn 2724756220bd1912535840388a6743830d2e59ad4964Dianne Hackborn /** 2725a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * Return a new Context object for the current Context but whose resources 2726a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * are adjusted to match the metrics of the given Display. Each call to this method 2727a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * returns a new instance of a Context object; Context objects are not 2728a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * shared, however common state (ClassLoader, other Resources for the 2729a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * same configuration) may be so the Context itself can be fairly lightweight. 2730a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * 2731a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * The returned display Context provides a {@link WindowManager} 2732a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * (see {@link #getSystemService(String)}) that is configured to show windows 2733a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * on the given display. The WindowManager's {@link WindowManager#getDefaultDisplay} 2734a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * method can be used to retrieve the Display from the returned Context. 2735a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * 2736a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * @param display A {@link Display} object specifying the display 2737a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * for whose metrics the Context's resources should be tailored and upon which 2738a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * new windows should be shown. 2739a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * 2740a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * @return A Context for the display. 2741a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown */ 2742a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown public abstract Context createDisplayContext(Display display); 2743a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown 2744a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown /** 274598365d7663cbd82979a5700faf0050220b01084dJeff Brown * Gets the compatibility info holder for this context. This information 274698365d7663cbd82979a5700faf0050220b01084dJeff Brown * is provided on a per-application basis and is used to simulate lower density 274798365d7663cbd82979a5700faf0050220b01084dJeff Brown * display metrics for legacy applications. 274898365d7663cbd82979a5700faf0050220b01084dJeff Brown * 2749a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown * @param displayId The display id for which to get compatibility info. 275098365d7663cbd82979a5700faf0050220b01084dJeff Brown * @return The compatibility info holder, or null if not required by the application. 275198365d7663cbd82979a5700faf0050220b01084dJeff Brown * @hide 275298365d7663cbd82979a5700faf0050220b01084dJeff Brown */ 2753a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown public abstract CompatibilityInfoHolder getCompatibilityInfo(int displayId); 275498365d7663cbd82979a5700faf0050220b01084dJeff Brown 275598365d7663cbd82979a5700faf0050220b01084dJeff Brown /** 2756870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy * Indicates whether this Context is restricted. 27574b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 2758870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy * @return True if this Context is restricted, false otherwise. 27594b5da6829aa5e324f5e9414c25d132ba0a9ebeb3Scott Main * 2760870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy * @see #CONTEXT_RESTRICTED 2761870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy */ 2762870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy public boolean isRestricted() { 2763870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy return false; 2764870e09fcd2dfdc12ac318962efd28b0420c562bbRomain Guy } 27659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2766