android 以编码的方式列出来当前app所有的窗口
2014-12-27 19:26
387 查看
Android的 - 以编程方式找到所有应用程序中所有的的窗口? 是否有可能以编程方式枚举所有当前app的窗口 对话框,例如都将在新窗口中打开,独立于主activity窗口。我可以通过Dialog.getWindow(找到它们),但我不知道我怎么会用一个内置的组件做到这一点,如在活动菜单弹出。 有没有什么办法,从应用程序中,上下文,或者窗口管理器,还是其他什么东西,枚举与我的应用程序关联的所有窗口? 我可以在adb dumpsys窗口看到我所有的应用程序的窗口,但我正在寻找一种方法来在我的应用程序做到这一点,无需root。
Android的Android的视图最佳答案:
我找到一个方法通过反射 WindowManagerGlobal.,至少到目前为止他在android-18版本中工作的很好.....
[java] view plaincopy
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}
本文地址:http://www.itmmd.com/201412/297.html
Android的Android的视图最佳答案:
我找到一个方法通过反射 WindowManagerGlobal.,至少到目前为止他在android-18版本中工作的很好.....
[java] view plaincopy
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}
本文地址:http://www.itmmd.com/201412/297.html
相关文章推荐
- android 以编码的方式列出来当前app所有的窗口
- android视图学习---添加窗口小部件以及AppWidget的创建详解和快捷方式
- android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark
- AutoIt: WinGetClassList可以把当前窗口所有的handle全部列出来
- 实现一个用于显示当前时间的Google Android 窗口小部件(AppWidget)
- Android开发指南-窗口小部件(App Widgets)
- Android获取所有安装APP信息的详细代码
- Android开发指南-窗口小部件(App Widgets)
- 现一个用于显示当前时间的Google Android 窗口小部件(AppWidget)
- 当前表单的所有信息以对话框的形式表现出来,请问怎么解决?
- Android开发指南-窗口小部件(App Widgets)
- 关闭当前窗口 弹出询问 和不弹询问窗口 两种方式
- Android开发指南-窗口小部件(App Widgets)
- 用编程的方式将当前服务器上SQL SERVER中正执行的所有T-SQL语句记录下来
- 实现一个用于显示当前时间的Google Android 窗口小部件(AppWidge
- 枚举当前打开的所有窗口
- 文档的当前编码不能保存文档内所有字符,需要改为UTF-8或者其他支持本文当中的特殊字符的编码