0
我正在开发android库,它应该能够记录所有触摸事件。如何从android.app.Aplication获取应用程序窗口
我能够通过重写窗口回调做到这一点:
//set Window.Callback for getting touch event
final Window window = context.getWindow();
final Window.Callback localCallback = window.getCallback();
window.setCallback(new MyWindowCallback(localCallback));
我开发库,所以我需要一些方法来获取应用程序的情况下能够通过context.getWindow得到窗口()。我找到了一个解决方案提示:
private static Application getApplicationContext() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
Context context;
final Class<?> activityThreadClass =
Class.forName("android.app.ActivityThread");
final Method method = activityThreadClass.getMethod("currentApplication");
context = (Application) method.invoke(null, (Object[]) null);
Log.d(tag_, "Context is " + context);
application = (Application)context;
return application;}
但这返回android.app.Application并不知我需要得到活动从这个返回的实例,因为我只能在活动实例调用getWindow()。
所以问题是,如何从返回的应用程序实例获取Activity实例?
感谢
这不是直接可能的。毕竟,在任何时间点都可能有与应用程序相关的零个,一个或多个窗口。即使您将其限制在Android 7.0以上的活动窗口中,也可以使用多窗口一次显示2+活动。 – CommonsWare
好的,但让我说,我只限于一个活动的窗口,并假设只有一个活动visibe。 –