问题标签 [system-alert-window]

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 投票
0 回答
375 浏览

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

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

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

我们的要求有问题-> 

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

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

0 投票
1 回答
214 浏览

java - 当我单击位于顶视图活动中的按钮并且 MainActivity 未处于活动状态时,剪贴板返回 null

当我单击 Android java 中的按钮时,当 MainActivity 在顶视图活动中未处于活动状态时,剪贴板数据返回 null

我阅读了有关 android10 及更高版本的限制,但我的活动不是后台服务。当我单击位于顶视图活动(如 Google 翻译应用程序)中的按钮时,我需要获取剪贴板数据。就我而言,当 MainActivity 不活动时,剪贴板返回 null 。

谷歌翻译 https://developer.android.com/about/versions/10/privacy/changes#clipboard-data

0 投票
1 回答
75 浏览

javascript - 阻止来自 iframe/embed 的弹出窗口

我有很多 iframe,它们来自 spotify,我不断收到弹出窗口询问设备的内容,这将导致一个嵌入/iframe 在另一个停止时暂停。如何让所有 iframe 都不允许弹出窗口?这只是我所拥有的一小部分:

我的网站可以在这里找到:https ://50izac02.github.io/sb/music.html

0 投票
2 回答
327 浏览

android - 应用程序如何检测当前正在使用 SAW 权限?

背景

我已经多次注意到,当我使用使用 SAW(系统警报窗口,AKA“显示在其他应用程序上)权限的应用程序(此处示例)时,我打开 Chrome 网络浏览器并访问一些需要权限的网站(这里的例子,取自这里),它不会让我授予/拒绝权限:

在此处输入图像描述

问题

我找不到他们是如何做到的,以及可以从哪个 Android 版本进行检查。

我发现了什么

可悲的是,尽管我搜索了很多,但我实际上还有更多问题。

例如,为什么网络浏览器无法检测到哪个应用程序显示在顶部,并告诉我们禁用它?

或者,现在 Android 12 可能会到来,似乎有一个阻止 SAW 的新权限(这里):

Android S 中添加的 HIDE_OVERLAY_WINDOWS

public static final String HIDE_OVERLAY_WINDOWS 允许应用防止在其上绘制非系统覆盖窗口

常量值:“android.permission.HIDE_OVERLAY_WINDOWS”

也许对于这种情况,没有多少人问过它,或者由于某种原因,我没有选择正确的东西来寻找答案。

问题

  1. 如何在我显示某些内容时检测某些应用程序是否正在使用 SAW 权限?

  2. 有没有办法检测哪个应用程序这样做?

  3. API 可以为此提供什么,从哪个版本可用?

  4. 我记得有人告诉我,可访问性可用于在顶部绘图。遗憾的是,我找不到有关如何执行此操作的教程以及此类应用程序的示例。这个 API 也能检测到它们吗?或者这不被视为SAW?我在哪里可以找到有关如何操作的教程,以便我可以查看它?

  5. 奖励:您如何在 Android S 上使用隐藏 SAW 的新权限?

0 投票
0 回答
385 浏览

android - 如何在 android 10 的辅助功能菜单上显示窗口覆盖?

我已经完成了一些代码,除了设置应用程序-> 辅助功能菜单或设备管理应用程序菜单外,其他地方都可以正常工作

我需要在设置-> 可访问性和设备管理应用程序菜单中显示覆盖

我有一个应用程序,我在其中看到这种类型的叠加层,您可以在下图看到

设置应用程序中的第一张图片

设置应用程序中的第二张图片

当我打开 ->设备管理应用程序-> 然后我的应用程序覆盖被隐藏但另一个应用程序覆盖仍然可见时,您可以看到上面的第二张图像我不知道为什么?

请大家帮我解决这个问题??

**AndridManifest.xml

MainActivity.kt

activity_main.xml

覆盖视图.xml

0 投票
2 回答
906 浏览

android - AccessibilityService 如何利用其他应用程序?

背景

SAW(系统警报窗口)权限可用于在其他应用程序之上绘制内容。

很久以前有人告诉我无障碍服务也可以做到这一点,但我从来没有找到任何教程、示例、文档甚至是可以做到这一点的应用程序......直到最近:

