gpt4 book ai didi

java - 在后台运行时显示弹出窗口?

转载 作者:行者123 更新时间:2023-12-02 02:13:56 24 4
gpt4 key购买 nike

我正在尝试从扩展服务的类中打开一个 Activity 。当应用程序不在前台/未使用时,我正在执行此任务。我可以在日志中看到我的服务类触发了带有 Intent.FLAG_ACTIVITY_NEW_TASK 标志的启动 Activity 。但 Activity 不开放。但是,当应用程序处于前台/正在使用时服务触发相同的 Activity 时,该 Activity 将打开。

经过几次搜索,我发现我需要在应用程序设置的其他权限部分手动授予“在后台 android 运行时显示弹出窗口”权限。

在其他应用上显示的权限 SYSTEM_ALERT_WINDOW 仅授予对“显示弹出窗口”的访问权限。

Other permissions

在上图中,SYSTEM_ALERT_WINDOW只会授予您对“显示弹出窗口”的访问权限,如果应用程序位于前台/正在使用,则效果很好,但如果授予标记为红色的权限,您将可以直接打开任何 Activity 来自扩展服务的类。

如何检查或要求用户授予“在后台运行时显示弹出窗口”权限?或者此权限是否受到限制?

我发现 Whatsapp 等应用程序默认选中此选项。

最佳答案

这是开发者在小米设备中常见的问题,

我们目前的解决方案是将用户重定向到其他权限屏幕并让用户手动授予权限:

if ("xiaomi" == Build.MANUFACTURER.toLowerCase(Locale.ROOT)) {
val intent = Intent("miui.intent.action.APP_PERM_EDITOR")
intent.setClassName("com.miui.securitycenter",
"com.miui.permcenter.permissions.PermissionsEditorActivity")
intent.putExtra("extra_pkgname", getPackageName())
startActivity(intent)
}

您可以使用Settings.canDrawOverlays(this)仅测试用户是否指定了显示弹出窗口,这意味着应用程序可以在系统UI上绘制.

另外两个权限无法验证用户是否授予:

  1. 在后台运行时显示弹出窗口:这意味着当应用程序在后台运行时,允许应用程序在系统 UI 上绘制,如 services广播
  2. 在锁定屏幕上显示:即使屏幕锁定,此应用也有权运行,如社交应用(whatsApp、Viber、Messnger ...)

关于java - 在后台运行时显示弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59645936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com