精华内容
下载资源
问答
  • Android反射获取aar包中application,并赋值当前Context 前几天接到一个需求,在自主开发的SDK中接入其他的项目,而其他的项目是打成了aar包,需要把Context传入到aar中,让该aar包中调用该SDK的Context,原本双方...

    前几天接到一个需求,在自主开发的SDK中接入其他的项目,而其他的项目是打成了aar包,需要把Context传入到aar中,让该aar包中调用该SDK的Context,原本双方写一个接口传递就可以了,但是该项目不愿意动任何代码,这个时候就另开一种途径,通过反射获取aar包中的Context值,并赋值当前的Context.

    不说了上代码:

    public class ContextUtil {
    
    /**
         * 通过反射把context赋值给支付的MyApplication
         * 首先进行attach,然后再调用onCreate方法初始化
         * @return Context
         */
    
    public static void setContext(Context context) {
            Context appContext = new ContextThemeWrapper(context,android.R.style.Theme);
            //aar包中的application
    		MyApplication myApplication = new MyApplication();
            try {
                Method sAttachBaseContextMethod = Application.class.getDeclaredMethod("attach",Context.class);
    			sAttachBaseContextMethod.setAccessible(true);
    			sAttachBaseContextMethod.invoke(myApplication,appContext); //先attach
    			myApplication.onCreate();//在调用onCreate
    		}catch (Throwable e){
            	Log.e("errorMessage",e.toString());
    	}
       }
     }
    

    通过上面的注释就可以看懂了,最后就是在初始化的地方,把Context传进去就可以了!!!

    展开全文
  • 无需上下文context获取当前Application Android使用反射获取当前Application 没有Activity,没有Application,快速获取当前应用的Application。当个工具类用,再也不烦恼,目前在Android Q上并且是targetSdk为29也能...

    无需上下文context获取当前Application

    Android使用反射获取当前Application
    没有Activity,没有Application,快速获取当前应用的Application。当个工具类用,再也不烦恼,目前在Android Q上并且是targetSdk为29也能获取到,已验证可用。

     /**
         * 获取当前应用的Application
         * 先使用ActivityThread里获取Application的方法,如果没有获取到,
         * 再使用AppGlobals里面的获取Application的方法
         * @return
         */
        public static Application getCurApplication(){
            Application application = null;
            try{
                Class atClass = Class.forName("android.app.ActivityThread");
                Method currentApplicationMethod = atClass.getDeclaredMethod("currentApplication");
                currentApplicationMethod.setAccessible(true);
                application = (Application) currentApplicationMethod.invoke(null);
                Log.d("fw_create","curApp class1:"+application);
            }catch (Exception e){
                Log.d("fw_create","e:"+e.toString());
            }
    
            if(application != null)
                return application;
    
            try{
                Class atClass = Class.forName("android.app.AppGlobals");
                Method currentApplicationMethod = atClass.getDeclaredMethod("getInitialApplication");
                currentApplicationMethod.setAccessible(true);
                application = (Application) currentApplicationMethod.invoke(null);
                Log.d("fw_create","curApp class2:"+application);
            }catch (Exception e){
                Log.d("fw_create","e:"+e.toString());
            }
    
            return application;
        }
    

    无需上下文context获取当前Resources

    没有Activity,没有Application,快速获取当前应用的Resources 。当个工具类用,再也不烦恼,目前在Android Q上并且是targetSdk为29也能获取到,已验证可用。

     public static Resources getResources(){
            Resources resources = Resources.getSystem();
            return resources;
        }
    
    展开全文
  • package sc.tools; import java.lang.reflect.Field; import java.lang.reflect.Method; import android.app.Application;...import android.content.Context; import android.content.pm.ApplicationInfo; import...
    
    package sc.tools;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    import android.app.Application;
    import android.content.Context;
    import android.content.pm.ApplicationInfo;
    import android.content.pm.PackageManager;
    //import android.widget.Toast;
    
    
    /** 通过反射获取当前应用的Application、Context */
    public class AppliactionTool
    {
    	private static Application application;
    	private static Context context;
    	
    	/** 反射获取Application */
    	public static Application getApplication()
    	{
    		if (application != null) { return application; }
    		try
    		{
    			Class localClass1 = Class.forName("com.android.internal.os.RuntimeInit");
    			Field localField1 = localClass1.getDeclaredField("mApplicationObject");
    			localField1.setAccessible(true);
    			Object localObject1 = localField1.get(localClass1);
    			
    			Class localClass2 = Class.forName("android.app.ActivityThread$ApplicationThread");
    			Field localField2 = localClass2.getDeclaredField("this$0");
    			localField2.setAccessible(true);
    			Object localObject2 = localField2.get(localObject1);
    			
    			Class localClass3 = Class.forName("android.app.ActivityThread");
    			Method localMethod = localClass3.getMethod("getApplication", new Class[0]);
    			localMethod.setAccessible(true);
    			Application localApplication = (Application) localMethod.invoke(localObject2, new Object[0]);
    			if (localApplication != null) application = localApplication;
    		}
    		catch (Exception localException)
    		{
    			localException.printStackTrace();
    		}
    		
    		//		Toast.makeText(application, "AppliactionTool -> getApplication()", Toast.LENGTH_SHORT).show();
    		return application;
    	}
    	
    	/** 获取Context */
    	public static Context getContext()
    	{
    		if (context != null) return context;
    		return getApplication();
    	}
    	
    	/** 获取targetSdkVersion */
    	public static int getTargetSdkVersion()
    	{
    		PackageManager localPackageManager = getContext().getPackageManager();
    		ApplicationInfo localApplicationInfo;
    		try
    		{
    			localApplicationInfo = localPackageManager.getApplicationInfo(getContext().getPackageName(), 0);
    		}
    		catch (PackageManager.NameNotFoundException localNameNotFoundException)
    		{
    			localNameNotFoundException.printStackTrace();
    			return 0;
    		}
    		if (localApplicationInfo != null) { return localApplicationInfo.targetSdkVersion; }
    		return 0;
    	}
    }
    

     

    展开全文
  • android获取当前活动(context

    千次阅读 2017-01-09 16:44:49
    Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show(); 用 getApplicationContext()
    1.             Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show();  



    getApplicationContext()

    展开全文
  • hadoop获取context当前输出路径,

    千次阅读 2013-06-07 21:19:47
    我想看一下路径,然后判断文件是否存在?你妹的,真麻烦? 找个半天,用import org.apache.hadoop.io.MapFile;...String name =context.getConfiguration().get("mapred.output.dir"); 顺便判断个文件存在:
  • SYS_CONTEXT函数,获取当前连接信息

    千次阅读 2016-03-07 23:00:36
    SYS_CONTEXT('USERENV','ACTION') ACTION, SYS_CONTEXT('USERENV','AUDITED_CURSORID') AUDITED_CURSORID, SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') AUTHENTICATED_IDENTITY, SYS_CONTEXT('USER
  • 对于这些问题Yii2可以在视图层View中使用$this->context这个对象去获得。 示例:譬如现在(视图层登陆界面)login.php方法下面: <?php //得到Yii2的当前的控制器Controller echo $this->context->id; //输出结果:...
  • android 获取 Application context

    千次阅读 2016-02-21 13:57:13
    新建一个类继承自 Application  public class MyApplication extends Application { ... private static Context appContext=null; public static Context getAppContext(){ return appContext; }
  • Android - 找到当前类的Context

    千次阅读 2014-11-15 07:39:41
    找到当前类的Context本文地址: http://blog.csdn.net/caroline_wendy如果是在onContinueCreate或onCreate中, 直接使用this, 就代表当前类的context;如果在类的其他方法内, 则需要使用this.context, 就可以代替.如:...
  • 获取Application的Context

    千次阅读 2016-07-06 16:20:47
    获取Application的Context
  • android中获取context对象

    千次阅读 2018-01-08 14:28:38
    在Android中获取context对象 方法一: 先在activity中获取context对象: Context context = MainActivity.this; 哪个类要用到此context对象,就可以整个形参 public void initFace(Context context){} 这样...
  • Android获取Context的方法

    千次阅读 2016-07-30 16:37:01
    开发时遇到这样一个问题,当前app需要读取其他app中的资源,如shared_prep中保存的共享数据,这时候需要获取其他app的ContextContext context = this.createPackageContext("包名", Context.CONTEXT_IGNORE_...
  • Flutter获取全局context

    千次阅读 2020-07-09 15:28:37
    } } 获取context: BuildContext context = navigatorKey.currentState.overlay.context 注意:通过这种方式获取context在某些情况下需要放在 Future.delayed(Duration(seconds: 0)).then((onValue) { });...
  • 使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),...对于这些问题Yii2可以在视图层View中使用$this->context这个对象去获得。下面通过示例代码给大家讲解下
  • 通过navigatorKey的方式  void main() { runApp(MyApp());...注意:通过这种方式获取context在某些情况下需要放在 Future.delayed(Duration(seconds: 0)).then((onValue) { }); 中使用。
  • Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化,而我们可以定制一个自己的Application类,以便管理程序内的一些全局状态信息,比如说全局Context。 定制自己的...
  • Android-全局获取Context

    2019-02-17 21:50:44
    自定义类继承自Application: ...//全局获取Context技巧 public class MyApplication extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); ...
  • 1 public static Activity getActivityByContext(Context context){ 2 while(context instanceof ContextWrapper){ 3 if(context instanceof Activity){ 4 return (A...
  • Android判断context是否属于当前activity

    千次阅读 2019-02-21 10:40:40
    context不能直接和activity判断是否相等 代码如下: Activity activity = (Activity)context; if(context instanceof MainActivity){ //TODO }
  • 1.在任意位置获取应用程序Context  Android程序中访问资源时需要提供Context,一般来说只有在各种component中(Activity, Provider等等)才能方便的使用api来获取Context;喜欢编程的人都知道,编写工具类可以有效的...
  • Context是什么

    万次阅读 多人点赞 2018-03-12 22:40:17
    1.Context是什么 相信很多人多会问Context到底是什么? 我们可以理解为“上下文”:它贯穿整个应用; 也可以理解成“运行环境”:它提供了一个应用运行所需要的信息,资源,系统服务等; 同样可以理解成“场景”...
  • 1、获取Context AndroidJavaObject context = new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject> ("currentActivity"); //获得Context 不需要引用jar包,也可调用...
  • spring security reactive获取security context

    千次阅读 2018-03-18 06:28:55
    本文主要研究下reactive模式下的spring security context获取。 ReactiveSecurityContextHolder springboot2支持了webflux的异步模式,那么传统的基于threadlocal的SecurityContextHolder就不管用了。spring ...
  • 在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationContext(),来获取context内容; 转载于:...
  • 在AndroidJUnit4直接通过getContext()获取到的context并不是当前APP的context,而是instrumentation的context,应使用以下方法来获取context。 InstrumentationRegistry.getInstrumentation().targetContext 或者...
  • 在Service中获得Context

    万次阅读 2017-02-18 22:35:20
    0x00Service本身就是Context的实现,所以只需要调用this0x010x02Context是一个抽象基类,我们通过它访问当前包的资源(getResources、getAssets)和启动其他组件(Activity、Service、Broadcast)以及得到各种服务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 419,901
精华内容 167,960
关键字:

获取当前context