Android N,O 应用覆盖在权限请求被拒绝后保留
Android N, O App Overlay stays after Permission request declined
我有一个应用程序需要访问用户帐户。
当用户拒绝“联系权限”对话框时,奇怪的行为开始了。
像往常一样,对话框出现,后台应用程序得到一个覆盖层来使内容变暗。如果用户现在拒绝许可,对话框会消失,但变暗的覆盖层会保留(它也禁止用户交互)。
覆盖层后面可见的内容会根据拒绝的权限进行相应更改。
错误仅发生在 Android N 和 Android O 的设备上,M 在下降和较低的 api 级别后看起来很完美没有运行时权限,因此他们也在做他们的工作。
一些统计数据:
- minSdk 16
- compileSdk 27
- targetSdk 27
- 构建工具版本 27.0.3
- 支持库 27.1.1
- com.google.android.gms.auth 15.0.1
还有其他权限请求,它们正在正常工作(例如位置)。
只有为 GET_ACCOUNTS(联系人权限组)显示的对话框不处理覆盖权限。
如果有人能给我一些提示,说明可能存在哪些我没有看到的依赖项,那就太好了。
提前非常感谢阅读本文的每个人,对我的问题提出一些想法,即使没有解决方案也分享了类似的故事。每一个提示或输入将不胜感激 :D
更新:
我删除了权限对话框并向用户显示了 accountChooser,但错误行为仍然存在。唯一的区别是,即使在选择一个帐户(并因此授予该帐户的权限)之后,覆盖仍然存在。由于应用程序在后台可见,我可以验证功能和在线数据是否可用。
经过长时间的搜索,它似乎不是权限对话框或帐户选择器的问题,而是底层的 progressDialog,它通过按下按钮激活。
现已弃用的 progressDialog 已启动,背景呈灰色且不活动。现在两个正式怀疑的对话开始了。在他们确认后,他们被正确隐藏了。非活动灰色覆盖层是旧进度对话框的一部分。
我确定错误是由于隐藏被两个系统对话框中断的 progressDialog 时的计时问题造成的。
我的解决方案是废弃旧的 progressDialog 并构建一个替代品(自定义警报对话框),它在单独的线程中显示和取消。自定义对话框现在可以正常隐藏,甚至灰色覆盖层也会正确消失。
谢谢大家,我希望这可以帮助其他人更快地找到他们的解决方案;)
我有一个应用程序需要访问用户帐户。
当用户拒绝“联系权限”对话框时,奇怪的行为开始了。
像往常一样,对话框出现,后台应用程序得到一个覆盖层来使内容变暗。如果用户现在拒绝许可,对话框会消失,但变暗的覆盖层会保留(它也禁止用户交互)。
覆盖层后面可见的内容会根据拒绝的权限进行相应更改。
错误仅发生在 Android N 和 Android O 的设备上,M 在下降和较低的 api 级别后看起来很完美没有运行时权限,因此他们也在做他们的工作。
一些统计数据:
- minSdk 16
- compileSdk 27
- targetSdk 27
- 构建工具版本 27.0.3
- 支持库 27.1.1
- com.google.android.gms.auth 15.0.1
还有其他权限请求,它们正在正常工作(例如位置)。
只有为 GET_ACCOUNTS(联系人权限组)显示的对话框不处理覆盖权限。
如果有人能给我一些提示,说明可能存在哪些我没有看到的依赖项,那就太好了。
提前非常感谢阅读本文的每个人,对我的问题提出一些想法,即使没有解决方案也分享了类似的故事。每一个提示或输入将不胜感激 :D
更新:
我删除了权限对话框并向用户显示了 accountChooser,但错误行为仍然存在。唯一的区别是,即使在选择一个帐户(并因此授予该帐户的权限)之后,覆盖仍然存在。由于应用程序在后台可见,我可以验证功能和在线数据是否可用。
经过长时间的搜索,它似乎不是权限对话框或帐户选择器的问题,而是底层的 progressDialog,它通过按下按钮激活。 现已弃用的 progressDialog 已启动,背景呈灰色且不活动。现在两个正式怀疑的对话开始了。在他们确认后,他们被正确隐藏了。非活动灰色覆盖层是旧进度对话框的一部分。 我确定错误是由于隐藏被两个系统对话框中断的 progressDialog 时的计时问题造成的。
我的解决方案是废弃旧的 progressDialog 并构建一个替代品(自定义警报对话框),它在单独的线程中显示和取消。自定义对话框现在可以正常隐藏,甚至灰色覆盖层也会正确消失。
谢谢大家,我希望这可以帮助其他人更快地找到他们的解决方案;)