2 * Copyright (C) 2006 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package android.content;
19 import android.annotation.SystemApi;
20 import android.app.IApplicationThread;
21 import android.app.IServiceConnection;
22 import android.content.pm.ApplicationInfo;
23 import android.content.pm.PackageManager;
24 import android.content.res.AssetManager;
25 import android.content.res.Configuration;
26 import android.content.res.Resources;
27 import android.database.DatabaseErrorHandler;
28 import android.database.sqlite.SQLiteDatabase;
29 import android.database.sqlite.SQLiteDatabase.CursorFactory;
30 import android.graphics.Bitmap;
31 import android.graphics.drawable.Drawable;
32 import android.net.Uri;
33 import android.os.Bundle;
34 import android.os.Handler;
35 import android.os.IBinder;
36 import android.os.Looper;
37 import android.os.UserHandle;
38 import android.view.Display;
39 import android.view.DisplayAdjustments;
42 import java.io.FileInputStream;
43 import java.io.FileNotFoundException;
44 import java.io.FileOutputStream;
45 import java.io.IOException;
46 import java.io.InputStream;
49 * Proxying implementation of Context that simply delegates all of its calls to
50 * another Context. Can be subclassed to modify behavior without changing
51 * the original Context.
53 public class ContextWrapper extends Context {
56 public ContextWrapper(Context base) {
61 * Set the base context for this ContextWrapper. All calls will then be
62 * delegated to the base context. Throws
63 * IllegalStateException if a base context has already been set.
65 * @param base The new base context for this wrapper.
67 protected void attachBaseContext(Context base) {
69 throw new IllegalStateException("Base context already set");
75 * @return the base context as set by the constructor or setBaseContext
77 public Context getBaseContext() {
82 public AssetManager getAssets() {
83 return mBase.getAssets();
87 public Resources getResources() {
88 return mBase.getResources();
92 public PackageManager getPackageManager() {
93 return mBase.getPackageManager();
97 public ContentResolver getContentResolver() {
98 return mBase.getContentResolver();
102 public Looper getMainLooper() {
103 return mBase.getMainLooper();
107 public Context getApplicationContext() {
108 return mBase.getApplicationContext();
112 public void setTheme(int resid) {
113 mBase.setTheme(resid);
118 public int getThemeResId() {
119 return mBase.getThemeResId();
123 public Resources.Theme getTheme() {
124 return mBase.getTheme();
128 public ClassLoader getClassLoader() {
129 return mBase.getClassLoader();
133 public String getPackageName() {
134 return mBase.getPackageName();
139 public String getBasePackageName() {
140 return mBase.getBasePackageName();
145 public String getOpPackageName() {
146 return mBase.getOpPackageName();
150 public ApplicationInfo getApplicationInfo() {
151 return mBase.getApplicationInfo();
155 public String getPackageResourcePath() {
156 return mBase.getPackageResourcePath();
160 public String getPackageCodePath() {
161 return mBase.getPackageCodePath();
165 public SharedPreferences getSharedPreferences(String name, int mode) {
166 return mBase.getSharedPreferences(name, mode);
171 public SharedPreferences getSharedPreferences(File file, int mode) {
172 return mBase.getSharedPreferences(file, mode);
177 public void reloadSharedPreferences() {
178 mBase.reloadSharedPreferences();
182 public boolean moveSharedPreferencesFrom(Context sourceContext, String name) {
183 return mBase.moveSharedPreferencesFrom(sourceContext, name);
187 public boolean deleteSharedPreferences(String name) {
188 return mBase.deleteSharedPreferences(name);
192 public FileInputStream openFileInput(String name)
193 throws FileNotFoundException {
194 return mBase.openFileInput(name);
198 public FileOutputStream openFileOutput(String name, int mode)
199 throws FileNotFoundException {
200 return mBase.openFileOutput(name, mode);
204 public boolean deleteFile(String name) {
205 return mBase.deleteFile(name);
209 public File getFileStreamPath(String name) {
210 return mBase.getFileStreamPath(name);
215 public File getSharedPreferencesPath(String name) {
216 return mBase.getSharedPreferencesPath(name);
220 public String[] fileList() {
221 return mBase.fileList();
225 public File getDataDir() {
226 return mBase.getDataDir();
230 public File getFilesDir() {
231 return mBase.getFilesDir();
235 public File getNoBackupFilesDir() {
236 return mBase.getNoBackupFilesDir();
240 public File getExternalFilesDir(String type) {
241 return mBase.getExternalFilesDir(type);
245 public File[] getExternalFilesDirs(String type) {
246 return mBase.getExternalFilesDirs(type);
250 public File getObbDir() {
251 return mBase.getObbDir();
255 public File[] getObbDirs() {
256 return mBase.getObbDirs();
260 public File getCacheDir() {
261 return mBase.getCacheDir();
265 public File getCodeCacheDir() {
266 return mBase.getCodeCacheDir();
270 public File getExternalCacheDir() {
271 return mBase.getExternalCacheDir();
275 public File[] getExternalCacheDirs() {
276 return mBase.getExternalCacheDirs();
280 public File[] getExternalMediaDirs() {
281 return mBase.getExternalMediaDirs();
285 public File getDir(String name, int mode) {
286 return mBase.getDir(name, mode);
292 public File getPreloadsFileCache() {
293 return mBase.getPreloadsFileCache();
297 public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
298 return mBase.openOrCreateDatabase(name, mode, factory);
302 public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory,
303 DatabaseErrorHandler errorHandler) {
304 return mBase.openOrCreateDatabase(name, mode, factory, errorHandler);
308 public boolean moveDatabaseFrom(Context sourceContext, String name) {
309 return mBase.moveDatabaseFrom(sourceContext, name);
313 public boolean deleteDatabase(String name) {
314 return mBase.deleteDatabase(name);
318 public File getDatabasePath(String name) {
319 return mBase.getDatabasePath(name);
323 public String[] databaseList() {
324 return mBase.databaseList();
329 public Drawable getWallpaper() {
330 return mBase.getWallpaper();
335 public Drawable peekWallpaper() {
336 return mBase.peekWallpaper();
341 public int getWallpaperDesiredMinimumWidth() {
342 return mBase.getWallpaperDesiredMinimumWidth();
347 public int getWallpaperDesiredMinimumHeight() {
348 return mBase.getWallpaperDesiredMinimumHeight();
353 public void setWallpaper(Bitmap bitmap) throws IOException {
354 mBase.setWallpaper(bitmap);
359 public void setWallpaper(InputStream data) throws IOException {
360 mBase.setWallpaper(data);
365 public void clearWallpaper() throws IOException {
366 mBase.clearWallpaper();
370 public void startActivity(Intent intent) {
371 mBase.startActivity(intent);
376 public void startActivityAsUser(Intent intent, UserHandle user) {
377 mBase.startActivityAsUser(intent, user);
381 public void startActivityForResult(
382 String who, Intent intent, int requestCode, Bundle options) {
383 mBase.startActivityForResult(who, intent, requestCode, options);
387 public boolean canStartActivityForResult() {
388 return mBase.canStartActivityForResult();
392 public void startActivity(Intent intent, Bundle options) {
393 mBase.startActivity(intent, options);
398 public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
399 mBase.startActivityAsUser(intent, options, user);
403 public void startActivities(Intent[] intents) {
404 mBase.startActivities(intents);
408 public void startActivities(Intent[] intents, Bundle options) {
409 mBase.startActivities(intents, options);
414 public void startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
415 mBase.startActivitiesAsUser(intents, options, userHandle);
419 public void startIntentSender(IntentSender intent,
420 Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
421 throws IntentSender.SendIntentException {
422 mBase.startIntentSender(intent, fillInIntent, flagsMask,
423 flagsValues, extraFlags);
427 public void startIntentSender(IntentSender intent,
428 Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags,
429 Bundle options) throws IntentSender.SendIntentException {
430 mBase.startIntentSender(intent, fillInIntent, flagsMask,
431 flagsValues, extraFlags, options);
435 public void sendBroadcast(Intent intent) {
436 mBase.sendBroadcast(intent);
440 public void sendBroadcast(Intent intent, String receiverPermission) {
441 mBase.sendBroadcast(intent, receiverPermission);
446 public void sendBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions) {
447 mBase.sendBroadcastMultiplePermissions(intent, receiverPermissions);
453 public void sendBroadcast(Intent intent, String receiverPermission, Bundle options) {
454 mBase.sendBroadcast(intent, receiverPermission, options);
459 public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
460 mBase.sendBroadcast(intent, receiverPermission, appOp);
464 public void sendOrderedBroadcast(Intent intent,
465 String receiverPermission) {
466 mBase.sendOrderedBroadcast(intent, receiverPermission);
470 public void sendOrderedBroadcast(
471 Intent intent, String receiverPermission, BroadcastReceiver resultReceiver,
472 Handler scheduler, int initialCode, String initialData,
473 Bundle initialExtras) {
474 mBase.sendOrderedBroadcast(intent, receiverPermission,
475 resultReceiver, scheduler, initialCode,
476 initialData, initialExtras);
482 public void sendOrderedBroadcast(
483 Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver,
484 Handler scheduler, int initialCode, String initialData,
485 Bundle initialExtras) {
486 mBase.sendOrderedBroadcast(intent, receiverPermission,
487 options, resultReceiver, scheduler, initialCode,
488 initialData, initialExtras);
493 public void sendOrderedBroadcast(
494 Intent intent, String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
495 Handler scheduler, int initialCode, String initialData,
496 Bundle initialExtras) {
497 mBase.sendOrderedBroadcast(intent, receiverPermission, appOp,
498 resultReceiver, scheduler, initialCode,
499 initialData, initialExtras);
503 public void sendBroadcastAsUser(Intent intent, UserHandle user) {
504 mBase.sendBroadcastAsUser(intent, user);
508 public void sendBroadcastAsUser(Intent intent, UserHandle user,
509 String receiverPermission) {
510 mBase.sendBroadcastAsUser(intent, user, receiverPermission);
515 public void sendBroadcastAsUser(Intent intent, UserHandle user,
516 String receiverPermission, Bundle options) {
517 mBase.sendBroadcastAsUser(intent, user, receiverPermission, options);
522 public void sendBroadcastAsUser(Intent intent, UserHandle user,
523 String receiverPermission, int appOp) {
524 mBase.sendBroadcastAsUser(intent, user, receiverPermission, appOp);
528 public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
529 String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
530 int initialCode, String initialData, Bundle initialExtras) {
531 mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver,
532 scheduler, initialCode, initialData, initialExtras);
537 public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
538 String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
539 Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
540 mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, resultReceiver,
541 scheduler, initialCode, initialData, initialExtras);
546 public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
547 String receiverPermission, int appOp, Bundle options, BroadcastReceiver resultReceiver,
548 Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
549 mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, options,
550 resultReceiver, scheduler, initialCode, initialData, initialExtras);
555 public void sendStickyBroadcast(Intent intent) {
556 mBase.sendStickyBroadcast(intent);
561 public void sendStickyOrderedBroadcast(
562 Intent intent, BroadcastReceiver resultReceiver,
563 Handler scheduler, int initialCode, String initialData,
564 Bundle initialExtras) {
565 mBase.sendStickyOrderedBroadcast(intent,
566 resultReceiver, scheduler, initialCode,
567 initialData, initialExtras);
572 public void removeStickyBroadcast(Intent intent) {
573 mBase.removeStickyBroadcast(intent);
578 public void sendStickyBroadcastAsUser(Intent intent, UserHandle user) {
579 mBase.sendStickyBroadcastAsUser(intent, user);
585 public void sendStickyBroadcastAsUser(Intent intent, UserHandle user, Bundle options) {
586 mBase.sendStickyBroadcastAsUser(intent, user, options);
591 public void sendStickyOrderedBroadcastAsUser(Intent intent,
592 UserHandle user, BroadcastReceiver resultReceiver,
593 Handler scheduler, int initialCode, String initialData,
594 Bundle initialExtras) {
595 mBase.sendStickyOrderedBroadcastAsUser(intent, user, resultReceiver,
596 scheduler, initialCode, initialData, initialExtras);
601 public void removeStickyBroadcastAsUser(Intent intent, UserHandle user) {
602 mBase.removeStickyBroadcastAsUser(intent, user);
606 public Intent registerReceiver(
607 BroadcastReceiver receiver, IntentFilter filter) {
608 return mBase.registerReceiver(receiver, filter);
612 public Intent registerReceiver(
613 BroadcastReceiver receiver, IntentFilter filter, int flags) {
614 return mBase.registerReceiver(receiver, filter, flags);
618 public Intent registerReceiver(
619 BroadcastReceiver receiver, IntentFilter filter,
620 String broadcastPermission, Handler scheduler) {
621 return mBase.registerReceiver(receiver, filter, broadcastPermission,
626 public Intent registerReceiver(
627 BroadcastReceiver receiver, IntentFilter filter,
628 String broadcastPermission, Handler scheduler, int flags) {
629 return mBase.registerReceiver(receiver, filter, broadcastPermission,
635 public Intent registerReceiverAsUser(
636 BroadcastReceiver receiver, UserHandle user, IntentFilter filter,
637 String broadcastPermission, Handler scheduler) {
638 return mBase.registerReceiverAsUser(receiver, user, filter, broadcastPermission,
643 public void unregisterReceiver(BroadcastReceiver receiver) {
644 mBase.unregisterReceiver(receiver);
648 public ComponentName startService(Intent service) {
649 return mBase.startService(service);
653 public ComponentName startForegroundService(Intent service) {
654 return mBase.startForegroundService(service);
658 public boolean stopService(Intent name) {
659 return mBase.stopService(name);
664 public ComponentName startServiceAsUser(Intent service, UserHandle user) {
665 return mBase.startServiceAsUser(service, user);
670 public ComponentName startForegroundServiceAsUser(Intent service, UserHandle user) {
671 return mBase.startForegroundServiceAsUser(service, user);
676 public boolean stopServiceAsUser(Intent name, UserHandle user) {
677 return mBase.stopServiceAsUser(name, user);
681 public boolean bindService(Intent service, ServiceConnection conn,
683 return mBase.bindService(service, conn, flags);
688 public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
690 return mBase.bindServiceAsUser(service, conn, flags, user);
695 public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
696 Handler handler, UserHandle user) {
697 return mBase.bindServiceAsUser(service, conn, flags, handler, user);
701 public void unbindService(ServiceConnection conn) {
702 mBase.unbindService(conn);
706 public boolean startInstrumentation(ComponentName className,
707 String profileFile, Bundle arguments) {
708 return mBase.startInstrumentation(className, profileFile, arguments);
712 public Object getSystemService(String name) {
713 return mBase.getSystemService(name);
717 public String getSystemServiceName(Class<?> serviceClass) {
718 return mBase.getSystemServiceName(serviceClass);
722 public int checkPermission(String permission, int pid, int uid) {
723 return mBase.checkPermission(permission, pid, uid);
728 public int checkPermission(String permission, int pid, int uid, IBinder callerToken) {
729 return mBase.checkPermission(permission, pid, uid, callerToken);
733 public int checkCallingPermission(String permission) {
734 return mBase.checkCallingPermission(permission);
738 public int checkCallingOrSelfPermission(String permission) {
739 return mBase.checkCallingOrSelfPermission(permission);
743 public int checkSelfPermission(String permission) {
744 return mBase.checkSelfPermission(permission);
748 public void enforcePermission(
749 String permission, int pid, int uid, String message) {
750 mBase.enforcePermission(permission, pid, uid, message);
754 public void enforceCallingPermission(String permission, String message) {
755 mBase.enforceCallingPermission(permission, message);
759 public void enforceCallingOrSelfPermission(
760 String permission, String message) {
761 mBase.enforceCallingOrSelfPermission(permission, message);
765 public void grantUriPermission(String toPackage, Uri uri, int modeFlags) {
766 mBase.grantUriPermission(toPackage, uri, modeFlags);
770 public void revokeUriPermission(Uri uri, int modeFlags) {
771 mBase.revokeUriPermission(uri, modeFlags);
775 public void revokeUriPermission(String targetPackage, Uri uri, int modeFlags) {
776 mBase.revokeUriPermission(targetPackage, uri, modeFlags);
780 public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) {
781 return mBase.checkUriPermission(uri, pid, uid, modeFlags);
786 public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags, IBinder callerToken) {
787 return mBase.checkUriPermission(uri, pid, uid, modeFlags, callerToken);
791 public int checkCallingUriPermission(Uri uri, int modeFlags) {
792 return mBase.checkCallingUriPermission(uri, modeFlags);
796 public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) {
797 return mBase.checkCallingOrSelfUriPermission(uri, modeFlags);
801 public int checkUriPermission(Uri uri, String readPermission,
802 String writePermission, int pid, int uid, int modeFlags) {
803 return mBase.checkUriPermission(uri, readPermission, writePermission,
804 pid, uid, modeFlags);
808 public void enforceUriPermission(
809 Uri uri, int pid, int uid, int modeFlags, String message) {
810 mBase.enforceUriPermission(uri, pid, uid, modeFlags, message);
814 public void enforceCallingUriPermission(
815 Uri uri, int modeFlags, String message) {
816 mBase.enforceCallingUriPermission(uri, modeFlags, message);
820 public void enforceCallingOrSelfUriPermission(
821 Uri uri, int modeFlags, String message) {
822 mBase.enforceCallingOrSelfUriPermission(uri, modeFlags, message);
826 public void enforceUriPermission(
827 Uri uri, String readPermission, String writePermission,
828 int pid, int uid, int modeFlags, String message) {
829 mBase.enforceUriPermission(
830 uri, readPermission, writePermission, pid, uid, modeFlags,
835 public Context createPackageContext(String packageName, int flags)
836 throws PackageManager.NameNotFoundException {
837 return mBase.createPackageContext(packageName, flags);
842 public Context createPackageContextAsUser(String packageName, int flags, UserHandle user)
843 throws PackageManager.NameNotFoundException {
844 return mBase.createPackageContextAsUser(packageName, flags, user);
849 public Context createApplicationContext(ApplicationInfo application,
850 int flags) throws PackageManager.NameNotFoundException {
851 return mBase.createApplicationContext(application, flags);
856 public Context createContextForSplit(String splitName)
857 throws PackageManager.NameNotFoundException {
858 return mBase.createContextForSplit(splitName);
863 public int getUserId() {
864 return mBase.getUserId();
868 public Context createConfigurationContext(Configuration overrideConfiguration) {
869 return mBase.createConfigurationContext(overrideConfiguration);
873 public Context createDisplayContext(Display display) {
874 return mBase.createDisplayContext(display);
878 public boolean isRestricted() {
879 return mBase.isRestricted();
884 public DisplayAdjustments getDisplayAdjustments(int displayId) {
885 return mBase.getDisplayAdjustments(displayId);
892 public Display getDisplay() {
893 return mBase.getDisplay();
900 public void updateDisplay(int displayId) {
901 mBase.updateDisplay(displayId);
905 public Context createDeviceProtectedStorageContext() {
906 return mBase.createDeviceProtectedStorageContext();
912 public Context createCredentialProtectedStorageContext() {
913 return mBase.createCredentialProtectedStorageContext();
917 public boolean isDeviceProtectedStorage() {
918 return mBase.isDeviceProtectedStorage();
924 public boolean isCredentialProtectedStorage() {
925 return mBase.isCredentialProtectedStorage();
930 public boolean canLoadUnsafeResources() {
931 return mBase.canLoadUnsafeResources();
938 public IBinder getActivityToken() {
939 return mBase.getActivityToken();
946 public IServiceConnection getServiceDispatcher(ServiceConnection conn, Handler handler,
948 return mBase.getServiceDispatcher(conn, handler, flags);
955 public IApplicationThread getIApplicationThread() {
956 return mBase.getIApplicationThread();
963 public Handler getMainThreadHandler() {
964 return mBase.getMainThreadHandler();
970 public int getNextAutofillId() {
971 return mBase.getNextAutofillId();