问题标签 [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 投票
2 回答
1202 浏览

android - 如何检测 Facebook Messenger 何时打开?

Facebook 使用服务来推动 android 上的 Messenger 泡泡 - 如下所示: http ://www.piwai.info/chatheads-basics/

我想检测气泡何时打开/关闭

我已经开始研究以下选项 -

  • 听(通过拉动)正在运行的服务 - 我发现当显示信使时有 4 个服务,当它被杀死时有 2 个。我想知道信使泡泡何时关闭,所以它对我没有帮助。

  • 收听通知——我知道它何时被完全删除(当用户将它拖到“X”区域时)——也没有帮助。

我正在寻找一种技巧,以了解 Facebook 泡沫何时打开以及何时关闭。

0 投票
1 回答
1278 浏览

android - 全屏显示 TYPE_SYSTEM_ALERT [无状态和导航栏]

我在我的应用程序中使用 TYPE_SYSTEM_ALERT 活动(它使用 SYSTEM_ALERT_WINDOW 作为权限)。我的 WindowManager 代码片段是

该活动根据我的需要运行良好,除了状态栏也是可见的,我也想隐藏它。我尝试了不同的标志,但没有运气。

此外,我尝试了 TYPE_SYSTEM_OVERLAY,但后来我无法与按钮、editTexts 和其他小部件进行交互。而且,状态栏在这个 TYPE_SYSTEM_OVERLAY 中也是可见的。

Android专家在这里有什么建议吗?

0 投票
2 回答
998 浏览

android - 添加警报窗口后未显示 DialogFragment

我有一个函数,当触发时,成功地显示一个带有以下代码的 DialogFragment

对话片段

问题是,在我使用以下代码添加系统警报窗口后,DialogFragment 不再显示,但是如果我传递给另一个应用程序,当我的应用程序最小化时,我可以在 DialogFragment 减小它的大小时看到它

系统警报窗口

所以......为什么我在顶部看不到我的对话框(据我所知,对话框正在显示)为什么它只在显示系统警报窗口时发生

我已经尝试过使用系统警报窗口的其他标志,但是我尝试过的标志也有同样的问题

0 投票
0 回答
8225 浏览

android - 有一种方法可以检测某些应用程序被我的应用程序遮挡,而不是通过触摸

我知道有一种方法可以检测某些应用程序是否覆盖了我的应用程序,即针对劫持攻击的触摸过滤(标记 android:filterTouchesWhenObscured)。如果您想创建一些策略来处理触摸,您可以覆盖该方法

public boolean onFilterTouchEventForSecurity(MotionEvent event)

的视图。例如,如果您的应用程序被其他窗口遮挡,您希望显示一些对话框。但是,如果用户触摸视图,您可以执行所有这些解决方案。我想在用户打开应用程序时显示一些对话框。可能吗?我也尝试模拟触摸事件,但我不知道在哪里可以获得MotionEvent.FLAG_WINDOW_IS_OBSCURED,然后设置为运动事件标志。

第二个问题:有没有办法说是什么应用程序遮住了我的应用程序?例如,我知道有很多应用程序,比如暮光之城,会在你的显示器上添加一些过滤器。他们使用特定的权限(android.permission.SYSTEM_ALERT_WINDOW)来做到这一点。

谢谢。

0 投票
1 回答
4283 浏览

android - Android 警报对话框:TYPE_SYSTEM_ALERT

我已经尝试了所有我知道和能找到的东西,但我仍然无法让我的警报对话框显示为 TYPE_SYSTEM_ALERT。当我打开它时它会显示在我的应用程序上,但如果我的应用程序不在前面,它不会弹出。

我有:

然后我有清单:

我错过了什么??

此警报之前的功能流程如下:

  1. 广播接收器侦听传入的短信。
  2. 收到后,它使用“RunOnUIThread”将消息传递给 MainActivity 中的一个函数。
  3. 解析消息并显示警报对话框。现在为什么 TYPE_SYSTEM_ALERT 不起作用?我可以从 logcat 中看到该消息已解析成功,但仍然警报对话框未显示为系统警报。任何人?
0 投票
0 回答
144 浏览

android - Android M SYSTEM_ALERT_WINDOW 权限

如此处所述:https ://code.google.com/p/android-developer-preview/issues/detail? id=2971 将无法请求 SYSTEM_ALERT_WINDOW 权限。它指的是系统设置,允许或禁止此类窗口。

有谁知道这个设置在哪里,我找不到。而且,设置的默认值是多少?

0 投票
0 回答
680 浏览

android - 升级到 targetSdk 23 或 Android 6 后,哪些权限不会保留?

背景

我记得有人告诉(在 Google 的一个视频中),如果应用程序的先前版本更新为在新版本上具有 targetSdk 23,那么之前授予的所有权限 - 现在将保持授予状态。

因此,例如,如果您安装了一个具有 targetSdk 22 的应用程序,这需要从联系人读取的权限,那么即使在应用程序升级到具有 targetSdk 23 的应用程序之后,它也会保持这种状态。

原因很简单:用户在安装时已经授予权限。

问题

根据我的发现,这条规则有一个例外:

如果您的应用程序具有 SYSTEM_ALERT_WINDOW 权限,而现在您升级到 targetSdk 23,它会被撤销(重置),您需要向用户请求它。

文档中的任何地方都没有提到这种行为:

而且在我看过的任何视频中也没有。

关于 SYSTEM_ALERT_WINDOW 权限唯一提到的是,您需要以不同的方式处理它们,使用ACTION_MANAGE_OVERLAY_PERMISSION请求权限,并使用Settings.canDrawOverlays(...)检查是否授予权限

我试过的

我试图就这个问题联系谷歌,他们说这是故意的:

我与开发团队进行了交谈,您看到的行为正在按预期工作。这记录在这里:http: //developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW

在 Android M 中提高了 SYSTEM_ALERT_WINDOW 的保护级别。

问题

  1. 是否有其他权限具有此行为?

  2. 如果应用程序有 targetSdk 22/23,并且操作系统升级到 Android 6,会发生什么?SYSTEM_ALERT_WINDOW(或任何其他权限)会被撤销吗?

  3. 很确定其他东西会被授予,但我还是想问一下:其他特殊权限之类的功能呢,例如:SAF、管理员、使用权限、可访问性访问、通知访问……?


编辑:关于#2,这是来自谷歌的答案(链接在这里):

在操作系统升级时,应用程序应保留 SYSTEM_ALERT_WINDOW。Pre-API 23 应用程序默认具有权限,而 API 23 应用程序默认关闭。但是,有一个已知的错误,即对于 API 23 应用程序,它们在升级时会丢失 SYSTEM_ALERT_WINDOW。对开发人员的建议是始终在启动时检查 SYSTEM_ALERT_WINDOW 的状态,如果未授予,则将用户定向到设置。我们将在未来的版本中修复该问题。

0 投票
2 回答
1607 浏览

permissions - 请求 Android Wear 的权限

我编写了一个应用程序,它利用了 android wear 上的 system_alert_window。由于棉花糖,此权限默认被撤销。我已通过手机设置在手机端应用程序上启用此权限。但是权限仍然在 android wear 端应用程序上被拒绝,并导致 android wear 端应用程序崩溃并出现权限被拒绝异常。有没有办法在 Android Wear 端启用此权限?

0 投票
1 回答
2469 浏览

android - 如何使系统叠加视图的背景MULTIPLY(混合模式)?

首先我的问题的一点背景:我正在尝试创建一个系统覆盖类型的视图(即在其他应用程序上绘制),它(现在)只是一个全屏纯色。我通过启动/停止服务来打开/关闭它。

这是我的代码到目前为止的样子(在服务内部):

这样,当我启动此服务时,我可以在其余的常规 android 使用中获得纯色。现在,我的具体问题是: 有什么方法可以让这种颜色在它背后的常规 android 使用上乘以 MULTIPLY(想想 Photoshop 混合模式)?

从我的代码中可以看出,我也尝试使用 PorterDuff 过滤器模式(它们的几种不同组合)来实现它,但徒劳无功。

这里有几个屏幕截图可以更好地解释这一点:

原始视图<-- 没有我的服务的原始屏幕。

当前结果<-- 与我的当前代码服务打开相同的屏幕。

预期结果<-- 同一屏幕上的预期结果。注意较深的颜色是如何叠加到下面的。

正如你所看到的,我当前的代码只抛出了一层纯色。我感谢所有建议。提前致谢!

0 投票
5 回答
93152 浏览

android - SYSTEM_ALERT_WINDOW - 如何在 Android 6.0 和 targetSdkVersion 23 上自动获得此权限

Facebook、Evernote、Pocket - 所有应用程序都自动在 Android 6.0 上获得此权限,即使它们的目标是 23 ( targetSdkVersion=23)。

有很多关于新的 Marshmallow 权限模型的文档。其中一个SYSTEM_ALERT_WINDOW被“提升”为“超过危险”权限等级,因此需要特殊的用户干预才能授予应用程序这些权限。如果应用程序有targetSdkVersion22 或更低,应用程序会自动获得此权限(如果在清单中请求)。

但是,我注意到一些应用程序获得了此权限,而无需将用户发送到设置Draw over other apps权限的特殊页面。我看到了 Facebook、Evernote、Pocket——也许还有更多。

任何人都知道如何在没有用户经过的情况下授予应用程序此权限Settings -> Apps -> Draw over other apps

谢谢