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。 –