Guest User

How to get a Context from everywhere

a guest
Oct 25th, 2013
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.08 KB | None | 0 0
  1. protected static Context getContext() {
  2.         /* WATCH OUT, IT USES A PRIVATE VARIABLE*/
  3.         Context context = null;
  4.         try {
  5.             Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
  6.             Class[] params = new Class[0];
  7.             Method currentActivityThread = activityThreadClass.
  8.                             getDeclaredMethod("currentActivityThread", params);
  9.             Boolean accessible = currentActivityThread.isAccessible();
  10.             currentActivityThread.setAccessible(true);
  11.             Object obj = currentActivityThread.invoke(activityThreadClass);
  12.             if (obj == null) {
  13.                 Log.d("ERROR", "The current activity thread is null!");
  14.                 return null;
  15.             }
  16.             currentActivityThread.setAccessible(accessible);
  17.             Method getSystemContext = activityThreadClass.
  18.                             getDeclaredMethod("getSystemContext", params);
  19.             accessible = getSystemContext.isAccessible();
  20.             getSystemContext.setAccessible(true);
  21.             context = (Context) getSystemContext.invoke(obj);
  22.             getSystemContext.setAccessible(accessible);                    
  23.         } catch (Exception e) {
  24.             Log.d("ERROR", Log.getStackTraceString(e));
  25.         }
  26.        
  27.         return context;
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment