android 以编码的方式列出来当前app所有的窗口
Android的 - 以编程方式找到所有应用程序中所有的的窗口?
是否有可能以编程方式枚举所有当前app的窗口
对话框,例如都将在新窗口中打开,独立于主activity窗口。我可以通过Dialog.getWindow(找到它们),但我不知道我怎么会用一个内置的组件做到这一点,如在活动菜单弹出。
有没有什么办法,从应用程序中,上下文,或者窗口管理器,还是其他什么东西,枚举与我的应用程序关联的所有窗口?
我可以在adb dumpsys窗口看到我所有的应用程序的窗口,但我正在寻找一种方法来在我的应用程序做到这一点,无需root。
Android的Android的视图
最佳答案:
我找到一个方法通过反射 WindowManagerGlobal.,至少到目前为止他在android-18版本中工作的很好.....
[java]view plaincopy
privatevoidlogRootViews(){
try{
ClasswmgClass=Class.forName("android.view.WindowManagerGlobal");
ObjectwmgInstnace=wmgClass.getMethod("getInstance").invoke(null,(Object[])null);
MethodgetViewRootNames=wmgClass.getMethod("getViewRootNames");
MethodgetRootView=wmgClass.getMethod("getRootView",String.class);
String[]rootViewNames=(String[])getViewRootNames.invoke(wmgInstnace,(Object[])null);
for(StringviewName:rootViewNames){
ViewrootView=(View)getRootView.invoke(wmgInstnace,viewName);
Log.i(TAG,"Foundrootview:"+viewName+":"+rootView);
}
}catch(Exceptione){
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}
本文地址:http://www.itmmd.com/201412/297.html
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。