问题标签 [android-overlay]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
822 浏览

android - 如果从 Play 商店下载应用程序,是否默认启用覆盖屏幕选项

从 Android 6 开始,我们必须在应用程序中处理覆盖屏幕,我在某处读到,如果应用程序是从 Play 商店下载的,则默认情况下覆盖屏幕选项是启用的。我只是想确认这是真的吗?或者为此,我们必须进行额外的编码。目前我正在使用以下代码为 Android 6+ 设备调用覆盖屏幕启用:

目前,我的 if 条件始终为真。如果假设我在 Play Store 上发布应用程序,那么在用户手动禁用覆盖屏幕之前它不会进入状态?

我们可以在不从 Playstore 下载应用程序的情况下检查此行为吗?

0 投票
1 回答
895 浏览

android - 如何在 Oreo 中控制 WindowManager 覆盖优先级?

我的应用程序 OV1 有一个叠加层,它基本上是一个用户可以在屏幕上四处移动的按钮。按下此叠加层时,它会生成第二个叠加层 OV2,其中包含位于 OV1 当前位置周围的多个子按钮。OV2 还通过使用标志 WindowManager.LayoutParams.FLAG_DIM_BEHIND 使屏幕的其余部分变暗。

我在最初实现上述操作时遇到的一个问题是,调光效果被投射到所有不是 OV2 的东西上,包括 OV1,变暗并使其无法点击,这会阻止 OV2 被关闭,因为 OV1 是切换按钮。我找到的解决方案是为每个叠加层设置不同的布局参数:

OV1 得到:

而OV2得到:

由于 OV1 的优先级较高,所以它始终位于 OV2 之上,因此不受 FLAG_DIM_BEHIND 的影响,用户可以与 OV1 进行交互以关闭 OV2 子按钮菜单。

这一直运行良好,直到我开始更新应用程序以针对 Android 的 API 27 (Oreo)。作为所需更改的一部分,我不得不将两个叠加层的参数类型都更改为 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,因此我失去了赋予 OV1 更高优先级以确保它保持在 OV2 之上的能力。是否有替代方法来复制此行为,确保 OV1 保持在最顶层,或者在生成 OV2 时将其强制到前台?

0 投票
1 回答
3057 浏览

android - 全屏 TYPE_ACCESSIBILITY_OVERLAY

我不熟悉 Android 上的可访问性内容。TYPE_ACCESSIBILITY_OVERLAY在浏览课程和文档时,我在课堂上遇到了WindowManager

文档说(只有相关文本)

例如,如果有一个可触摸的全屏辅助功能叠加层,则它下方的窗口将可以被辅助功能服务自省,即使它们被可触摸窗口覆盖。

所以我开始实现这一点,全屏可访问性覆盖并尝试内省它下面的窗口

在被调用时扩展AccessibilityService并添加了我的全屏覆盖onServiceConnected(添加覆盖的灵感来自这里

现在,问题是,我如何内省或找到此覆盖下方的窗口?即使在onAccessibilityEvent回调中,我也只得到了这个覆盖窗口。getWindows()总是有一个size of 1. 它不是驳斥了上面的断言TYPE_ACCESSIBILITY_OVERLAY吗?

相关信息:为了接收覆盖上的触摸事件,我在服务设置中禁用了 touchExplorationMode

0 投票
1 回答
186 浏览

android - 如何忽略触摸事件,让安卓系统处理?

我有一项服务可以在系统上绘制覆盖视图。它是一个实用工具栏。当用户单击它时,它会显示出来。我的问题是我不希望它在用户单击时显示,而是在用户滑动时显示。我有一个逻辑,可以使用 onTouchListener 将点击与拖动/滑动区分开来。

问题是:当用户单击它时,我想忽略触摸并让 android 系统消耗它。当用户滑动时,我想消费该事件并且不要让 android 消费它,因为我会让我的实用工具栏出现。

如何做到这一点?我在 API 25(android N)上。

0 投票
1 回答
479 浏览

android - 如何在Android O中隐藏来电对话框?

在 Android 7 之前,我的来电储物柜应用程序运行良好,我隐藏了来电对话框,但在 Android 8 来电对话框中始终显示在上面的 Activity 中。

这里有一些截图

安卓 7

Android 7.0 上的应用程序

安卓 8

在此处输入图像描述

0 投票
2 回答
1285 浏览

android - 当我使用 TYPE_APPLICATION_OVERLAY 时,对话框不可见

我在其他应用程序之上显示一个对话框。它一直有效,直到我使用WindowManager.LayoutParams.TYPE_SYSTEM_ALERT

当我将目标版本更改为 26 时,我不应该使用 TYPE_SYSTEM_ALERT,所以我使用了WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY

之后我的对话框不可见。我还需要做什么?任何建议。

参考链接: https ://developer.android.com/about/versions/oreo/android-8.0-changes#cwt

代码:

0 投票
0 回答
771 浏览

android - 如何在约束布局中覆盖视图?

我在约束布局中有图像视图,并希望 CardView 覆盖它。xml:

在现代设备上一切都很好 但是使用 api 较低的 19 ImageView 覆盖 CardViews。我该如何解决?

0 投票
2 回答
845 浏览

android - 如何务实地为应用程序创建一个叠加层作为Android中的水印?

我想制作一个应用程序,其中将显示一个水印,该水印将显示在每个活动中,包括片段(如果存在)。我想以编程方式做到这一点,没有任何 XML 来减少冗余和样板代码。它的主要目的是,如果我与其他人共享一个 APK,那么他就不能窃取我的 APK,因为它到处都包含一个奇怪的水印。

0 投票
0 回答
43 浏览

android - 创建将覆盖所有其他应用程序的服务屏幕,但问题是未显示软键盘

这是我的代码

我的最终目标是创建一个可以降低屏幕整体亮度的叠加层。
一切正常,我可以点击/访问其他应用程序中的所有图标。

问题是,软键盘没有显示。

我使用的设备是华硕 Zenfone 6 (Android 5.0)

0 投票
0 回答
375 浏览

android - SYSTEM_ALERT_WINDOW 的替代方案,用于显示跨应用活动的覆盖

要求是在应用程序中添加聊天功能,一旦启动,该功能将在最小化视图中的所有活动中可用 - 您可以在一个活动中开始聊天并在更改活动时保持活动状态。

解决方案 -> 使用此权限,并创建一个服务,以覆盖所有屏幕。

我们的要求有问题-> 

  1. 我们不需要一个对所有应用程序都可见的视图——一个只对我们的应用程序可见的视图。
  2. 使用上述解决方案需要用户对 API 级别 >=M 的运行时权限。
  3. 用户可以从设置中禁用此权限,并且覆盖将不起作用。</li>

有什么方法可以在不使用此权限和服务的情况下实现这一目标。