1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 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 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 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. 15 */ 16 17 package android.content; 18 19 import android.content.pm.ApplicationInfo; 20 import android.content.pm.PackageManager; 21 import android.content.res.AssetManager; 22 import android.content.res.Resources; 23 import android.database.sqlite.SQLiteDatabase; 24 import android.database.sqlite.SQLiteDatabase.CursorFactory; 25 import android.graphics.Bitmap; 26 import android.graphics.drawable.Drawable; 27 import android.net.Uri; 28 import android.os.Bundle; 29 import android.os.Handler; 30 import android.os.Looper; 31 32 import java.io.File; 33 import java.io.FileInputStream; 34 import java.io.FileNotFoundException; 35 import java.io.FileOutputStream; 36 import java.io.IOException; 37 import java.io.InputStream; 38 39 /** 40 * Proxying implementation of Context that simply delegates all of its calls to 41 * another Context. Can be subclassed to modify behavior without changing 42 * the original Context. 43 */ 44 public class ContextWrapper extends Context { 45 Context mBase; 46 ContextWrapper(Context base)47 public ContextWrapper(Context base) { 48 mBase = base; 49 } 50 51 /** 52 * Set the base context for this ContextWrapper. All calls will then be 53 * delegated to the base context. Throws 54 * IllegalStateException if a base context has already been set. 55 * 56 * @param base The new base context for this wrapper. 57 */ attachBaseContext(Context base)58 protected void attachBaseContext(Context base) { 59 if (mBase != null) { 60 throw new IllegalStateException("Base context already set"); 61 } 62 mBase = base; 63 } 64 65 /** 66 * @return the base context as set by the constructor or setBaseContext 67 */ getBaseContext()68 public Context getBaseContext() { 69 return mBase; 70 } 71 72 @Override getAssets()73 public AssetManager getAssets() { 74 return mBase.getAssets(); 75 } 76 77 @Override getResources()78 public Resources getResources() 79 { 80 return mBase.getResources(); 81 } 82 83 @Override getPackageManager()84 public PackageManager getPackageManager() { 85 return mBase.getPackageManager(); 86 } 87 88 @Override getContentResolver()89 public ContentResolver getContentResolver() { 90 return mBase.getContentResolver(); 91 } 92 93 @Override getMainLooper()94 public Looper getMainLooper() { 95 return mBase.getMainLooper(); 96 } 97 98 @Override getApplicationContext()99 public Context getApplicationContext() { 100 return mBase.getApplicationContext(); 101 } 102 103 @Override setTheme(int resid)104 public void setTheme(int resid) { 105 mBase.setTheme(resid); 106 } 107 108 @Override getTheme()109 public Resources.Theme getTheme() { 110 return mBase.getTheme(); 111 } 112 113 @Override getClassLoader()114 public ClassLoader getClassLoader() { 115 return mBase.getClassLoader(); 116 } 117 118 @Override getPackageName()119 public String getPackageName() { 120 return mBase.getPackageName(); 121 } 122 123 @Override getApplicationInfo()124 public ApplicationInfo getApplicationInfo() { 125 return mBase.getApplicationInfo(); 126 } 127 128 @Override getPackageResourcePath()129 public String getPackageResourcePath() { 130 return mBase.getPackageResourcePath(); 131 } 132 133 @Override getPackageCodePath()134 public String getPackageCodePath() { 135 return mBase.getPackageCodePath(); 136 } 137 138 /** @hide */ 139 @Override getSharedPrefsFile(String name)140 public File getSharedPrefsFile(String name) { 141 return mBase.getSharedPrefsFile(name); 142 } 143 144 @Override getSharedPreferences(String name, int mode)145 public SharedPreferences getSharedPreferences(String name, int mode) { 146 return mBase.getSharedPreferences(name, mode); 147 } 148 149 @Override openFileInput(String name)150 public FileInputStream openFileInput(String name) 151 throws FileNotFoundException { 152 return mBase.openFileInput(name); 153 } 154 155 @Override openFileOutput(String name, int mode)156 public FileOutputStream openFileOutput(String name, int mode) 157 throws FileNotFoundException { 158 return mBase.openFileOutput(name, mode); 159 } 160 161 @Override deleteFile(String name)162 public boolean deleteFile(String name) { 163 return mBase.deleteFile(name); 164 } 165 166 @Override getFileStreamPath(String name)167 public File getFileStreamPath(String name) { 168 return mBase.getFileStreamPath(name); 169 } 170 171 @Override fileList()172 public String[] fileList() { 173 return mBase.fileList(); 174 } 175 176 @Override getFilesDir()177 public File getFilesDir() { 178 return mBase.getFilesDir(); 179 } 180 181 @Override getExternalFilesDir(String type)182 public File getExternalFilesDir(String type) { 183 return mBase.getExternalFilesDir(type); 184 } 185 186 @Override getCacheDir()187 public File getCacheDir() { 188 return mBase.getCacheDir(); 189 } 190 191 @Override getExternalCacheDir()192 public File getExternalCacheDir() { 193 return mBase.getExternalCacheDir(); 194 } 195 196 @Override getDir(String name, int mode)197 public File getDir(String name, int mode) { 198 return mBase.getDir(name, mode); 199 } 200 201 @Override openOrCreateDatabase(String name, int mode, CursorFactory factory)202 public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) { 203 return mBase.openOrCreateDatabase(name, mode, factory); 204 } 205 206 @Override deleteDatabase(String name)207 public boolean deleteDatabase(String name) { 208 return mBase.deleteDatabase(name); 209 } 210 211 @Override getDatabasePath(String name)212 public File getDatabasePath(String name) { 213 return mBase.getDatabasePath(name); 214 } 215 216 @Override databaseList()217 public String[] databaseList() { 218 return mBase.databaseList(); 219 } 220 221 @Override getWallpaper()222 public Drawable getWallpaper() { 223 return mBase.getWallpaper(); 224 } 225 226 @Override peekWallpaper()227 public Drawable peekWallpaper() { 228 return mBase.peekWallpaper(); 229 } 230 231 @Override getWallpaperDesiredMinimumWidth()232 public int getWallpaperDesiredMinimumWidth() { 233 return mBase.getWallpaperDesiredMinimumWidth(); 234 } 235 236 @Override getWallpaperDesiredMinimumHeight()237 public int getWallpaperDesiredMinimumHeight() { 238 return mBase.getWallpaperDesiredMinimumHeight(); 239 } 240 241 @Override setWallpaper(Bitmap bitmap)242 public void setWallpaper(Bitmap bitmap) throws IOException { 243 mBase.setWallpaper(bitmap); 244 } 245 246 @Override setWallpaper(InputStream data)247 public void setWallpaper(InputStream data) throws IOException { 248 mBase.setWallpaper(data); 249 } 250 251 @Override clearWallpaper()252 public void clearWallpaper() throws IOException { 253 mBase.clearWallpaper(); 254 } 255 256 @Override startActivity(Intent intent)257 public void startActivity(Intent intent) { 258 mBase.startActivity(intent); 259 } 260 261 @Override startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)262 public void startIntentSender(IntentSender intent, 263 Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) 264 throws IntentSender.SendIntentException { 265 mBase.startIntentSender(intent, fillInIntent, flagsMask, 266 flagsValues, extraFlags); 267 } 268 269 @Override sendBroadcast(Intent intent)270 public void sendBroadcast(Intent intent) { 271 mBase.sendBroadcast(intent); 272 } 273 274 @Override sendBroadcast(Intent intent, String receiverPermission)275 public void sendBroadcast(Intent intent, String receiverPermission) { 276 mBase.sendBroadcast(intent, receiverPermission); 277 } 278 279 @Override sendOrderedBroadcast(Intent intent, String receiverPermission)280 public void sendOrderedBroadcast(Intent intent, 281 String receiverPermission) { 282 mBase.sendOrderedBroadcast(intent, receiverPermission); 283 } 284 285 @Override sendOrderedBroadcast( Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)286 public void sendOrderedBroadcast( 287 Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, 288 Handler scheduler, int initialCode, String initialData, 289 Bundle initialExtras) { 290 mBase.sendOrderedBroadcast(intent, receiverPermission, 291 resultReceiver, scheduler, initialCode, 292 initialData, initialExtras); 293 } 294 295 @Override sendStickyBroadcast(Intent intent)296 public void sendStickyBroadcast(Intent intent) { 297 mBase.sendStickyBroadcast(intent); 298 } 299 300 @Override sendStickyOrderedBroadcast( Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)301 public void sendStickyOrderedBroadcast( 302 Intent intent, BroadcastReceiver resultReceiver, 303 Handler scheduler, int initialCode, String initialData, 304 Bundle initialExtras) { 305 mBase.sendStickyOrderedBroadcast(intent, 306 resultReceiver, scheduler, initialCode, 307 initialData, initialExtras); 308 } 309 310 @Override removeStickyBroadcast(Intent intent)311 public void removeStickyBroadcast(Intent intent) { 312 mBase.removeStickyBroadcast(intent); 313 } 314 315 @Override registerReceiver( BroadcastReceiver receiver, IntentFilter filter)316 public Intent registerReceiver( 317 BroadcastReceiver receiver, IntentFilter filter) { 318 return mBase.registerReceiver(receiver, filter); 319 } 320 321 @Override registerReceiver( BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)322 public Intent registerReceiver( 323 BroadcastReceiver receiver, IntentFilter filter, 324 String broadcastPermission, Handler scheduler) { 325 return mBase.registerReceiver(receiver, filter, broadcastPermission, 326 scheduler); 327 } 328 329 @Override unregisterReceiver(BroadcastReceiver receiver)330 public void unregisterReceiver(BroadcastReceiver receiver) { 331 mBase.unregisterReceiver(receiver); 332 } 333 334 @Override startService(Intent service)335 public ComponentName startService(Intent service) { 336 return mBase.startService(service); 337 } 338 339 @Override stopService(Intent name)340 public boolean stopService(Intent name) { 341 return mBase.stopService(name); 342 } 343 344 @Override bindService(Intent service, ServiceConnection conn, int flags)345 public boolean bindService(Intent service, ServiceConnection conn, 346 int flags) { 347 return mBase.bindService(service, conn, flags); 348 } 349 350 @Override unbindService(ServiceConnection conn)351 public void unbindService(ServiceConnection conn) { 352 mBase.unbindService(conn); 353 } 354 355 @Override startInstrumentation(ComponentName className, String profileFile, Bundle arguments)356 public boolean startInstrumentation(ComponentName className, 357 String profileFile, Bundle arguments) { 358 return mBase.startInstrumentation(className, profileFile, arguments); 359 } 360 361 @Override getSystemService(String name)362 public Object getSystemService(String name) { 363 return mBase.getSystemService(name); 364 } 365 366 @Override checkPermission(String permission, int pid, int uid)367 public int checkPermission(String permission, int pid, int uid) { 368 return mBase.checkPermission(permission, pid, uid); 369 } 370 371 @Override checkCallingPermission(String permission)372 public int checkCallingPermission(String permission) { 373 return mBase.checkCallingPermission(permission); 374 } 375 376 @Override checkCallingOrSelfPermission(String permission)377 public int checkCallingOrSelfPermission(String permission) { 378 return mBase.checkCallingOrSelfPermission(permission); 379 } 380 381 @Override enforcePermission( String permission, int pid, int uid, String message)382 public void enforcePermission( 383 String permission, int pid, int uid, String message) { 384 mBase.enforcePermission(permission, pid, uid, message); 385 } 386 387 @Override enforceCallingPermission(String permission, String message)388 public void enforceCallingPermission(String permission, String message) { 389 mBase.enforceCallingPermission(permission, message); 390 } 391 392 @Override enforceCallingOrSelfPermission( String permission, String message)393 public void enforceCallingOrSelfPermission( 394 String permission, String message) { 395 mBase.enforceCallingOrSelfPermission(permission, message); 396 } 397 398 @Override grantUriPermission(String toPackage, Uri uri, int modeFlags)399 public void grantUriPermission(String toPackage, Uri uri, int modeFlags) { 400 mBase.grantUriPermission(toPackage, uri, modeFlags); 401 } 402 403 @Override revokeUriPermission(Uri uri, int modeFlags)404 public void revokeUriPermission(Uri uri, int modeFlags) { 405 mBase.revokeUriPermission(uri, modeFlags); 406 } 407 408 @Override checkUriPermission(Uri uri, int pid, int uid, int modeFlags)409 public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) { 410 return mBase.checkUriPermission(uri, pid, uid, modeFlags); 411 } 412 413 @Override checkCallingUriPermission(Uri uri, int modeFlags)414 public int checkCallingUriPermission(Uri uri, int modeFlags) { 415 return mBase.checkCallingUriPermission(uri, modeFlags); 416 } 417 418 @Override checkCallingOrSelfUriPermission(Uri uri, int modeFlags)419 public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) { 420 return mBase.checkCallingOrSelfUriPermission(uri, modeFlags); 421 } 422 423 @Override checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)424 public int checkUriPermission(Uri uri, String readPermission, 425 String writePermission, int pid, int uid, int modeFlags) { 426 return mBase.checkUriPermission(uri, readPermission, writePermission, 427 pid, uid, modeFlags); 428 } 429 430 @Override enforceUriPermission( Uri uri, int pid, int uid, int modeFlags, String message)431 public void enforceUriPermission( 432 Uri uri, int pid, int uid, int modeFlags, String message) { 433 mBase.enforceUriPermission(uri, pid, uid, modeFlags, message); 434 } 435 436 @Override enforceCallingUriPermission( Uri uri, int modeFlags, String message)437 public void enforceCallingUriPermission( 438 Uri uri, int modeFlags, String message) { 439 mBase.enforceCallingUriPermission(uri, modeFlags, message); 440 } 441 442 @Override enforceCallingOrSelfUriPermission( Uri uri, int modeFlags, String message)443 public void enforceCallingOrSelfUriPermission( 444 Uri uri, int modeFlags, String message) { 445 mBase.enforceCallingOrSelfUriPermission(uri, modeFlags, message); 446 } 447 448 @Override enforceUriPermission( Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message)449 public void enforceUriPermission( 450 Uri uri, String readPermission, String writePermission, 451 int pid, int uid, int modeFlags, String message) { 452 mBase.enforceUriPermission( 453 uri, readPermission, writePermission, pid, uid, modeFlags, 454 message); 455 } 456 457 @Override createPackageContext(String packageName, int flags)458 public Context createPackageContext(String packageName, int flags) 459 throws PackageManager.NameNotFoundException { 460 return mBase.createPackageContext(packageName, flags); 461 } 462 463 @Override isRestricted()464 public boolean isRestricted() { 465 return mBase.isRestricted(); 466 } 467 } 468