public static Context getContext() {
Application application = null;
try {
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Object activityThread;
activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
Field activitiesField = activityThreadClass.getDeclaredField("mInitialApplication");
activitiesField.setAccessible(true);
application = (Application)activitiesField.get(activityThread);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return application;
}
Application application = null;
try {
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Object activityThread;
activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
Field activitiesField = activityThreadClass.getDeclaredField("mInitialApplication");
activitiesField.setAccessible(true);
application = (Application)activitiesField.get(activityThread);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return application;
}
该博客介绍了一种通过反射技术获取Android全局Application Context的方法,包括查找ActivityThread类,调用currentActivityThread方法,访问mInitialApplication字段并设置为可访问,最后从中获取Application实例。
512

被折叠的 条评论
为什么被折叠?



