我是Android开发者。现在我测试我的“反垃圾邮件来电”应用程序。 如果应用程序检测到有来自垃圾邮件发送者的来电,它会显示警告警报窗口。
要显示此窗口应用程序需要“在其他应用程序上显示”权限。 应用程序在打开时请求许可(如果未授予许可)。
应用程序定期在 Firebase 中发送有关权限状态的分析。
在 firebase 分析中,我发现在具有特定 Android 和 MIUI 版本的特定小米设备上,存在“显示在其他应用程序之上”权限状态的奇怪行为。要获取“显示在其他应用程序之上”权限状态,请使用 Settings.candDrawOverlays() 方法。
“在其他应用程序上显示”每天都会自动禁用和启用,而无需与用户交互(我想)。 对于不同的用户,但对于相同的设备型号和操作系统版本,会发生这种情况。
设备:Redmi Note 8T(MIUI:V12.5.1.0.RCXRUXM)、Mi 9 Lite(MIUI:V12.5.2.0.RFCMIXM)、Redmi Note 8(MIUI:V12.5.2.0.RCOMIXM)、Redmi Note 8 Pro(MIUI:V12.5.3.0.RGGRUXM)、小米 9 SE(MIUI:V12.5.1.0.RFBMIXM)、小米 9T Pro(MIUI:V12.5.2.0.RFKMIXM) 安卓版本:11
问题是:
问题在于授予未知应用程序的默认权限,例如 Facebook、Chrome 等。您需要确保您的代码有一种在后台运行的方式(使用情况统计、可访问性、前台服务等),然后确保手动允许显示弹出窗口。没有任何编程方式可以要求用户启用并将它们发送到“设置”。 如果您重新安装/重新构建应用程序,则可以禁用此类权限。每次我需要测试时,我都需要手动启用这些权限,否则后台服务上的任何运行都将无法工作。如果您的应用程序与互联网或其他设备有任何类型的连接,您还需要设置这些权限,我猜另一端的用户也需要启用权限。非常非常累。