回覆列表
-
1 # 使用者4942622965310
-
2 # lanfengz1
android開發中獲取當前的Activity有多種情況;
在Activity中,this就是當前的Activity,例如this.startActivity。
在Fragment中可以透過 getActivity()來得到當前裝載這個Fragment的Activity。
透過Activity堆疊來獲取當前顯示的這個Activity
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
ActivityManager(int, int)是使用的getRecentTasks這個API。後臺掛一個服務,不斷檢測Activity堆疊。棧頂的Activity所屬的包名即可得知當前執行的程式。由於該 API 有安全隱患,從Android 5.0開始已被廢棄。雖然仍有一些奇技淫巧(process - How to get recent tasks on Android "L"?)可以實現,但測試過不大穩定。如果需要穩定可靠的監測當前執行的程式,請老老實實的向用戶申請Accessibility Service許可權。