通过反射获取Application对象
public static Application getApplicationInner() {
try {
Class<?> activityThread = Class.forName("android.app.ActivityThread");
Method currentApplication = activityThread.getDeclaredMethod("currentApplication");
Method currentActivityThread = activityThread.getDeclaredMethod("currentActivityThread");
Object current = currentActivityThread.invoke((Object)null);
Object app = currentApplication.invoke(current);
return (Application)app;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
备注:可能由于Android系统版本的不一样出现反射失败;