「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