1

我想为应用程序创建一个手势覆盖。我希望 gesutureoverlay 位于所有其他视图之上。到目前为止,我已经使用文本框和按钮完成了此操作。我有以下代码在所有应用程序之上创建覆盖,但我不能在任何其他应用程序或主屏幕中使用任何其他内容。该应用程序无法专注于背景视图。然而,我确实让我的手势覆盖工作。

我如何至少让手机正常工作,但又能看到用户在所有应用程序顶部进行的滑动(创建手势覆盖)?这是我到目前为止所拥有的

@Override
public void onCreate() {
    super.onCreate();
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
          WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | 
          WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
                   WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
            PixelFormat.TRANSLUCENT);
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    GestureOverlayView g = new GestureOverlayView(getBaseContext());
    g.setGestureVisible(true);
    g.setEventsInterceptionEnabled(true);
    wm.addView(g, params);
}
4

1 回答 1

0

首先,谢谢,因为您的代码帮助我让 GestureOverlayView 正常工作。

我也在做类似的事情,据我所知,你不能这样做,至少就像那样。为此,您需要拥有 INJECT_PERSMISSION 并且此权限仅授予系统签名的应用程序,因此如果您没有 ROM 签名,则无法使用 Android API 执行此操作。

当然,还有其他方法可以做到这一点。

您可能会做的是在您的活动中获取事件并将它们从您的活动“重新插入”到您下面的活动中。这是你不能通过android做的事情。

看看这里这里

在这些链接中,您可以找到有关如何将事件注入 Android 系统的更多信息。

于 2013-03-14T17:00:52.243 回答