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.app.Notification;
23 import android.content.pm.ApplicationInfo;
24 import android.content.pm.PackageManager;
25 import android.content.res.AssetManager;
26 import android.content.res.Configuration;
27 import android.content.res.Resources;
28 import android.database.DatabaseErrorHandler;
29 import android.database.sqlite.SQLiteDatabase;
30 import android.database.sqlite.SQLiteDatabase.CursorFactory;
31 import android.graphics.Bitmap;
32 import android.graphics.drawable.Drawable;
33 import android.net.Uri;
34 import android.os.Bundle;
35 import android.os.Handler;
36 import android.os.IBinder;
37 import android.os.Looper;
38 import android.os.UserHandle;
39 import android.view.Display;
40 import android.view.DisplayAdjustments;
43 import java.io.FileInputStream;
44 import java.io.FileNotFoundException;
45 import java.io.FileOutputStream;
46 import java.io.IOException;
47 import java.io.InputStream;
50 * Proxying implementation of Context that simply delegates all of its calls to
51 * another Context. Can be subclassed to modify behavior without changing
52 * the original Context.
54 public class ContextWrapper extends Context {
57 public ContextWrapper(Context base) {
62 * Set the base context for this ContextWrapper. All calls will then be
63 * delegated to the base context. Throws
64 * IllegalStateException if a base context has already been set.
66 * @param base The new base context for this wrapper.
68 protected void attachBaseContext(Context base) {
70 throw new IllegalStateException("Base context already set");
76 * @return the base context as set by the constructor or setBaseContext
78 public Context getBaseContext() {
83 public AssetManager getAssets() {
84 return mBase.getAssets();
88 public Resources getResources() {
89 return mBase.getResources();
93 public PackageManager getPackageManager() {
94 return mBase.getPackageManager();
98 public ContentResolver getContentResolver() {
99 return mBase.getContentResolver();
103 public Looper getMainLooper() {
104 return mBase.getMainLooper();
108 public Context getApplicationContext() {
109 return mBase.getApplicationContext();
113 public void setTheme(int resid) {
114 mBase.setTheme(resid);
119 public int getThemeResId() {
120 return mBase.getThemeResId();
124 public Resources.Theme getTheme() {
125 return mBase.getTheme();
129 public ClassLoader getClassLoader() {
130 return mBase.getClassLoader();
134 public String getPackageName() {
135 return mBase.getPackageName();
140 public String getBasePackageName() {
141 return mBase.getBasePackageName();
146 public String getOpPackageName() {
147 return mBase.getOpPackageName();
151 public ApplicationInfo getApplicationInfo() {
152 return mBase.getApplicationInfo();
156 public String getPackageResourcePath() {
157 return mBase.getPackageResourcePath();
161 public String getPackageCodePath() {
162 return mBase.getPackageCodePath();
166 public SharedPreferences getSharedPreferences(String name, int mode) {
167 return mBase.getSharedPreferences(name, mode);
172 public SharedPreferences getSharedPreferences(File file, int mode) {
173 return mBase.getSharedPreferences(file, mode);
177 public boolean moveSharedPreferencesFrom(Context sourceContext, String name) {
178 return mBase.moveSharedPreferencesFrom(sourceContext, name);
182 public boolean deleteSharedPreferences(String name) {
183 return mBase.deleteSharedPreferences(name);
187 public FileInputStream openFileInput(String name)
188 throws FileNotFoundException {
189 return mBase.openFileInput(name);
193 public FileOutputStream openFileOutput(String name, int mode)
194 throws FileNotFoundException {
195 return mBase.openFileOutput(name, mode);
199 public boolean deleteFile(String name) {
200 return mBase.deleteFile(name);
204 public File getFileStreamPath(String name) {
205 return mBase.getFileStreamPath(name);
210 public File getSharedPreferencesPath(String name) {
211 return mBase.getSharedPreferencesPath(name);
215 public String[] fileList() {
216 return mBase.fileList();
220 public File getDataDir() {
221 return mBase.getDataDir();
225 public File getFilesDir() {
226 return mBase.getFilesDir();
230 public File getNoBackupFilesDir() {
231 return mBase.getNoBackupFilesDir();
235 public File getExternalFilesDir(String type) {
236 return mBase.getExternalFilesDir(type);
240 public File[] getExternalFilesDirs(String type) {
241 return mBase.getExternalFilesDirs(type);
245 public File getObbDir() {
246 return mBase.getObbDir();
250 public File[] getObbDirs() {
251 return mBase.getObbDirs();
255 public File getCacheDir() {
256 return mBase.getCacheDir();
260 public File getCodeCacheDir() {
261 return mBase.getCodeCacheDir();
265 public File getExternalCacheDir() {
266 return mBase.getExternalCacheDir();
270 public File[] getExternalCacheDirs() {
271 return mBase.getExternalCacheDirs();
275 public File[] getExternalMediaDirs() {
276 return mBase.getExternalMediaDirs();
280 public File getDir(String name, int mode) {
281 return mBase.getDir(name, mode);
287 public File getPreloadsFileCache() {
288 return mBase.getPreloadsFileCache();
292 public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
293 return mBase.openOrCreateDatabase(name, mode, factory);
297 public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory,
298 DatabaseErrorHandler errorHandler) {
299 return mBase.openOrCreateDatabase(name, mode, factory, errorHandler);
303 public boolean moveDatabaseFrom(Context sourceContext, String name) {
304 return mBase.moveDatabaseFrom(sourceContext, name);
308 public boolean deleteDatabase(String name) {
309 return mBase.deleteDatabase(name);
313 public File getDatabasePath(String name) {
314 return mBase.getDatabasePath(name);
318 public String[] databaseList() {
319 return mBase.databaseList();
324 public Drawable getWallpaper() {
325 return mBase.getWallpaper();
330 public Drawable peekWallpaper() {
331 return mBase.peekWallpaper();
336 public int getWallpaperDesiredMinimumWidth() {
337 return mBase.getWallpaperDesiredMinimumWidth();
342 public int getWallpaperDesiredMinimumHeight() {
343 return mBase.getWallpaperDesiredMinimumHeight();
348 public void setWallpaper(Bitmap bitmap) throws IOException {
349 mBase.setWallpaper(bitmap);
354 public void setWallpaper(InputStream data) throws IOException {
355 mBase.setWallpaper(data);
360 public void clearWallpaper() throws IOException {
361 mBase.clearWallpaper();
365 public void startActivity(Intent intent) {
366 mBase.startActivity(intent);
371 public void startActivityAsUser(Intent intent, UserHandle user) {
372 mBase.startActivityAsUser(intent, user);
376 public void startActivityForResult(
377 String who, Intent intent, int requestCode, Bundle options) {
378 mBase.startActivityForResult(who, intent, requestCode, options);
382 public boolean canStartActivityForResult() {
383 return mBase.canStartActivityForResult();
387 public void startActivity(Intent intent, Bundle options) {
388 mBase.startActivity(intent, options);
393 public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
394 mBase.startActivityAsUser(intent, options, user);
398 public void startActivities(Intent[] intents) {
399 mBase.startActivities(intents);
403 public void startActivities(Intent[] intents, Bundle options) {
404 mBase.startActivities(intents, options);
409 public void startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
410 mBase.startActivitiesAsUser(intents, options, userHandle);
414 public void startIntentSender(IntentSender intent,
415 Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
416 throws IntentSender.SendIntentException {
417 mBase.startIntentSender(intent, fillInIntent, flagsMask,
418 flagsValues, extraFlags);
422 public void startIntentSender(IntentSender intent,
423 Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags,
424 Bundle options) throws IntentSender.SendIntentException {
425 mBase.startIntentSender(intent, fillInIntent, flagsMask,
426 flagsValues, extraFlags, options);
430 public void sendBroadcast(Intent intent) {
431 mBase.sendBroadcast(intent);
435 public void sendBroadcast(Intent intent, String receiverPermission) {
436 mBase.sendBroadcast(intent, receiverPermission);
441 public void sendBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions) {
442 mBase.sendBroadcastMultiplePermissions(intent, receiverPermissions);
448 public void sendBroadcast(Intent intent, String receiverPermission, Bundle options) {
449 mBase.sendBroadcast(intent, receiverPermission, options);
454 public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
455 mBase.sendBroadcast(intent, receiverPermission, appOp);
459 public void sendOrderedBroadcast(Intent intent,
460 String receiverPermission) {
461 mBase.sendOrderedBroadcast(intent, receiverPermission);
465 public void sendOrderedBroadcast(
466 Intent intent, String receiverPermission, BroadcastReceiver resultReceiver,
467 Handler scheduler, int initialCode, String initialData,
468 Bundle initialExtras) {
469 mBase.sendOrderedBroadcast(intent, receiverPermission,
470 resultReceiver, scheduler, initialCode,
471 initialData, initialExtras);
477 public void sendOrderedBroadcast(
478 Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver,
479 Handler scheduler, int initialCode, String initialData,
480 Bundle initialExtras) {
481 mBase.sendOrderedBroadcast(intent, receiverPermission,
482 options, resultReceiver, scheduler, initialCode,
483 initialData, initialExtras);
488 public void sendOrderedBroadcast(
489 Intent intent, String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
490 Handler scheduler, int initialCode, String initialData,
491 Bundle initialExtras) {
492 mBase.sendOrderedBroadcast(intent, receiverPermission, appOp,
493 resultReceiver, scheduler, initialCode,
494 initialData, initialExtras);
498 public void sendBroadcastAsUser(Intent intent, UserHandle user) {
499 mBase.sendBroadcastAsUser(intent, user);
503 public void sendBroadcastAsUser(Intent intent, UserHandle user,
504 String receiverPermission) {
505 mBase.sendBroadcastAsUser(intent, user, receiverPermission);
510 public void sendBroadcastAsUser(Intent intent, UserHandle user,
511 String receiverPermission, Bundle options) {
512 mBase.sendBroadcastAsUser(intent, user, receiverPermission, options);
517 public void sendBroadcastAsUser(Intent intent, UserHandle user,
518 String receiverPermission, int appOp) {
519 mBase.sendBroadcastAsUser(intent, user, receiverPermission, appOp);
523 public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
524 String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
525 int initialCode, String initialData, Bundle initialExtras) {
526 mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver,
527 scheduler, initialCode, initialData, initialExtras);
532 public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
533 String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
534 Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
535 mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, resultReceiver,
536 scheduler, initialCode, initialData, initialExtras);
541 public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
542 String receiverPermission, int appOp, Bundle options, BroadcastReceiver resultReceiver,
543 Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
544 mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, options,
545 resultReceiver, scheduler, initialCode, initialData, initialExtras);
550 public void sendStickyBroadcast(Intent intent) {
551 mBase.sendStickyBroadcast(intent);
556 public void sendStickyOrderedBroadcast(
557 Intent intent, BroadcastReceiver resultReceiver,
558 Handler scheduler, int initialCode, String initialData,
559 Bundle initialExtras) {
560 mBase.sendStickyOrderedBroadcast(intent,
561 resultReceiver, scheduler, initialCode,
562 initialData, initialExtras);
567 public void removeStickyBroadcast(Intent intent) {
568 mBase.removeStickyBroadcast(intent);
573 public void sendStickyBroadcastAsUser(Intent intent, UserHandle user) {
574 mBase.sendStickyBroadcastAsUser(intent, user);
580 public void sendStickyBroadcastAsUser(Intent intent, UserHandle user, Bundle options) {
581 mBase.sendStickyBroadcastAsUser(intent, user, options);
586 public void sendStickyOrderedBroadcastAsUser(Intent intent,
587 UserHandle user, BroadcastReceiver resultReceiver,
588 Handler scheduler, int initialCode, String initialData,
589 Bundle initialExtras) {
590 mBase.sendStickyOrderedBroadcastAsUser(intent, user, resultReceiver,
591 scheduler, initialCode, initialData, initialExtras);
596 public void removeStickyBroadcastAsUser(Intent intent, UserHandle user) {
597 mBase.removeStickyBroadcastAsUser(intent, user);
601 public Intent registerReceiver(
602 BroadcastReceiver receiver, IntentFilter filter) {
603 return mBase.registerReceiver(receiver, filter);
607 public Intent registerReceiver(
608 BroadcastReceiver receiver, IntentFilter filter, int flags) {
609 return mBase.registerReceiver(receiver, filter, flags);
613 public Intent registerReceiver(
614 BroadcastReceiver receiver, IntentFilter filter,
615 String broadcastPermission, Handler scheduler) {
616 return mBase.registerReceiver(receiver, filter, broadcastPermission,
621 public Intent registerReceiver(
622 BroadcastReceiver receiver, IntentFilter filter,
623 String broadcastPermission, Handler scheduler, int flags) {
624 return mBase.registerReceiver(receiver, filter, broadcastPermission,
630 public Intent registerReceiverAsUser(
631 BroadcastReceiver receiver, UserHandle user, IntentFilter filter,
632 String broadcastPermission, Handler scheduler) {
633 return mBase.registerReceiverAsUser(receiver, user, filter, broadcastPermission,
638 public void unregisterReceiver(BroadcastReceiver receiver) {
639 mBase.unregisterReceiver(receiver);
643 public ComponentName startService(Intent service) {
644 return mBase.startService(service);
648 public ComponentName startForegroundService(Intent service) {
649 return mBase.startForegroundService(service);
653 public boolean stopService(Intent name) {
654 return mBase.stopService(name);
659 public ComponentName startServiceAsUser(Intent service, UserHandle user) {
660 return mBase.startServiceAsUser(service, user);
665 public ComponentName startForegroundServiceAsUser(Intent service, UserHandle user) {
666 return mBase.startForegroundServiceAsUser(service, user);
671 public boolean stopServiceAsUser(Intent name, UserHandle user) {
672 return mBase.stopServiceAsUser(name, user);
676 public boolean bindService(Intent service, ServiceConnection conn,
678 return mBase.bindService(service, conn, flags);
683 public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
685 return mBase.bindServiceAsUser(service, conn, flags, user);
690 public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
691 Handler handler, UserHandle user) {
692 return mBase.bindServiceAsUser(service, conn, flags, handler, user);
696 public void unbindService(ServiceConnection conn) {
697 mBase.unbindService(conn);
701 public boolean startInstrumentation(ComponentName className,
702 String profileFile, Bundle arguments) {
703 return mBase.startInstrumentation(className, profileFile, arguments);
707 public Object getSystemService(String name) {
708 return mBase.getSystemService(name);
712 public String getSystemServiceName(Class<?> serviceClass) {
713 return mBase.getSystemServiceName(serviceClass);
717 public int checkPermission(String permission, int pid, int uid) {
718 return mBase.checkPermission(permission, pid, uid);
723 public int checkPermission(String permission, int pid, int uid, IBinder callerToken) {
724 return mBase.checkPermission(permission, pid, uid, callerToken);
728 public int checkCallingPermission(String permission) {
729 return mBase.checkCallingPermission(permission);
733 public int checkCallingOrSelfPermission(String permission) {
734 return mBase.checkCallingOrSelfPermission(permission);
738 public int checkSelfPermission(String permission) {
739 return mBase.checkSelfPermission(permission);
743 public void enforcePermission(
744 String permission, int pid, int uid, String message) {
745 mBase.enforcePermission(permission, pid, uid, message);
749 public void enforceCallingPermission(String permission, String message) {
750 mBase.enforceCallingPermission(permission, message);
754 public void enforceCallingOrSelfPermission(
755 String permission, String message) {
756 mBase.enforceCallingOrSelfPermission(permission, message);
760 public void grantUriPermission(String toPackage, Uri uri, int modeFlags) {
761 mBase.grantUriPermission(toPackage, uri, modeFlags);
765 public void revokeUriPermission(Uri uri, int modeFlags) {
766 mBase.revokeUriPermission(uri, modeFlags);
770 public void revokeUriPermission(String targetPackage, Uri uri, int modeFlags) {
771 mBase.revokeUriPermission(targetPackage, uri, modeFlags);
775 public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) {
776 return mBase.checkUriPermission(uri, pid, uid, modeFlags);
781 public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags, IBinder callerToken) {
782 return mBase.checkUriPermission(uri, pid, uid, modeFlags, callerToken);
786 public int checkCallingUriPermission(Uri uri, int modeFlags) {
787 return mBase.checkCallingUriPermission(uri, modeFlags);
791 public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) {
792 return mBase.checkCallingOrSelfUriPermission(uri, modeFlags);
796 public int checkUriPermission(Uri uri, String readPermission,
797 String writePermission, int pid, int uid, int modeFlags) {
798 return mBase.checkUriPermission(uri, readPermission, writePermission,
799 pid, uid, modeFlags);
803 public void enforceUriPermission(
804 Uri uri, int pid, int uid, int modeFlags, String message) {
805 mBase.enforceUriPermission(uri, pid, uid, modeFlags, message);
809 public void enforceCallingUriPermission(
810 Uri uri, int modeFlags, String message) {
811 mBase.enforceCallingUriPermission(uri, modeFlags, message);
815 public void enforceCallingOrSelfUriPermission(
816 Uri uri, int modeFlags, String message) {
817 mBase.enforceCallingOrSelfUriPermission(uri, modeFlags, message);
821 public void enforceUriPermission(
822 Uri uri, String readPermission, String writePermission,
823 int pid, int uid, int modeFlags, String message) {
824 mBase.enforceUriPermission(
825 uri, readPermission, writePermission, pid, uid, modeFlags,
830 public Context createPackageContext(String packageName, int flags)
831 throws PackageManager.NameNotFoundException {
832 return mBase.createPackageContext(packageName, flags);
837 public Context createPackageContextAsUser(String packageName, int flags, UserHandle user)
838 throws PackageManager.NameNotFoundException {
839 return mBase.createPackageContextAsUser(packageName, flags, user);
844 public Context createApplicationContext(ApplicationInfo application,
845 int flags) throws PackageManager.NameNotFoundException {
846 return mBase.createApplicationContext(application, flags);
851 public Context createContextForSplit(String splitName)
852 throws PackageManager.NameNotFoundException {
853 return mBase.createContextForSplit(splitName);
858 public int getUserId() {
859 return mBase.getUserId();
863 public Context createConfigurationContext(Configuration overrideConfiguration) {
864 return mBase.createConfigurationContext(overrideConfiguration);
868 public Context createDisplayContext(Display display) {
869 return mBase.createDisplayContext(display);
873 public boolean isRestricted() {
874 return mBase.isRestricted();
879 public DisplayAdjustments getDisplayAdjustments(int displayId) {
880 return mBase.getDisplayAdjustments(displayId);
887 public Display getDisplay() {
888 return mBase.getDisplay();
895 public void updateDisplay(int displayId) {
896 mBase.updateDisplay(displayId);
900 public Context createDeviceProtectedStorageContext() {
901 return mBase.createDeviceProtectedStorageContext();
907 public Context createCredentialProtectedStorageContext() {
908 return mBase.createCredentialProtectedStorageContext();
912 public boolean isDeviceProtectedStorage() {
913 return mBase.isDeviceProtectedStorage();
919 public boolean isCredentialProtectedStorage() {
920 return mBase.isCredentialProtectedStorage();
927 public IBinder getActivityToken() {
928 return mBase.getActivityToken();
935 public IServiceConnection getServiceDispatcher(ServiceConnection conn, Handler handler,
937 return mBase.getServiceDispatcher(conn, handler, flags);
944 public IApplicationThread getIApplicationThread() {
945 return mBase.getIApplicationThread();
952 public Handler getMainThreadHandler() {
953 return mBase.getMainThreadHandler();
960 public int getNextAccessibilityId() {
961 return mBase.getNextAccessibilityId();