//frameworks/base/core/java/android/app/ContextImpl.java@OverridepublicStringgetPackageName(){if(mPackageInfo !=null){return mPackageInfo.getPackageName();}// No mPackageInfo means this is a Context for the system itself,// and this here is its name.return"android";}/** @hide */@OverridepublicStringgetBasePackageName(){return mBasePackageName !=null? mBasePackageName :getPackageName();}/** @hide */@OverridepublicStringgetOpPackageName(){return mOpPackageName !=null? mOpPackageName :getBasePackageName();}@OverridepublicApplicationInfogetApplicationInfo(){if(mPackageInfo !=null){return mPackageInfo.getApplicationInfo();}thrownewRuntimeException("Not supported in system context");}@OverridepublicContextgetApplicationContext(){return(mPackageInfo !=null)?
mPackageInfo.getApplication(): mMainThread.getApplication();}@OverridepublicPackageManagergetPackageManager(){if(mPackageManager !=null){return mPackageManager;}IPackageManager pm =ActivityThread.getPackageManager();if(pm !=null){// Doesn't matter if we make more than one instance.return(mPackageManager =newApplicationPackageManager(this, pm));}returnnull;}@OverridepublicObjectgetSystemService(String name){returnSystemServiceRegistry.getSystemService(this, name);}@OverridepublicStringgetSystemServiceName(Class<?> serviceClass){returnSystemServiceRegistry.getSystemServiceName(serviceClass);}