https://play.google.com/store/apps/details?id=com.github.ericytsang.screenfilter.app.android

事实上,这个应用程序似乎可以在任何地方绘制,而不是 SAW 许可。它甚至在设置应用程序和系统对话框的顶部绘制,而不允许 SAW 权限。

问题

可悲的是,由于可访问性是一种非常独特且很少使用的东西,就像我写的那样,我找不到这样的东西如何在其他应用程序之上绘图。

我发现了什么

我唯一知道的是这个应用程序以某种方式做到了,这就是它要求授予它时显示的内容:

在此处输入图像描述

但这还不够。我知道对于我使用无障碍服务所做的一些旧 POC,它显示相同,并且检查它,我看不出是什么触发了它。可以肯定的是,对于任何类型的可访问性服务,用户都会看到最少的东西,所以这无济于事。

问题

  1. AccessibilityService 如何利用其他应用程序?

  2. 它与 SAW 许可的工作方式相同吗?例如,你能处理它绘制的触摸事件吗?

  3. 使用它有什么限制,如果有的话?

0 投票
0 回答
31 浏览

java - 不同的 android 设备在尝试显示浮动小部件时显示错误

我正在尝试显示一个浮动小部件

但是当我在两台小米红米设备上运行该应用程序时收到此错误消息

所以我在 SO 上搜索并想出了下面的解决方案并且它有效

但现在它在我试过的其他手机上显示这条消息,比如三星和vivo

如果我这样做,效果很好

如果我将WindowManager.LayoutParams.TYPE_PHONE,它设置在三星和vivo上,天知道在哪些手机上,但它不适用于红米手机

如果设置WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,它,它适用于红米手机而不是其他手机。

任何建议请这里的任何东西都是完整的代码

0 投票
0 回答
46 浏览

android - Android 自动授予系统警报窗口

我正在创建一个需要系统警报窗口权限的应用程序,根据此答案,为了通过 Play 商店自动授予此权限,我必须通过电子邮件向谷歌发送电子邮件,让他们查看我的应用程序并授予权限,但是,此答案来自最后年,任何人都可以验证它仍然适用吗?这是否意味着用户不需要打开设置并授予权限,它会被google play自动授予?

0 投票
0 回答
191 浏览

android - 如何在不使用 WindowManger 的情况下将视图放置在其他视图之上?

语境:

我的 android 库需要动态地将视图放置在其他目标视图之上。目前我正在WindowManager为此目的使用。我有viewId目标视图并获取视图的位置坐标。现在我简单地使用windowManager.addView(). 这里面临的问题是WindowManager需要SYSTEM_ALERT_WINDOW我们想要避免的许可。

我也尝试过getWindow().getDecorView().findViewById(android.R.id.content).addView(imageView),这样我就不必使用 WindowManger,但它会导致不同手机的对齐问题。关于我们如何避免使用 WindowManager 并同时实现我们的目的的任何帮助?

替代解决方案:我最近阅读了这个stackoverflow 答案,它说如果从 Playstore 安装,则不会询问权限。所以我在 Playstore 上启动了我的应用程序,但它仍然在运行时请求许可。我也填写了这张表格

编辑:

  1. ViewOverlay按照 Mike 的建议使用。问题是可绘制对象只能添加到关联View扩展的区域。 图片
  2. 使用getWindow().getDecorView().findViewById(android.R.id.content).addView(imageView) 问题是我们为不同的屏幕获得不同的对齐方式。 屏幕 1 屏幕 2
  3. 使用WindowManager. 需要SYSTEM_ALERT_WINDOW我们想要避免的许可。
0 投票
0 回答
62 浏览

android - 如何在 android 应用程序中显示浮动视图?

演示

语境:

  • 想要显示一个可以在我的应用程序中浮动的视图。
  • 用户必须能够将其拖动到屏幕的任何部分。
  • 视图应该跨活动持续存在

到目前为止我已经尝试过:

  • 用于WindowManager在应用程序进入后台时显示和隐藏视图。问题是它使用SYSTEM_ALERT_WINDOW了我想避免的权限。关联