我创建了一个应用程序,它在后台连续运行,并显示浮动覆盖文本视图(通过使用权限android.permission.SYSTEM_ALERT_WINDOW)。
我在联想Android设备中遇到问题,当其他应用程序尝试请求用户权限时,会出现一个警报对话框,显示“检测到屏幕覆盖”。虽然我在Redmi 3S Prime设备上测试了同一应用程序,但权限对话框中的“允许”按钮是不可单击的,直到我关闭了应用程序中的浮动覆盖文本视图。
那么有什么解决方案来解决这个设备特定的问题吗?可能的解决方案之一可能是在权限对话框对用户可见时禁用浮动文本视图,并在权限对话框关闭时显示浮动覆盖,但问题是我如何从我的应用程序中检测其他前台应用程序的权限对话框打开/关闭状态。
请建议...
只需从设备中清除Es explorer的数据,然后重新启动设备。
如何从我的应用程序中检测权限对话框的打开/关闭状态??
>
公共final static整数PERM_REQUEST_CODE_DRAW_OVERLAYS=1234;
/***绘制叠加的权限/在其他应用程序上,与
“Android。准许SYSTEM\u ALERT\u窗口'
在舱单中
设置ACTION_MANAGE_OVERLAY_PERMISSION
"包:"
将用户直接发送到应用程序的页面。
注意:可选忽略URI将用户发送到应用程序的完整列表。
public void permissionToDrawOverlays() {
if (android.os.Build.VERSION.SDK_INT >= 23) { //Android M Or Over
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, PERM_REQUEST_CODE_DRAW_OVERLAYS);
}
}
}
调用活动,以检查设置中用户操作返回的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PERM_REQUEST_CODE_DRAW_OVERLAYS) {
if (android.os.Build.VERSION.SDK_INT >= 23) { //Android M Or Over
if (!Settings.canDrawOverlays(this)) {
// ADD UI FOR USER TO KNOW THAT UI for SYSTEM_ALERT_WINDOW permission was not granted earlier...
}
}
}
}
注意:以上代码和摘录取自以下要点。
希望这有帮助!!!...
不幸的是,这似乎是Android操作系统固有的,据我所知,没有办法检测到另一个应用程序何时请求权限。与其他应用程序交互的一般流程是以推送方式向它们发送意图,因此理论上,如果其他应用程序向您的应用程序发送意图以禁用覆盖,则可以这样做,尽管这不是一个实用的解决方案。
我可能完全错了,但我还没有看到这个问题的程序化解决方案。你能做的最好的事情就是警告你的用户你的应用可能会导致这个问题,并为他们提供一个快速的临时禁用按钮。
我发现下面的问题屏幕覆盖检测时,在Motog3Marshmallow移动点击权限。 我在到处的互联网搜索中找到了许多解决方案,您可以查看以下内容: > 删除esfile资源管理器 https://www.youtube.com/watch?v=QHidevTDrYI 检测到屏幕覆盖阻止Android权限 https://android.stackexchange.com/questions/148
运行我的android应用程序时出现以下错误: 检测到屏幕覆盖: 要更改此权限设置,您首先必须从设置中关闭屏幕覆盖 我的应用程序没有列在显示的列表中。 如何解决这个错误?
我注意到我的新手机上的Android应用程序有一个奇怪的问题。SDK 23权限弹出窗口(如外部存储)被下面的附加警报阻止。我最初以为这与我的手机有关,但它似乎不影响我安装的任何其他应用程序。 这个问题可能与安装了调试版本有关,还是我的权限处理有问题?我以为它可能与我正在使用的广告平台之一有关,但我尝试禁用它们,它仍然出现 我已经粘贴了下面生成此权限请求的图像保存功能。我正在使用Dexter来节省编
在我的应用程序中,我请求获得在Android SDK 23中访问SMS的权限(运行时权限),但问题是出现了对话框屏幕覆盖,并且未授予访问权限。我禁用了所有其他应用程序覆盖,但没有任何更改。我找到了这个链接,但没有帮助 问题是我如何通过编程修复它?
我的问题类似于Android的“屏幕覆盖检测”消息,如果用户试图在显示通知时授予权限 但下面列出的解决方案都不适用于我,我禁用了所有其他访问overlay的应用程序,但仍然没有对相同错误的积极响应。 我该怎么做才能解决这个问题。 这是我的开发应用程序错误还是android系统误差?或任何其他?
如果用户在显示通知时试图授予权限,我已经阅读了Android“Screen Overlay Detected”(屏幕覆盖检测)消息,我可以用这句话作为开场白,我完全理解覆盖问题是什么。 我还了解如何请求它,以及如何检查我当前正在运行的应用程序是否有权绘制覆盖(! Settings.canDrawOverlays(this))。 我因为我的应用程序而被责骂,因为每次权限请求弹出时,就会显示覆盖弹出窗