Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 以編碼的方式列出來當前app所有的窗口

android 以編碼的方式列出來當前app所有的窗口

編輯:關於Android編程

Android的 - 以編程方式找到所有應用程序中所有的的窗口?

是否有可能以編程方式枚舉所有當前app的窗口

對話框,例如都將在新窗口中打開,獨立於主activity窗口。我可以通過Dialog.getWindow(找到它們),但我不知道我怎麼會用一個內置的組件做到這一點,如在活動菜單彈出。

有沒有什麼辦法,從應用程序中,上下文,或者窗口管理器,還是其他什麼東西,枚舉與我的應用程序關聯的所有窗口?

我可以在adb dumpsys窗口看到我所有的應用程序的窗口,但我正在尋找一種方法來在我的應用程序做到這一點,無需root。


Android的Android的視圖

最佳答案:

我找到一個方法通過反射 WindowManagerGlobal.,至少到目前為止他在android-18版本中工作的很好.....

 

private void logRootViews() {
    try {
        Class wmgClass = Class.forName(android.view.WindowManagerGlobal);
        Object wmgInstnace = wmgClass.getMethod(getInstance).invoke(null, (Object[])null);
 
        Method getViewRootNames = wmgClass.getMethod(getViewRootNames);
        Method getRootView = wmgClass.getMethod(getRootView, String.class);
        String[] rootViewNames = (String[])getViewRootNames.invoke(wmgInstnace, (Object[])null);
 
        for(String viewName : rootViewNames) {
            View rootView = (View)getRootView.invoke(wmgInstnace, viewName);
            Log.i(TAG, Found root view:  + viewName + :  + rootView);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

輸出:
Found root view:com.example.paintsample/com.example.paintsample.PaintSample/android.view.ViewRootImpl@41deeff0: com.android.internal.policy.impl.PhoneWindow$DecorView{41dcc278 V.E..... R....... 0,0-768,1184}
Found root view: PopupWindow:42887380/android.view.ViewRootImpl@42891820: android.widget.PopupWindow$PopupViewContainer{42891450 V.E..... ........ 0,0-424,618}

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved