「Android」获取当前界面Activity对象


转载文章,出处

public static Activity getGlobleActivity() throws ClassNotFoundException, IllegalArgumentException, SecurityException, IllegalAccessException, 
                              InvocationTargetException, NoSuchMethodException, NoSuchFieldException
{
  Class activityThreadClass = Class.forName("android.app.ActivityThread");
  Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
  Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
  activitiesField.setAccessible(true);
  Map activities = (Map) activitiesField.get(activityThread);
  for(Object activityRecord:activities.values())
  {
    Class activityRecordClass = activityRecord.getClass();
    Field pausedField = activityRecordClass.getDeclaredField("paused");
    pausedField.setAccessible(true);
    if(!pausedField.getBoolean(activityRecord))
    {
      Field activityField = activityRecordClass.getDeclaredField("activity");
      activityField.setAccessible(true);
      Activity activity = (Activity) activityField.get(activityRecord);
      return activity;
    }
  }
  return null;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM